Newer
Older
AMI-Aptio-BIOS-Reversed / UncoreInitPeim / UncoreInitPeim_part5.c
@Ajax Dong Ajax Dong 2 days ago 893 KB Init
// UncoreInitPeim - Part: Indices 2001-2560
// Generated from original UncoreInitPeim.c
// Total functions in this part: 28924

#include "UncoreInitPeim.h"

// Index: 2000/2560

int __cdecl IioFunc7003(int a1, unsigned __int8 a2, char a3, char a4, int a5)
{
  char v5; // bl
  int v6; // esi
  int v7; // edi
  unsigned __int8 *v8; // ebp
  char v9; // al
  unsigned __int8 n8; // dl

  v5 = 0; /*0xffcf700e*/
  v6 = 0; /*0xffcf7015*/
  v7 = 0; /*0xffcf7017*/
  v8 = *(unsigned __int8 **)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7019*/
  v9 = IioFunc5F9D(a3, a4); /*0xffcf7024*/
  n8 = 0; /*0xffcf702f*/
  LOBYTE(a1) = v9; /*0xffcf7039*/
  do /*0xffcf707b*/
  {
    if ( n8 >= 4u ) /*0xffcf7044*/
    {
      if ( n8 >= 8u ) /*0xffcf7059*/
      {
        if ( n8 == 8 ) /*0xffcf706f*/
          v5 |= *(_BYTE *)(a5 + 8); /*0xffcf7075*/
      }
      else
      {
        v7 |= *(unsigned __int8 *)(n8 + a5) << (8 * n8 - 32); /*0xffcf706b*/
      }
    }
    else
    {
      v6 |= *(unsigned __int8 *)(n8 + a5) << (8 * n8); /*0xffcf7052*/
    }
    ++n8; /*0xffcf7077*/
  }
  while ( n8 < (unsigned __int8)((v8[257312] != 0) + 8) ); /*0xffcf707b*/
  return IioTailFunc27F9(v8, a2, a1, ~v6, ~v7, (unsigned __int8)~v5); /*0xffcf709d*/
}

// Function: IioFunc70A3 @ 0xffcf70a3 (0x39 bytes)
// Index: 2001/2560

int __cdecl IioFunc70A3(int a1, int a2, int a3, char a4, int a5, int a6, int a7)
{
  int v7; // esi

  v7 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf70b3*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf70be*/
  return IioTailFn_FFD02843(v7, a2, a3, a1, a5, a6, a7); /*0xffcf70d9*/
}

// Function: IioFunc70DC @ 0xffcf70dc (0x33 bytes)
// Index: 2002/2560

int __cdecl IioFunc70DC(int a1, int a2, int a3, char a4, int a5)
{
  int v5; // esi

  v5 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf70ec*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf70f7*/
  return IioTailFn_FFD028C0(v5, a2, a3, a1, a5); /*0xffcf710c*/
}

// Function: IioFunc710F @ 0xffcf710f (0x35 bytes)
// Index: 2003/2560

int __cdecl IioFunc710F(int a1, int a2, int a3, char a4, int a5)
{
  int v5; // esi

  v5 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf711f*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf712a*/
  IioTailFn_FFD02926(v5, a2, a3, a1, a5); /*0xffcf7137*/
  return 0; /*0xffcf7141*/
}

// Function: IioFunc7144 @ 0xffcf7144 (0x3b bytes)
// Index: 2004/2560

int __cdecl IioFunc7144(int a1, int a2, char a3, char a4, int a5, int a6, int a7, int a8)
{
  int v8; // esi

  v8 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7154*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf715f*/
  IioTailFn_FFD0298E(v8, a2, a1, a5, a6, a7, a8); /*0xffcf7172*/
  return 0; /*0xffcf717c*/
}

// Function: IioFunc717F @ 0xffcf717f (0x38 bytes)
// Index: 2005/2560

int __cdecl IioFunc717F(int a1, int a2, char a3, char a4, int a5, int a6, int a7)
{
  int v7; // esi

  v7 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf718f*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf719a*/
  IioTailFn_FFD02AE8(v7, a2, a1, a5, a6, a7); /*0xffcf71aa*/
  return 0; /*0xffcf71b4*/
}

// Function: IioFunc71B7 @ 0xffcf71b7 (0x22 bytes)
// Index: 2006/2560

int __cdecl IioFunc71B7(int a1, int a2, int a3, int a4, int a5)
{
  return IioTailFn_FFD02BB9(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4), a2, a3, a4, a5); /*0xffcf71d7*/
}

// Function: IioFunc71D9 @ 0xffcf71d9 (0x57 bytes)
// Index: 2007/2560

int __cdecl IioFunc71D9(
        int a1,
        int a2,
        int a3,
        char a4,
        int a5,
        int a6,
        int a7,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        int a13,
        int a14,
        int a15,
        int a16,
        int a17)
{
  int v17; // esi

  v17 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf71e9*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf71f4*/
  return IioTailFn_FFD02C72(v17, a2, a3, a1, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); /*0xffcf722d*/
}

// Function: IioFunc7230 @ 0xffcf7230 (0x54 bytes)
// Index: 2008/2560

int __cdecl IioFunc7230(
        int a1,
        int a2,
        int a3,
        char a4,
        int a5,
        int a6,
        int a7,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        int a13,
        int a14,
        int a15,
        int a16)
{
  int v16; // esi

  v16 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7240*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf724b*/
  return IioTailFn_FFD02D77(v16, a2, a3, a1, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); /*0xffcf7281*/
}

// Function: IioFunc7284 @ 0xffcf7284 (0x4b bytes)
// Index: 2009/2560

int __cdecl IioFunc7284(
        int a1,
        int a2,
        int a3,
        char a4,
        int a5,
        int a6,
        int a7,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        int a13)
{
  int v13; // esi

  v13 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7294*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf729f*/
  return IioTailFn_FFD02E51(v13, a2, a3, a1, a5, a6, a7, a8, a9, a10, a11, a12, a13); /*0xffcf72cc*/
}

// Function: IioFunc72CF @ 0xffcf72cf (0x36 bytes)
// Index: 2010/2560

int __cdecl IioFunc72CF(int a1, int a2, int a3, char a4, int a5, int a6)
{
  int v6; // esi

  v6 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf72df*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf72ea*/
  return IioTailFn_FFD02F08(v6, a2, a3, a1, a5, a6); /*0xffcf7302*/
}

// Function: IioFunc7305 @ 0xffcf7305 (0x64 bytes)
// Index: 2011/2560

int __cdecl IioFunc7305(int a1, int a2, int a3, char a4, int a5, int a6)
{
  int v6; // edi
  unsigned __int8 v7; // al
  unsigned __int8 v8; // cl
  unsigned __int8 v9; // bl
  char v10; // ch
  int result; // eax

  v6 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7317*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf7326*/
  v7 = 0; /*0xffcf7329*/
  while ( 1 ) /*0xffcf732e*/
  {
    v8 = v7 + 1; /*0xffcf732e*/
    v9 = v7 + 1; /*0xffcf7330*/
    if ( (unsigned __int8)(v7 + 1) <= (unsigned __int8)a5 ) /*0xffcf7334*/
      break; /*0xffcf7334*/
LABEL_6:
    v7 = v8; /*0xffcf734a*/
    if ( v8 > (unsigned __int8)a5 ) /*0xffcf734e*/
      return IioTailFn_FFD031E7(v6, a2, a3, a1, a5, a6); /*0xffcf735c*/
  }
  v10 = *(_BYTE *)(v7 + a6); /*0xffcf7339*/
  while ( 1 ) /*0xffcf733c*/
  {
    result = v9; /*0xffcf733c*/
    if ( v10 == *(_BYTE *)(v9 + a6) ) /*0xffcf7342*/
      return result; /*0xffcf7364*/
    if ( ++v9 > (unsigned __int8)a5 ) /*0xffcf7348*/
      goto LABEL_6; /*0xffcf7348*/
  }
}

// Function: IioFunc7369 @ 0xffcf7369 (0x3c bytes)
// Index: 2012/2560

int __cdecl IioFunc7369(int a1, int a2, int a3, char a4, int a5, int a6, int a7, int a8)
{
  int v8; // esi

  v8 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7379*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf7384*/
  return IioTailFn_FFD03489(v8, a2, a3, a1, a5, a6, a7, a8); /*0xffcf73a2*/
}

// Function: IioFunc73A5 @ 0xffcf73a5 (0x3c bytes)
// Index: 2013/2560

int __cdecl IioFunc73A5(int a1, int a2, int a3, char a4, int a5, int a6, int a7, int a8)
{
  int v8; // esi

  v8 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf73b5*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf73c0*/
  return IioTailFn_FFD0350E(v8, a2, a3, a1, a5, a6, a7, a8); /*0xffcf73de*/
}

// Function: IioFunc73E1 @ 0xffcf73e1 (0x33 bytes)
// Index: 2014/2560

int __cdecl IioFunc73E1(int a1, int a2, char a3, char a4, int a5, int a6)
{
  int v6; // esi

  v6 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf73f1*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf73fc*/
  return IioTailFn_FFD03593(v6, a2, a1, a5, a6); /*0xffcf7411*/
}

// Function: IioFunc7414 @ 0xffcf7414 (0x4b bytes)
// Index: 2015/2560

int __cdecl IioFunc7414(
        int a1,
        int a2,
        int a3,
        char a4,
        int a5,
        int a6,
        int a7,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        int a13)
{
  int v13; // esi

  v13 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7424*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf742f*/
  return IioTailFn_FFD035D9(v13, a2, a3, a1, a5, a6, a7, a8, a9, a10, a11, a12, a13); /*0xffcf745c*/
}

// Function: IioFunc745F @ 0xffcf745f (0x4b bytes)
// Index: 2016/2560

int __cdecl IioFunc745F(
        int a1,
        int a2,
        int a3,
        char a4,
        int a5,
        int a6,
        int a7,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        int a13)
{
  int v13; // esi

  v13 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf746f*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf747a*/
  return IioTailFn_FFD036B0(v13, a2, a3, a1, a5, a6, a7, a8, a9, a10, a11, a12, a13); /*0xffcf74a7*/
}

// Function: IioFunc74AA @ 0xffcf74aa (0x35 bytes)
// Index: 2017/2560

int __cdecl IioFunc74AA(int a1, int a2, int a3, char a4, int a5)
{
  int v5; // esi

  v5 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf74ba*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf74c5*/
  IioTailFn_FFD03771(v5, a2, a3, a1, a5); /*0xffcf74d2*/
  return 0; /*0xffcf74dc*/
}

// Function: IioFunc74DF @ 0xffcf74df (0x38 bytes)
// Index: 2018/2560

int __cdecl IioFunc74DF(int a1, int a2, char a3, char a4, int a5, int a6, int a7)
{
  int v7; // esi

  v7 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf74ef*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf74fa*/
  IioTailFn_FFD037B1(v7, a2, a1, a5, a6, a7); /*0xffcf750a*/
  return 0; /*0xffcf7514*/
}

// Function: IioFunc7517 @ 0xffcf7517 (0x85 bytes)
// Index: 2019/2560

char __cdecl IioFunc7517(
        int a1,
        unsigned __int8 a2,
        unsigned __int8 a3,
        unsigned __int8 n2,
        unsigned __int8 n4,
        _BYTE *a6)
{
  int v6; // eax
  int v7; // edx
  int v8; // edx

  v6 = 7688 * a3; /*0xffcf752f*/
  v7 = v6 + 48704 * a2; /*0xffcf7535*/
  if ( *(_BYTE *)(v7 + a1 + 258722) ) /*0xffcf7537*/
  {
    v6 = 1379 * n2; /*0xffcf7547*/
    v8 = v6 + v7; /*0xffcf754d*/
    if ( *(_BYTE *)(v8 + a1 + 259118) ) /*0xffcf754f*/
    {
      v6 = v8 + 242 * n4; /*0xffcf7567*/
      if ( *(_BYTE *)(v6 + a1 + 259342) ) /*0xffcf7569*/
      {
        LOBYTE(v6) = n4 + v8; /*0xffcf7573*/
        if ( !*(_BYTE *)(n4 + v8 + a1 + 259133) ) /*0xffcf7576*/
        {
          LOBYTE(v6) = KtiFunc88D1(a1, a2, a3, n2, n4); /*0xffcf758b*/
          *a6 = v6; /*0xffcf7596*/
        }
      }
    }
  }
  return v6; /*0xffcf759a*/
}

// Function: IioFunc759C @ 0xffcf759c (0x16 bytes)
// Index: 2020/2560

_DWORD *__cdecl IioFunc759C(int a1, _DWORD *i)
{
  return KtiFuncD4D(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4), i); /*0xffcf75b1*/
}

// Function: IioFunc75B2 @ 0xffcf75b2 (0x4 bytes)
// Index: 2021/2560

int IioFunc75B2()
{
  return 3; /*0xffcf75b5*/
}

// Function: IioFunc75B6 @ 0xffcf75b6 (0x44 bytes)
// Index: 2022/2560

int __cdecl IioFunc75B6(int a1, int *a2)
{
  int v2; // eax
  int v3; // esi
  int result; // eax
  __int64 v5; // [esp+Ch] [ebp-8h] BYREF

  v2 = *(_DWORD *)(a1 + 12); /*0xffcf75c2*/
  v5 = 0; /*0xffcf75c5*/
  v3 = *(_DWORD *)(v2 + 4); /*0xffcf75cb*/
  KtiFuncF4E(&v5); /*0xffcf75d2*/
  result = KtiFuncF75(v3, 0, 0, v5, SHIDWORD(v5), 0x3E8u); /*0xffcf75e7*/
  *a2 = result; /*0xffcf75f3*/
  return result; /*0xffcf75f2*/
}

// Function: IioFunc75FA @ 0xffcf75fa (0x2a bytes)
// Index: 2023/2560

int __cdecl IioFunc75FA(int a1, unsigned int a2)
{
  int v2; // eax

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7606*/
  if ( a2 && *(_DWORD *)(v2 + 246788) ) /*0xffcf760b*/
    return KtiFuncDBA(v2, a2); /*0xffcf7619*/
  else
    return 0; /*0xffcf7621*/
}

// Function: IioFunc7624 @ 0xffcf7624 (0x4c bytes)
// Index: 2024/2560

char __cdecl IioFunc7624(int a1, int n2, unsigned __int16 n0xCFC, _WORD *a4)
{
  unsigned __int32 v4; // eax

  if ( n2 ) /*0xffcf762d*/
  {
    if ( n2 == 1 ) /*0xffcf7632*/
    {
      LOWORD(v4) = AutoGenFunc80F(n0xCFC); /*0xffcf7650*/
      *a4 = v4; /*0xffcf7659*/
    }
    else
    {
      LOBYTE(v4) = n2 - 2; /*0xffcf7634*/
      if ( n2 == 2 ) /*0xffcf7637*/
      {
        v4 = AutoGenFunc875(n0xCFC); /*0xffcf763e*/
        *(_DWORD *)a4 = v4; /*0xffcf7647*/
      }
    }
  }
  else
  {
    LOBYTE(v4) = AutoGenFunc7FD(n0xCFC); /*0xffcf7663*/
    *(_BYTE *)a4 = v4; /*0xffcf766c*/
  }
  return v4; /*0xffcf7649*/
}

// Function: IioFunc7670 @ 0xffcf7670 (0x5e bytes)
// Index: 2025/2560

char __cdecl IioFunc7670(int a1, int n3, unsigned __int16 *a3, int a4, _WORD *a5)
{
  __int64 v5; // rax

  if ( n3 ) /*0xffcf7679*/
  {
    if ( n3 == 1 ) /*0xffcf767e*/
    {
      LOWORD(v5) = AutoGenFunc8E7(a3); /*0xffcf76b0*/
      *a5 = v5; /*0xffcf76b9*/
    }
    else if ( n3 == 2 ) /*0xffcf7683*/
    {
      LODWORD(v5) = AutoGenFunc94D((int)a3); /*0xffcf76a0*/
      *(_DWORD *)a5 = v5; /*0xffcf76a9*/
    }
    else
    {
      LOBYTE(v5) = n3 - 3; /*0xffcf7685*/
      if ( n3 == 3 ) /*0xffcf7688*/
      {
        v5 = AutoGenFunc95F((int)a3); /*0xffcf768d*/
        *(_QWORD *)a5 = v5; /*0xffcf7696*/
      }
    }
  }
  else
  {
    LOBYTE(v5) = AutoGenFunc8D5((int)a3); /*0xffcf76c1*/
    *(_BYTE *)a5 = v5; /*0xffcf76ca*/
  }
  return v5; /*0xffcf769b*/
}

// Function: IioFunc76CE @ 0xffcf76ce (0x7a bytes)
// Index: 2026/2560

_WORD *__cdecl IioFunc76CE(int a1, int n2, _BYTE *a3, _WORD *a4)
{
  _WORD *result; // eax

  AutoGenFunc8A3( /*0xffcf770b*/
    0xCF8u,
    *a3 & 0xFC | ((unsigned __int8)a3[3] << 16) | ((a3[1] & 7 | (8 * (a3[2] & 0x1F | 0xFFF00000))) << 8));
  result = (_WORD *)AutoGenFunc875(0xCFCu); /*0xffcf7715*/
  if ( n2 ) /*0xffcf7726*/
  {
    if ( n2 == 1 ) /*0xffcf772b*/
    {
      *a4 = (_WORD)result; /*0xffcf773c*/
      return a4; /*0xffcf7739*/
    }
    else if ( n2 == 2 ) /*0xffcf7730*/
    {
      *(_DWORD *)a4 = result; /*0xffcf7735*/
      return a4; /*0xffcf7732*/
    }
  }
  else
  {
    *(_BYTE *)a4 = (_BYTE)result; /*0xffcf7744*/
    return a4; /*0xffcf7741*/
  }
  return result; /*0xffcf7722*/
}

// Function: IioFunc7748 @ 0xffcf7748 (0x23 bytes)
// Index: 2027/2560

int IioFunc7748(int a1, int a2, _BYTE *a3, ...)
{
  int result; // eax
  va_list va; // [esp+10h] [ebp+10h] BYREF

  va_start(va, a3);
  if ( a3 ) /*0xffcf774d*/
    return LogFormatString(*(_BYTE **)(*(_DWORD *)(a1 + 12) + 4), a3, (char *)va); /*0xffcf7762*/
  return result; /*0xffcf776a*/
}

// Function: IioFunc776B @ 0xffcf776b (0x16 bytes)
// Index: 2028/2560

unsigned __int8 __cdecl IioFunc776B(int a1, unsigned int i)
{
  return KtiFunc8C4(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4), i); /*0xffcf7780*/
}

// Function: IioFunc7781 @ 0xffcf7781 (0x4e bytes)
// Index: 2029/2560

unsigned __int8 __cdecl IioFunc7781(int a1, int n2, unsigned __int16 n0xCF8, unsigned __int8 *a4)
{
  unsigned __int8 result; // al

  if ( !n2 ) /*0xffcf778a*/
    return AutoGenFunc804(n0xCF8, *a4); /*0xffcf77c6*/
  if ( n2 == 1 ) /*0xffcf778f*/
    return AutoGenFunc841(n0xCF8, *(_WORD *)a4); /*0xffcf77b3*/
  result = n2 - 2; /*0xffcf7791*/
  if ( n2 == 2 ) /*0xffcf7794*/
    return AutoGenFunc8A3(n0xCF8, *(_DWORD *)a4); /*0xffcf77a0*/
  return result; /*0xffcf77cd*/
}

// Function: IioFunc77CF @ 0xffcf77cf (0x62 bytes)
// Index: 2030/2560

char __cdecl IioFunc77CF(int a1, int n3, _BYTE *a3, int a4, int a5)
{
  char result; // al

  switch ( n3 ) /*0xffcf77d8*/
  {
    case 0: /*0xffcf77d8*/
      return AutoGenFunc8DC(a3, *(_BYTE *)a5); /*0xffcf7828*/
    case 1: /*0xffcf77d8*/
      return AutoGenFunc919(a3, *(_WORD *)a5); /*0xffcf7817*/
    case 2: /*0xffcf77d8*/
      return AutoGenFunc954(a3, *(_DWORD *)a5); /*0xffcf7806*/
  }
  result = n3 - 3; /*0xffcf77e4*/
  if ( n3 == 3 ) /*0xffcf77e7*/
    return AutoGenFunc990(a3, *(_DWORD *)a5, *(_DWORD *)(a5 + 4)); /*0xffcf77f4*/
  return result; /*0xffcf77fc*/
}

// Function: IioFunc7831 @ 0xffcf7831 (0xd1 bytes)
// Index: 2031/2560

unsigned __int32 __cdecl IioFunc7831(int a1, int a2, unsigned int a3, unsigned int *a4)
{
  _BYTE *v4; // edx
  unsigned int v5; // esi
  unsigned int v6; // edi
  unsigned int v7; // edi
  int v8; // eax

  v4 = (_BYTE *)a3; /*0xffcf7831*/
  a3 = 0; /*0xffcf7835*/
  v5 = *v4 & 0xFC | ((unsigned __int8)v4[3] << 16) | ((v4[1] & 7 | (8 * (v4[2] & 0x1F | 0xFFF00000))) << 8); /*0xffcf7877*/
  switch ( a2 ) /*0xffcf787d*/
  {
    case 0: /*0xffcf787d*/
      IioFunc76CE(a1, 2, v4, &a3); /*0xffcf78c1*/
      v7 = a3 & 0xFFFFFF00; /*0xffcf78ce*/
      v8 = *(unsigned __int8 *)a4; /*0xffcf78d4*/
      goto LABEL_7; /*0xffcf78d4*/
    case 1: /*0xffcf787d*/
      IioFunc76CE(a1, 2, v4, &a3); /*0xffcf789d*/
      v7 = a3 & 0xFFFF0000; /*0xffcf78aa*/
      v8 = *(unsigned __int16 *)a4; /*0xffcf78b0*/
LABEL_7:
      v6 = v8 | v7; /*0xffcf78d7*/
      goto LABEL_8; /*0xffcf78da*/
    case 2: /*0xffcf787d*/
      v6 = *a4; /*0xffcf788d*/
LABEL_8:
      AutoGenFunc8A3(0xCF8u, v5); /*0xffcf78dc*/
      AutoGenFunc8A3(0xCFCu, v6); /*0xffcf78e5*/
      break;
  }
  AutoGenFunc8A3(0xCF8u, v5); /*0xffcf78ed*/
  return AutoGenFunc875(0xCFCu); /*0xffcf78fe*/
}

// Function: IioFunc7902 @ 0xffcf7902 (0xad bytes)
// Index: 2032/2560

int __cdecl IioFunc7902(int a1, int a2, int a3, int a4)
{
  int n4; // edi
  int v6; // ecx
  unsigned int n0xF000; // ecx
  int v8; // eax
  int v9; // ecx
  unsigned int n0xF000_1; // [esp+14h] [ebp+8h]

  n4 = 4; /*0xffcf790f*/
  if ( a2 || a3 || a4 ) /*0xffcf791d*/
  {
    v6 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf792b*/
    if ( v6 ) /*0xffcf7930*/
      (*(void (__cdecl **)(int, int))(*(_DWORD *)(a1 + 4) + 44))(a1, v6); /*0xffcf7937*/
    n4 = 0; /*0xffcf7946*/
    n0xF000 = a4 * a3 + a2 + 61; /*0xffcf7948*/
    n0xF000_1 = n0xF000; /*0xffcf794a*/
    if ( n0xF000 <= 0xF000 ) /*0xffcf7954*/
    {
      *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4) = (*(int (__cdecl **)(int, int))(*(_DWORD *)(a1 + 4) + 40))( /*0xffcf796b*/
                                               a1,
                                               a4 * a3 + a2 + 61);
      n0xF000 = n0xF000_1; /*0xffcf796e*/
    }
    else
    {
      *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4) = 0; /*0xffcf7959*/
    }
    v8 = *(_DWORD *)(a1 + 8); /*0xffcf7972*/
    if ( *(_DWORD *)(v8 + 4) ) /*0xffcf7975*/
    {
      AutoGenFunc193(*(_DWORD *)(v8 + 4), n0xF000); /*0xffcf797e*/
      v9 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7988*/
      *(_DWORD *)(v9 + 9) = a2; /*0xffcf798e*/
      *(_DWORD *)(v9 + 5) = v9 + 61; /*0xffcf7991*/
      *(_DWORD *)(v9 + 29) = a2 + v9 + 61; /*0xffcf7996*/
      *(_DWORD *)(v9 + 49) = a3; /*0xffcf799d*/
      *(_DWORD *)(v9 + 53) = a4; /*0xffcf79a0*/
    }
    else
    {
      return 3; /*0xffcf79a7*/
    }
  }
  return n4; /*0xffcf79ab*/
}

// Function: IioFunc79AF @ 0xffcf79af (0x1e bytes)
// Index: 2033/2560

int __cdecl IioFunc79AF(int a1, _BYTE *a2)
{
  int v2; // eax

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf79b6*/
  if ( !v2 ) /*0xffcf79bb*/
    return 3; /*0xffcf79cb*/
  *a2 = *(_BYTE *)(v2 + 4); /*0xffcf79c4*/
  return 0; /*0xffcf79c8*/
}

// Function: IioFunc79CD @ 0xffcf79cd (0x1e bytes)
// Index: 2034/2560

int __cdecl IioFunc79CD(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf79d4*/
  if ( !v2 ) /*0xffcf79d9*/
    return 3; /*0xffcf79e9*/
  *a2 = *(_DWORD *)(v2 + 5); /*0xffcf79e2*/
  return 0; /*0xffcf79e6*/
}

// Function: IioFunc79EB @ 0xffcf79eb (0x1e bytes)
// Index: 2035/2560

int __cdecl IioFunc79EB(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf79f2*/
  if ( !v2 ) /*0xffcf79f7*/
    return 3; /*0xffcf7a07*/
  *a2 = v2 + 9; /*0xffcf7a00*/
  return 0; /*0xffcf7a04*/
}

// Function: IioFunc7A09 @ 0xffcf7a09 (0x1e bytes)
// Index: 2036/2560

int __cdecl IioFunc7A09(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7a10*/
  if ( !v2 ) /*0xffcf7a15*/
    return 3; /*0xffcf7a25*/
  *a2 = v2 + 13; /*0xffcf7a1e*/
  return 0; /*0xffcf7a22*/
}

// Function: IioFunc7A27 @ 0xffcf7a27 (0x2f bytes)
// Index: 2037/2560

int __cdecl IioFunc7A27(int a1, _DWORD *a2)
{
  int v2; // edx
  int v3; // eax

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7a2e*/
  if ( !v2 ) /*0xffcf7a33*/
    return 3; /*0xffcf7a33*/
  v3 = *(_DWORD *)(v2 + 57); /*0xffcf7a35*/
  if ( v3 >= *(_DWORD *)(v2 + 53) ) /*0xffcf7a3b*/
    return 3; /*0xffcf7a54*/
  *a2 = *(_DWORD *)(v2 + 29) + v3 * *(_DWORD *)(v2 + 49); /*0xffcf7a4a*/
  ++*(_DWORD *)(v2 + 57); /*0xffcf7a4c*/
  return 0; /*0xffcf7a51*/
}

// Function: IioFunc7A56 @ 0xffcf7a56 (0x1e bytes)
// Index: 2038/2560

int __cdecl IioFunc7A56(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7a5d*/
  if ( !v2 ) /*0xffcf7a62*/
    return 3; /*0xffcf7a72*/
  *a2 = v2 + 53; /*0xffcf7a6b*/
  return 0; /*0xffcf7a6f*/
}

// Function: IioFunc7A74 @ 0xffcf7a74 (0x1e bytes)
// Index: 2039/2560

int __cdecl IioFunc7A74(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7a7b*/
  if ( !v2 ) /*0xffcf7a80*/
    return 3; /*0xffcf7a90*/
  *a2 = v2 + 57; /*0xffcf7a89*/
  return 0; /*0xffcf7a8d*/
}

// Function: IioFunc7A92 @ 0xffcf7a92 (0x1e bytes)
// Index: 2040/2560

int __cdecl IioFunc7A92(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7a99*/
  if ( !v2 ) /*0xffcf7a9e*/
    return 3; /*0xffcf7aae*/
  *a2 = v2 + 49; /*0xffcf7aa7*/
  return 0; /*0xffcf7aab*/
}

// Function: IioFunc7AB0 @ 0xffcf7ab0 (0x1e bytes)
// Index: 2041/2560

int __cdecl IioFunc7AB0(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7ab7*/
  if ( !v2 ) /*0xffcf7abc*/
    return 3; /*0xffcf7acc*/
  *a2 = v2 + 33; /*0xffcf7ac5*/
  return 0; /*0xffcf7ac9*/
}

// Function: IioFunc7ACE @ 0xffcf7ace (0x1b bytes)
// Index: 2042/2560

int __cdecl IioFunc7ACE(int a1, _DWORD *a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7ad5*/
  if ( !v2 ) /*0xffcf7ada*/
    return 3; /*0xffcf7ae7*/
  *a2 = v2; /*0xffcf7ae0*/
  return 0; /*0xffcf7ae4*/
}

// Function: IioFunc7AE9 @ 0xffcf7ae9 (0x1f bytes)
// Index: 2043/2560

int __cdecl IioFunc7AE9(int a1)
{
  int v1; // eax

  v1 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7af0*/
  if ( !v1 || !*(_BYTE *)(v1 + 4) ) /*0xffcf7af7*/
    return 3; /*0xffcf7b06*/
  *(_DWORD *)(v1 + 57) = 0; /*0xffcf7afd*/
  return 0; /*0xffcf7b03*/
}

// Function: IioFunc7B08 @ 0xffcf7b08 (0x20 bytes)
// Index: 2044/2560

int __cdecl IioFunc7B08(int a1, char a2)
{
  int v2; // ecx

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7b0f*/
  if ( !v2 ) /*0xffcf7b14*/
    return 3; /*0xffcf7b26*/
  *(_BYTE *)(v2 + 4) = a2 != 0; /*0xffcf7b1e*/
  return 0; /*0xffcf7b23*/
}

// Function: IioFunc7B28 @ 0xffcf7b28 (0x24 bytes)
// Index: 2045/2560

int __cdecl IioFunc7B28(int a1, int a2)
{
  int v2; // eax

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7b2f*/
  if ( v2 ) /*0xffcf7b34*/
    return IioFunc7B8B(a1, a2, v2 + 13); /*0xffcf7b3f*/
  else
    return 3; /*0xffcf7b4a*/
}

// Function: IioFunc7B4C @ 0xffcf7b4c (0x24 bytes)
// Index: 2046/2560

int __cdecl IioFunc7B4C(int a1, int a2)
{
  int v2; // eax

  v2 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7b53*/
  if ( v2 ) /*0xffcf7b58*/
    return IioFunc7B8B(a1, a2, v2 + 33); /*0xffcf7b63*/
  else
    return 3; /*0xffcf7b6e*/
}

// Function: IioFunc7B70 @ 0xffcf7b70 (0x1b bytes)
// Index: 2047/2560

int __cdecl IioFunc7B70(int a1, int a2)
{
  _DWORD *v2; // ecx

  v2 = *(_DWORD **)(*(_DWORD *)(a1 + 8) + 4); /*0xffcf7b77*/
  if ( !v2 ) /*0xffcf7b7c*/
    return 3; /*0xffcf7b89*/
  *v2 = a2; /*0xffcf7b82*/
  return 0; /*0xffcf7b86*/
}

// Function: IioFunc7B8B @ 0xffcf7b8b (0x41 bytes)
// Index: 2048/2560

int __cdecl IioFunc7B8B(int a1, char *src, char *dst)
{
  int n4; // esi
  char v4; // cl
  char *src_1; // edx
  int n16; // edi

  n4 = 4; /*0xffcf7b93*/
  if ( dst ) /*0xffcf7b94*/
  {
    if ( src ) /*0xffcf7b9c*/
    {
      v4 = 0; /*0xffcf7ba1*/
      src_1 = src; /*0xffcf7ba3*/
      n16 = 16; /*0xffcf7ba5*/
      do /*0xffcf7bac*/
      {
        v4 |= *src_1++; /*0xffcf7ba6*/
        --n16; /*0xffcf7ba9*/
      }
      while ( n16 ); /*0xffcf7bac*/
      if ( v4 ) /*0xffcf7bb1*/
        n4 = 0; /*0xffcf7bb3*/
    }
    if ( !n4 ) /*0xffcf7bb7*/
      AutoGenFunc1F0(dst, src, 0x10u); /*0xffcf7bc0*/
  }
  return n4; /*0xffcf7bca*/
}

// Function: IioFunc7BCC @ 0xffcf7bcc (0x16 bytes)
// Index: 2049/2560

int IioFunc7BCC()
{
  return ProcCommonFunc655(); /*0xffcf7be1*/
}

// Function: IioFunc7BE2 @ 0xffcf7be2 (0x16 bytes)
// Index: 2050/2560

int __cdecl IioFunc7BE2(int a1, int a2)
{
  return ProcCommonFunc186E(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4), a2); /*0xffcf7bf7*/
}

// Function: IioFunc7BF8 @ 0xffcf7bf8 (0x30 bytes)
// Index: 2051/2560

int __cdecl IioFunc7BF8(int a1, int a2, char a3, char a4, int a5)
{
  int v5; // esi

  v5 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7c08*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf7c13*/
  return IioTailFn_FFD03882(v5, a2, a1, a5); /*0xffcf7c25*/
}

// Function: IioFunc7C28 @ 0xffcf7c28 (0x3e bytes)
// Index: 2052/2560

int __cdecl IioFunc7C28(int n6, int n4, char a3, char a4, int n2)
{
  unsigned __int8 *__return_address; // esi

  __return_address = *(unsigned __int8 **)(*(_DWORD *)(n6 + 12) + 4); /*0xffcf7c38*/
  LOBYTE(n6) = IioFunc5F9D(a3, a4); /*0xffcf7c41*/
  ProcCommonFuncFBF1((int)__return_address); /*0xffcf7c44*/
  ProcCommonFunc2BF5(__return_address, n4, n6, n2, 0); /*0xffcf7c55*/
  return ProcCommonFuncFBFD((int)__return_address); /*0xffcf7c63*/
}

// Function: IioFunc7C66 @ 0xffcf7c66 (0x2d bytes)
// Index: 2053/2560

int __cdecl IioFunc7C66(int n6, unsigned __int8 n4, char a3, char a4)
{
  unsigned __int8 *__return_address; // esi

  __return_address = *(unsigned __int8 **)(*(_DWORD *)(n6 + 12) + 4); /*0xffcf7c76*/
  LOBYTE(n6) = IioFunc5F9D(a3, a4); /*0xffcf7c7e*/
  return ProcCommonFunc624(__return_address, n4, n6); /*0xffcf7c90*/
}

// Function: IioFunc7C93 @ 0xffcf7c93 (0x22 bytes)
// Index: 2054/2560

int __cdecl IioFunc7C93(int a1, int a2, int a3, int a4, int a5)
{
  return IioTailFn_FFD038F2(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4), a2, a3, a4, a5); /*0xffcf7cb3*/
}

// Function: IioFunc7CB5 @ 0xffcf7cb5 (0x33 bytes)
// Index: 2055/2560

int __cdecl IioFunc7CB5(int a1, int a2, char a3, char a4, int a5, int a6)
{
  int v6; // esi

  v6 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7cc5*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf7cd0*/
  return IioTailFn_FFD039AD(v6, a2, a1, a5, a6); /*0xffcf7ce5*/
}

// Function: IioFunc7CE8 @ 0xffcf7ce8 (0x75 bytes)
// Index: 2056/2560

int __cdecl IioFunc7CE8(int a1, int n4, int a3)
{
  unsigned __int8 *__return_address; // esi
  unsigned __int8 n12; // [esp+4h] [ebp-4h]

  n12 = 1; /*0xffcf7cf0*/
  __return_address = *(unsigned __int8 **)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7cf7*/
  switch ( a3 ) /*0xffcf7d02*/
  {
    case 0: /*0xffcf7d02*/
      n12 = 1; /*0xffcf7d39*/
      break; /*0xffcf7d39*/
    case 1: /*0xffcf7d02*/
      n12 = 0; /*0xffcf7d09*/
      break; /*0xffcf7d0d*/
    case 2: /*0xffcf7d02*/
      n12 = 12; /*0xffcf7d0f*/
      break; /*0xffcf7d13*/
    case 3: /*0xffcf7d02*/
      n12 = 5; /*0xffcf7d27*/
      break; /*0xffcf7d2b*/
    case 4: /*0xffcf7d02*/
      n12 = 38; /*0xffcf7d15*/
      break; /*0xffcf7d19*/
    case 5: /*0xffcf7d02*/
      n12 = 39; /*0xffcf7d1b*/
      break; /*0xffcf7d1f*/
    case 6: /*0xffcf7d02*/
      n12 = 36; /*0xffcf7d21*/
      break; /*0xffcf7d25*/
    case 7: /*0xffcf7d02*/
      n12 = 20; /*0xffcf7d2d*/
      break; /*0xffcf7d31*/
    case 8: /*0xffcf7d02*/
      n12 = 2; /*0xffcf7d33*/
      break; /*0xffcf7d37*/
    default:
      break;
  }
  ProcCommonFuncFBF1((int)__return_address); /*0xffcf7d3d*/
  ProcCommonFunc3943(__return_address, n4, n12); /*0xffcf7d4a*/
  return ProcCommonFuncFBFD((int)__return_address); /*0xffcf7d58*/
}

// Function: IioFunc7D84 @ 0xffcf7d84 (0x22 bytes)
// Index: 2057/2560

int __cdecl IioFunc7D84(int a1, int a2, int a3, int a4, int a5)
{
  return IioTailFn_FFD039DB(*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4), a2, a3, a4, a5); /*0xffcf7da4*/
}

// Function: IioFunc7DA6 @ 0xffcf7da6 (0x3c bytes)
// Index: 2058/2560

int __cdecl IioFunc7DA6(int a1, int a2, char a3, char a4, int a5, int a6, int a7, int a8, int a9)
{
  int v9; // esi

  v9 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7db6*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf7dc1*/
  return IioTailFn_FFD03AA1(v9, a2, a1, a5, a6, a7, a8, a9); /*0xffcf7ddf*/
}

// Function: IioFunc7DE2 @ 0xffcf7de2 (0x30 bytes)
// Index: 2059/2560

int __cdecl IioFunc7DE2(int a1, int a2, char a3, char a4, int a5)
{
  int v5; // esi

  v5 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7df2*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf7dfd*/
  return IioTailFn_FFD03B8A(v5, a2, a1, a5); /*0xffcf7e0f*/
}

// Function: IioFunc7E12 @ 0xffcf7e12 (0x36 bytes)
// Index: 2060/2560

int __cdecl IioFunc7E12(int a1, int a2, char a3, char a4, char a5)
{
  int v5; // esi

  v5 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4); /*0xffcf7e22*/
  LOBYTE(a1) = IioFunc5F9D(a3, a4); /*0xffcf7e2a*/
  return IioTailFn_FFD03C11(v5, a2, a1, (unsigned __int8)~a5); /*0xffcf7e45*/
}

// Function: IioFunc7E48 @ 0xffcf7e48 (0x67 bytes)
// Index: 2061/2560

int __cdecl IioFunc7E48(int a1, int n2, unsigned __int64 n0x12, _BYTE *a4, int *a5)
{
  int result; // eax

  result = *a5 ^ 0x22BF8; /*0xffcf7e59*/
  if ( n0x12 <= 0x12 ) /*0xffcf7e6e*/
  {
    switch ( (_DWORD)n0x12 ) /*0xffcf7e73*/
    {
      case 0xE: /*0xffcf7e73*/
        result &= 0x3FFFu; /*0xffcf7ea3*/
        break;
      case 0xF: /*0xffcf7e73*/
        result &= 0x7FFFu; /*0xffcf7e9c*/
        break;
      case 0x10: /*0xffcf7e73*/
        result = (unsigned __int16)result; /*0xffcf7e97*/
        break;
      case 0x11: /*0xffcf7e73*/
        result &= 0x1FFFFu; /*0xffcf7e90*/
        break;
      case 0x12: /*0xffcf7e73*/
        result &= 0x3FFFFu; /*0xffcf7e89*/
        break;
    }
  }
  *a4 ^= 0xFu; /*0xffcf7ea8*/
  *a5 = result; /*0xffcf7eaa*/
  return result; /*0xffcf7eac*/
}

// Function: IioFunc7EAF @ 0xffcf7eaf (0xbb bytes)
// Index: 2062/2560

char __cdecl IioFunc7EAF(unsigned __int8 *__return_address, int a2, unsigned __int8 n2, int a4, int n3, char n3a)
{
  unsigned __int8 n6; // bl
  char n3a_1; // al
  int n3b_1; // ebx
  int v9; // eax
  int v10; // eax
  int v11; // [esp+10h] [ebp-4h]
  char n3b; // [esp+2Ch] [ebp+18h]
  char n3c; // [esp+2Ch] [ebp+18h]

  n6 = 0; /*0xffcf7eb6*/
  LOBYTE(v11) = 0; /*0xffcf7ec2*/
  do /*0xffcf7ee7*/
  {
    MiscIoCheck(__return_address, n2, v11, 0xB004548u, -65535); /*0xffcf7ed6*/
    LOBYTE(v11) = ++n6; /*0xffcf7ee0*/
  }
  while ( n6 < 6u ); /*0xffcf7ee7*/
  n3a_1 = n3a; /*0xffcf7ee9*/
  n3b_1 = 0; /*0xffcf7eef*/
  if ( n3a == 2 ) /*0xffcf7ef2*/
  {
    n3b = 0; /*0xffcf7ef4*/
    do /*0xffcf7f25*/
    {
      v9 = MailBoxFunc8E0B(n3b_1, (int)__return_address, n2, n3b, 117459068); /*0xffcf7f04*/
      n3a_1 = MailBoxFunc8FC5((int)__return_address, n2, n3b, 117459068, v9 | 1); /*0xffcf7f14*/
      LOBYTE(n3b_1) = n3b_1 + 1; /*0xffcf7f1c*/
      n3b = n3b_1; /*0xffcf7f1e*/
    }
    while ( (unsigned __int8)n3b_1 < 2u ); /*0xffcf7f25*/
  }
  else if ( n3a == 3 || n3a == 1 ) /*0xffcf7f2f*/
  {
    n3c = 0; /*0xffcf7f31*/
    do /*0xffcf7f62*/
    {
      v10 = MailBoxFunc8E0B(n3b_1, (int)__return_address, n2, n3c, 117459068); /*0xffcf7f41*/
      n3a_1 = MailBoxFunc8FC5((int)__return_address, n2, n3c, 117459068, v10 & 0xFFFFFFFE); /*0xffcf7f51*/
      LOBYTE(n3b_1) = n3b_1 + 1; /*0xffcf7f59*/
      n3c = n3b_1; /*0xffcf7f5b*/
    }
    while ( (unsigned __int8)n3b_1 < 2u ); /*0xffcf7f62*/
  }
  return n3a_1; /*0xffcf7f64*/
}

// Function: IioFunc7F6A @ 0xffcf7f6a (0x81 bytes)
// Index: 2063/2560

int __cdecl IioFunc7F6A(int __return_address, unsigned __int8 n6, int a3, int a4, int a5)
{
  int v5; // eax
  int v6; // ebx
  int n31; // edi

  v5 = a3; /*0xffcf7f6f*/
  v6 = 0; /*0xffcf7f79*/
  n31 = 31; /*0xffcf7f7e*/
  *(_BYTE *)(n6 + a5) = 0; /*0xffcf7f7f*/
  do /*0xffcf7fb1*/
  {
    if ( ((1 << n31) & *(_DWORD *)(v5 + 4 * n6)) != 0 ) /*0xffcf7f8d*/
    {
      v6 += 1 << n31; /*0xffcf7f93*/
      *(_DWORD *)(a4 + 4 * ((unsigned __int8)(*(_BYTE *)(n6 + a5))++ + 7 * n6)) = n31; /*0xffcf7f9e*/
      if ( *(_BYTE *)(n6 + a5) >= 7u ) /*0xffcf7fa8*/
        break; /*0xffcf7fa8*/
      v5 = a3; /*0xffcf7faa*/
    }
    --n31; /*0xffcf7fae*/
  }
  while ( n31 >= 0 ); /*0xffcf7fb1*/
  if ( !*(_BYTE *)(n6 + a5) )
  {
    DebugPrint(
      __return_address,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "ERROR: Couldn't calculate number loopcounts for subsequences\n");
    ProcMemInitCheck(__return_address, 96, 3); /*0xffcf7fdd*/
  }
  return v6; /*0xffcf7fe5*/
}

// Function: IioFunc7FEB @ 0xffcf7feb (0x159 bytes)
// Index: 2064/2560

int __cdecl IioFunc7FEB(int __return_address, int a2, int buf, unsigned __int8 n2, int bufa)
{
  char n6; // bh
  int v6; // esi
  int v7; // ebp
  int result; // eax
  unsigned __int8 *v9; // edi
  unsigned __int8 v10; // bl
  int v11; // edx
  int v12; // ecx
  unsigned __int8 v13; // bh
  unsigned __int8 v14; // cl
  char n2_1; // al
  char n6_1; // [esp+10h] [ebp-28h]
  unsigned __int8 *v17; // [esp+14h] [ebp-24h]
  unsigned __int8 v18; // [esp+18h] [ebp-20h]
  int v19; // [esp+1Ch] [ebp-1Ch]
  unsigned __int8 v20; // [esp+20h] [ebp-18h]
  int v21; // [esp+24h] [ebp-14h]
  int v22; // [esp+2Ch] [ebp-Ch]

  n6 = 0; /*0xffcf7ff7*/
  v6 = 888 * n2; /*0xffcf7ffa*/
  v7 = 0; /*0xffcf8000*/
  result = a2; /*0xffcf8006*/
  n6_1 = 0; /*0xffcf800b*/
  v21 = v6; /*0xffcf800f*/
  v9 = (unsigned __int8 *)(v6 + a2 + 8609); /*0xffcf8019*/
  v17 = v9; /*0xffcf801b*/
  do /*0xffcf8136*/
  {
    v10 = 0; /*0xffcf8025*/
    v11 = result + v6 + 8624; /*0xffcf8027*/
    v20 = 0; /*0xffcf8029*/
    v19 = v11; /*0xffcf802d*/
    if ( *v9 ) /*0xffcf8031*/
    {
      do /*0xffcf810a*/
      {
        v12 = 66 * v10; /*0xffcf803c*/
        if ( *(_BYTE *)(v12 + v11 + 2) ) /*0xffcf8047*/
        {
          v9 = v17; /*0xffcf8052*/
          v13 = 0; /*0xffcf805d*/
          v22 = a2 + v6 + v12; /*0xffcf805f*/
          v18 = 0; /*0xffcf8063*/
          if ( *(_BYTE *)(v12 + v11) ) /*0xffcf8067*/
          {
            do /*0xffcf80f4*/
            {
              if ( !KtiFunc89E9(__return_address, n2, n6_1, v20, v18, 1) ) /*0xffcf808c*/
              {
                v14 = *(_BYTE *)(v22 + 8 * v13 + 8659); /*0xffcf80a3*/
                n2_1 = *(_BYTE *)(v10 + 2 * (v7 + 6 * (n2 + 2643)) + buf); /*0xffcf80bf*/
                if ( n2_1 == 2 ) /*0xffcf80c4*/
                {
                  *(_BYTE *)(v7 + 6 * v14 + bufa) -= 2; /*0xffcf80d2*/
                }
                else if ( n2_1 == 1 ) /*0xffcf80da*/
                {
                  --*(_BYTE *)(v7 + 6 * v14 + bufa); /*0xffcf80e8*/
                }
              }
              v18 = ++v13; /*0xffcf80ed*/
            }
            while ( v13 < *(_BYTE *)(66 * v10 + v19) ); /*0xffcf80f4*/
            v6 = v21; /*0xffcf80f6*/
            v9 = v17; /*0xffcf80fa*/
            v11 = v19; /*0xffcf80fe*/
          }
        }
        v20 = ++v10; /*0xffcf8104*/
      }
      while ( v10 < *v9 ); /*0xffcf810a*/
      n6 = n6_1; /*0xffcf8110*/
      result = a2; /*0xffcf8114*/
    }
    ++n6; /*0xffcf8118*/
    v6 += 148; /*0xffcf811a*/
    v9 += 148; /*0xffcf8120*/
    n6_1 = n6; /*0xffcf8126*/
    ++v7; /*0xffcf812a*/
    v21 = v6; /*0xffcf812b*/
    v17 = v9; /*0xffcf812f*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffcf8136*/
  return result; /*0xffcf813c*/
}

// Function: IioFunc8144 @ 0xffcf8144 (0x223 bytes)
// Index: 2065/2560

int __cdecl IioFunc8144(unsigned __int8 *__return_address, int a2, int n4, int n6, int n2, unsigned __int8 a6)
{
  unsigned int v6; // eax
  unsigned __int8 n4_1; // bp
  unsigned int n0x18; // ebx
  int v9; // edi
  unsigned __int8 n2_1; // cl
  int v12; // edx
  int v13; // eax
  int v14; // esi
  unsigned __int8 v15; // al
  int v16; // esi
  int v17; // ecx
  unsigned __int16 v18; // ax
  int n26; // [esp-4h] [ebp-24h]
  int v21; // [esp+10h] [ebp-10h]
  int v22; // [esp+14h] [ebp-Ch]
  unsigned int v23; // [esp+1Ch] [ebp-4h]
  int n6a; // [esp+30h] [ebp+10h]
  unsigned __int8 v25; // [esp+38h] [ebp+18h]

  v21 = 148 * ((unsigned __int8)n6 + 6 * (unsigned __int8)n4); /*0xffcf8173*/
  v22 = a2 + v21; /*0xffcf817b*/
  v6 = MiscConfigCheck(__return_address, n4, n6, 184566276); /*0xffcf817f*/
  n4_1 = n4; /*0xffcf818a*/
  n0x18 = HIBYTE(v6) & 0x1F; /*0xffcf819c*/
  v23 = v6; /*0xffcf819f*/
  *(_DWORD *)(n2 + 8 * (unsigned __int8)n6 + 4) = (unsigned __int8)v6 >> 4; /*0xffcf81a8*/
  *(_DWORD *)(n2 + 8 * (unsigned __int8)n6) = n0x18; /*0xffcf81ac*/
  if ( a6 ) /*0xffcf81af*/
  {
    v9 = KtiFuncC0FC((int)__return_address) + 10000 * a6; /*0xffcf81cb*/
    n0x18 = (unsigned __int8)((v9 - 1) / (unsigned int)KtiFuncC0FC((int)__return_address)); /*0xffcf81de*/
  }
  n2_1 = 0; /*0xffcf81e5*/
  v12 = a2 + v21; /*0xffcf81e7*/
  v13 = 148 * ((unsigned __int8)n6 + 6 * (unsigned __int8)n4); /*0xffcf81eb*/
  v14 = a2; /*0xffcf81ef*/
  LOBYTE(n2) = 0; /*0xffcf81f3*/
  do /*0xffcf8329*/
  {
    if ( *(_BYTE *)(v12 + 8626) ) /*0xffcf81f7*/
    {
      v15 = 0; /*0xffcf820c*/
      v25 = 0; /*0xffcf820e*/
      n6a = 4292 * (unsigned __int8)n4; /*0xffcf8212*/
      n4_1 = n4; /*0xffcf821a*/
      if ( *(_BYTE *)(v14 + n6a + 18) ) /*0xffcf8216*/
      {
        v16 = v21; /*0xffcf8224*/
        v17 = a2; /*0xffcf8228*/
        do /*0xffcf8300*/
        {
          if ( *(_BYTE *)(v12 + 8 * v15 + 8658) ) /*0xffcf822f*/
          {
            v18 = *(_WORD *)(v16 + 8 * v15 + v17 + 8660) & 0xD1FF; /*0xffcf8250*/
            if ( n0x18 > 0xA ) /*0xffcf8256*/
            {
              if ( n0x18 > 0xC ) /*0xffcf825f*/
              {
                if ( n0x18 > 0xE ) /*0xffcf826d*/
                {
                  if ( n0x18 > 0x10 ) /*0xffcf827b*/
                  {
                    if ( n0x18 > 0x12 ) /*0xffcf8289*/
                    {
                      if ( n0x18 > 0x14 ) /*0xffcf8297*/
                      {
                        if ( n0x18 > 0x16 ) /*0xffcf82a5*/
                        {
                          if ( n0x18 > 0x18 ) /*0xffcf82b3*/
                          {
                            n26 = 26; /*0xffcf82be*/
                            v18 |= 0x2000u; /*0xffcf82c0*/
                          }
                          else
                          {
                            n26 = 24; /*0xffcf82b5*/
                            v18 |= 0xC00u; /*0xffcf82b7*/
                          }
                        }
                        else
                        {
                          n26 = 22; /*0xffcf82a7*/
                          v18 |= 0xE00u; /*0xffcf82a9*/
                        }
                      }
                      else
                      {
                        n26 = 20; /*0xffcf8299*/
                        v18 |= 0xA00u; /*0xffcf829b*/
                      }
                    }
                    else
                    {
                      n26 = 18; /*0xffcf828b*/
                      v18 |= 0x800u; /*0xffcf828d*/
                    }
                  }
                  else
                  {
                    n26 = 16; /*0xffcf827d*/
                    v18 |= 0x600u; /*0xffcf827f*/
                  }
                }
                else
                {
                  n26 = 14; /*0xffcf826f*/
                  v18 |= 0x400u; /*0xffcf8271*/
                }
              }
              else
              {
                n26 = 12; /*0xffcf8261*/
                v18 |= 0x200u; /*0xffcf8263*/
              }
            }
            else
            {
              n26 = 10; /*0xffcf8258*/
            }
            n0x18 = n26; /*0xffcf82c5*/
            RmtFunc349(__return_address, n4, n6, n2, v25, v18, 0); /*0xffcf82da*/
            v12 = v22; /*0xffcf82df*/
            v17 = a2; /*0xffcf82e6*/
          }
          v15 = v25 + 1; /*0xffcf82f2*/
          v25 = v15; /*0xffcf82f4*/
          v16 = v21; /*0xffcf82fc*/
        }
        while ( v15 < *(_BYTE *)(n6a + v17 + 18) ); /*0xffcf8300*/
        n2_1 = n2; /*0xffcf8306*/
        v14 = a2; /*0xffcf830a*/
      }
      v13 = v21; /*0xffcf830e*/
    }
    ++n2_1; /*0xffcf8312*/
    v13 += 66; /*0xffcf8314*/
    v12 += 66; /*0xffcf8317*/
    LOBYTE(n2) = n2_1; /*0xffcf831a*/
    v21 = v13; /*0xffcf831e*/
    v22 = v12; /*0xffcf8322*/
  }
  while ( n2_1 < 2u ); /*0xffcf8329*/
  return MiscIoCheck( /*0xffcf835f*/
           __return_address,
           n4_1,
           n6,
           0xB004204u,
           v23 & 0xE0FFFF0F | (8 * (n0x18 & 0x1E | ((n0x18 & 0x1F) << 21))));
}

// Function: IioFunc8367 @ 0xffcf8367 (0x297 bytes)
// Index: 2066/2560

char __cdecl IioFunc8367(int __return_address, int a2, int buf, unsigned __int8 n2)
{
  int n2_1; // ecx
  char n6_1; // bl
  int n2_2; // eax
  int v7; // edi
  _BYTE *n0x20_1; // ebp
  int v9; // esi
  int v10; // edx
  unsigned __int8 v11; // bh
  bool v12; // al
  unsigned __int8 n6a_1; // bh
  int v15; // esi
  unsigned __int8 *v16; // edi
  unsigned __int8 v17; // bl
  unsigned __int8 n0x20_2; // dl
  int buf_1; // edi
  _BYTE *v20; // eax
  int v21; // eax
  int v22; // edi
  unsigned __int8 n2_4; // [esp+8h] [ebp-28h]
  unsigned __int8 v25; // [esp+8h] [ebp-28h]
  char n6; // [esp+Ch] [ebp-24h]
  unsigned __int8 n6a; // [esp+Ch] [ebp-24h]
  int v28; // [esp+10h] [ebp-20h]
  _BYTE *n0x20; // [esp+18h] [ebp-18h]
  unsigned __int8 v30; // [esp+1Ch] [ebp-14h]
  unsigned __int8 *v31; // [esp+1Ch] [ebp-14h]
  unsigned __int8 n0xD2; // [esp+20h] [ebp-10h]
  _BYTE *n0x20_3; // [esp+24h] [ebp-Ch]
  int v34; // [esp+24h] [ebp-Ch]
  int v35; // [esp+28h] [ebp-8h]
  int n2_3; // [esp+2Ch] [ebp-4h]
  _BYTE *v37; // [esp+38h] [ebp+8h]

  n2_1 = n2; /*0xffcf836f*/
  n6_1 = 0; /*0xffcf8372*/
  n6 = 0; /*0xffcf838b*/
  LOBYTE(n2_2) = a2 - 96 + 120 * n2; /*0xffcf838f*/
  v7 = 0; /*0xffcf8391*/
  n0x20_1 = (_BYTE *)(a2 + 8608 + 888 * n2); /*0xffcf8393*/
  n0x20_3 = n0x20_1; /*0xffcf8395*/
  n0x20 = n0x20_1; /*0xffcf8399*/
  do /*0xffcf845f*/
  {
    if ( *n0x20_1 ) /*0xffcf839d*/
    {
      v9 = 148 * (v7 + 6 * n2_1) + a2 + 8624; /*0xffcf83bc*/
      LOBYTE(n2_2) = 0; /*0xffcf83be*/
      v10 = 0; /*0xffcf83c0*/
      n2_4 = 0; /*0xffcf83c2*/
      v28 = 0; /*0xffcf83c6*/
      do /*0xffcf8445*/
      {
        if ( *(_BYTE *)(v9 + 2) ) /*0xffcf83ca*/
        {
          if ( *(_WORD *)(v9 + 8) == 0xCE00 ) /*0xffcf83dd*/
          {
            v11 = 0; /*0xffcf83df*/
            v30 = 0; /*0xffcf83e1*/
            if ( *(_BYTE *)v9 ) /*0xffcf83e5*/
            {
              do /*0xffcf842f*/
              {
                v12 = KtiFunc89E9(__return_address, n2, n6, n2_4, v30, 1); /*0xffcf83ff*/
                n2_1 = n2; /*0xffcf8404*/
                v10 = v28; /*0xffcf840b*/
                if ( !v12 ) /*0xffcf8411*/
                  *(_BYTE *)(v28 + 2 * (v7 + 2146 * n2 + 2110) + a2) = 1; /*0xffcf8423*/
                v30 = ++v11; /*0xffcf8429*/
              }
              while ( v11 < *(_BYTE *)v9 ); /*0xffcf842f*/
              LOBYTE(n2_2) = n2_4; /*0xffcf8431*/
            }
          }
        }
        LOBYTE(n2_2) = n2_2 + 1; /*0xffcf8435*/
        v9 += 66; /*0xffcf8437*/
        ++v10; /*0xffcf843a*/
        n2_4 = n2_2; /*0xffcf843b*/
        v28 = v10; /*0xffcf843f*/
      }
      while ( (unsigned __int8)n2_2 < 2u ); /*0xffcf8445*/
      n0x20_1 = n0x20; /*0xffcf8447*/
    }
    ++n6_1; /*0xffcf844b*/
    n0x20_1 += 148; /*0xffcf844d*/
    ++v7; /*0xffcf8453*/
    n6 = n6_1; /*0xffcf8454*/
    n0x20 = n0x20_1; /*0xffcf8458*/
  }
  while ( (unsigned __int8)n6_1 < 6u ); /*0xffcf845f*/
  n6a_1 = 0; /*0xffcf8469*/
  v15 = 0; /*0xffcf846f*/
  v16 = n0x20_3 + 1; /*0xffcf8471*/
  n6a = 0; /*0xffcf8472*/
  v31 = n0x20_3 + 1; /*0xffcf8476*/
  do /*0xffcf85f0*/
  {
    if ( *(v16 - 1) ) /*0xffcf847a*/
    {
      v17 = 0; /*0xffcf8484*/
      v25 = 0; /*0xffcf8486*/
      if ( *v16 ) /*0xffcf848a*/
      {
        n2_2 = 2 * (v15 + 6 * n2_1); /*0xffcf8497*/
        n2_3 = n2_2; /*0xffcf8499*/
        do /*0xffcf85d6*/
        {
          n0x20_2 = 0; /*0xffcf84a0*/
          buf_1 = buf; /*0xffcf84a8*/
          LOBYTE(n0x20) = 0; /*0xffcf84b2*/
          v34 = 516 * (v17 + n2_2); /*0xffcf84b6*/
          v20 = (_BYTE *)(buf + v34 + 17); /*0xffcf84bd*/
          v37 = v20; /*0xffcf84bf*/
          do /*0xffcf857c*/
          {
            if ( *(v20 - 13) != 0xFF ) /*0xffcf84c7*/
            {
              v21 = v15 + 2146 * n2_1; /*0xffcf84d3*/
              if ( *(_BYTE *)(buf_1 + 24768) == 1 ) /*0xffcf84e0*/
              {
                v35 = v17 + 4220 + 2 * v21; /*0xffcf84ef*/
                if ( *(_BYTE *)(v35 + a2) != 5 ) /*0xffcf84f3*/
                  *(_BYTE *)(v35 + a2) = 2 * (*v37 != 1) + 3; /*0xffcf850a*/
              }
              else
              {
                *(_BYTE *)(v17 + 2 * v21 + a2 + 4220) = 2; /*0xffcf8512*/
              }
              v22 = 4292 * n2_1; /*0xffcf851a*/
              n0xD2 = *(_BYTE *)(4292 * n2_1 + a2 + 17); /*0xffcf8524*/
              if ( n0xD2 < 0xD2u ) /*0xffcf852a*/
              {
                IioFuncE654(__return_address, a2, buf, n2, n6a, v25, n0xD2, n0x20); /*0xffcf854a*/
                n2_1 = n2; /*0xffcf8556*/
                n0x20_2 = (unsigned __int8)n0x20; /*0xffcf855c*/
                *(_BYTE *)(v22 + a2 + 17) = n0xD2 + 1; /*0xffcf8560*/
              }
              buf_1 = buf; /*0xffcf8564*/
              v20 = v37; /*0xffcf8568*/
            }
            ++n0x20_2; /*0xffcf856c*/
            v20 += 16; /*0xffcf856e*/
            LOBYTE(n0x20) = n0x20_2; /*0xffcf8571*/
            v37 = v20; /*0xffcf8575*/
          }
          while ( n0x20_2 < 0x20u ); /*0xffcf857c*/
          if ( *(_BYTE *)(v34 + buf_1 + 1) == 1 ) /*0xffcf858f*/
            *(_BYTE *)(v17 + 2 * (v15 + 2146 * n2_1) + a2 + 4220) = 4; /*0xffcf859c*/
          v16 = v31; /*0xffcf85b1*/
          if ( *(_BYTE *)(v34 + buf + 2) == 1 ) /*0xffcf85b5*/
            *(_BYTE *)(v17 + 2 * (v15 + 2146 * n2_1) + a2 + 4220) = 6; /*0xffcf85c2*/
          n2_2 = n2_3; /*0xffcf85ca*/
          v25 = ++v17; /*0xffcf85d0*/
        }
        while ( v17 < *v31 ); /*0xffcf85d6*/
      }
    }
    ++n6a_1; /*0xffcf85dc*/
    v16 += 148; /*0xffcf85de*/
    ++v15; /*0xffcf85e4*/
    n6a = n6a_1; /*0xffcf85e5*/
    v31 = v16; /*0xffcf85e9*/
  }
  while ( n6a_1 < 6u ); /*0xffcf85f0*/
  return n2_2; /*0xffcf85f8*/
}

// Function: IioFunc85FE @ 0xffcf85fe (0x124 bytes)
// Index: 2067/2560

char __cdecl IioFunc85FE(int __return_address, int a2, unsigned __int8 n2, int buf)
{
  int v4; // edx
  int n2_1; // ecx
  char n6; // bl
  int v7; // eax
  int v8; // ebp
  unsigned __int8 *v9; // esi
  unsigned __int8 v10; // bh
  int v11; // ecx
  int v12; // edi
  unsigned __int8 v13; // bl
  char n6_1; // [esp+10h] [ebp-20h]
  unsigned __int8 v16; // [esp+14h] [ebp-1Ch]
  int v17; // [esp+18h] [ebp-18h]
  unsigned __int8 v18; // [esp+1Ch] [ebp-14h]
  unsigned __int8 *v19; // [esp+24h] [ebp-Ch]
  int v20; // [esp+28h] [ebp-8h]
  int v21; // [esp+2Ch] [ebp-4h]

  v4 = a2; /*0xffcf8605*/
  n2_1 = n2; /*0xffcf860a*/
  n6 = 0; /*0xffcf860d*/
  v7 = 888 * n2; /*0xffcf8610*/
  v8 = 0; /*0xffcf8616*/
  n6_1 = 0; /*0xffcf8624*/
  v9 = (unsigned __int8 *)(v7 + a2 + 8609); /*0xffcf8628*/
  v19 = v9; /*0xffcf862a*/
  do /*0xffcf8714*/
  {
    if ( *(v9 - 1) ) /*0xffcf862e*/
    {
      v10 = 0; /*0xffcf863b*/
      v18 = 0; /*0xffcf8643*/
      v7 = 148 * (v8 + 6 * n2_1); /*0xffcf8649*/
      v11 = v7 + v4 + 8624; /*0xffcf864f*/
      v20 = v7; /*0xffcf8651*/
      v17 = v11; /*0xffcf8655*/
      if ( *v9 ) /*0xffcf8659*/
      {
        do /*0xffcf86f2*/
        {
          LOBYTE(v7) = v10; /*0xffcf8661*/
          v12 = 66 * v10; /*0xffcf8664*/
          if ( *(_BYTE *)(v12 + v11 + 2) ) /*0xffcf8667*/
          {
            v13 = 0; /*0xffcf8672*/
            v16 = 0; /*0xffcf8676*/
            LOBYTE(v7) = v4 + v12 + v20; /*0xffcf867a*/
            v21 = v4 + v12 + v20; /*0xffcf867c*/
            if ( *(_BYTE *)(v12 + v11) ) /*0xffcf8680*/
            {
              do /*0xffcf86dc*/
              {
                LOBYTE(v7) = KtiFunc89E9(__return_address, n2, n6_1, v18, v16, 1); /*0xffcf869f*/
                if ( !(_BYTE)v7 ) /*0xffcf86a9*/
                {
                  LOBYTE(v7) = 0; /*0xffcf86ab*/
                  if ( *(_WORD *)(v12 + v17 + 8) != 0xCE00 ) /*0xffcf86b5*/
                  {
                    v7 = v8 + 6 * *(unsigned __int8 *)(v21 + 8 * v13 + 8659); /*0xffcf86cd*/
                    *(_BYTE *)(v7 + buf) = 0; /*0xffcf86cf*/
                  }
                }
                v16 = ++v13; /*0xffcf86d5*/
              }
              while ( v13 < *(_BYTE *)(v12 + v17) ); /*0xffcf86dc*/
              v9 = v19; /*0xffcf86de*/
              v11 = v17; /*0xffcf86e2*/
              v4 = a2; /*0xffcf86e6*/
            }
          }
          v18 = ++v10; /*0xffcf86ec*/
        }
        while ( v10 < *v9 ); /*0xffcf86f2*/
        n6 = n6_1; /*0xffcf86f8*/
      }
      n2_1 = n2; /*0xffcf86fc*/
    }
    ++n6; /*0xffcf8700*/
    v9 += 148; /*0xffcf8702*/
    ++v8; /*0xffcf8708*/
    n6_1 = n6; /*0xffcf8709*/
    v19 = v9; /*0xffcf870d*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffcf8714*/
  return v7; /*0xffcf871a*/
}

// Function: IioFunc8722 @ 0xffcf8722 (0xc8 bytes)
// Index: 2068/2560

char __cdecl IioFunc8722(int __return_address, int a2, unsigned __int8 n2, unsigned __int8 n6, unsigned __int8 a5)
{
  int v5; // ecx
  int v6; // edx
  char n5; // al
  char n5_1; // bl

  v5 = a2 + 8624 + 148 * (n6 + 6 * n2); /*0xffcf8743*/
  v6 = 66 * a5; /*0xffcf874a*/
  n5 = 5; /*0xffcf874d*/
  n5_1 = *(_BYTE *)(v6 + v5 + 4); /*0xffcf874e*/
  if ( n5_1 == 5 && *(_BYTE *)(v6 + v5 + 19) == 67 || n5_1 == 4 && *(_BYTE *)(v6 + v5 + 19) == 84 ) /*0xffcf8767*/
    return 1; /*0xffcf876c*/
  if ( n5_1 == 6 && *(_BYTE *)(v6 + v5 + 19) == 77 ) /*0xffcf8777*/
    return 2; /*0xffcf877c*/
  if ( n5_1 == 5 && *(_BYTE *)(v6 + v5 + 19) == 68 ) /*0xffcf8786*/
    return 3; /*0xffcf878b*/
  if ( n5_1 == 6 && *(_BYTE *)(v6 + v5 + 19) == 65 ) /*0xffcf8796*/
    return 4; /*0xffcf879b*/
  if ( n5_1 != 5 || *(_BYTE *)(v6 + v5 + 19) != 66 ) /*0xffcf87a5*/
  {
    if ( n5_1 == 4 && *(_BYTE *)(v6 + v5 + 19) == 69 ) /*0xffcf87b1*/
      return 6; /*0xffcf87b6*/
    if ( n5_1 == 5 && *(_BYTE *)(v6 + v5 + 19) == 69 ) /*0xffcf87c0*/
      return 7; /*0xffcf87c5*/
    if ( n5_1 != 6 ) /*0xffcf87c9*/
      return 0; /*0xffcf87c9*/
    if ( *(_BYTE *)(v6 + v5 + 19) == 66 ) /*0xffcf87d0*/
      return 8; /*0xffcf87d5*/
    if ( *(_BYTE *)(v6 + v5 + 19) == 67 ) /*0xffcf87e0*/
      return 9; /*0xffcf87e2*/
    else
      return 0; /*0xffcf87e6*/
  }
  return n5; /*0xffcf876b*/
}

// Function: IioFunc87EA @ 0xffcf87ea (0xf1 bytes)
// Index: 2069/2560

char __cdecl IioFunc87EA(
        int __return_address,
        int a2,
        int buf,
        unsigned __int8 n2,
        unsigned __int8 n6,
        unsigned __int8 a6)
{
  int v6; // eax
  int v7; // ecx
  char n5; // bl
  int buf_1; // ecx
  char n2_1; // bl
  char *v11; // eax
  unsigned __int8 v12; // al

  v6 = 148 * (n6 + 6 * n2) + a2; /*0xffcf880a*/
  v7 = 66 * a6; /*0xffcf880c*/
  n5 = *(_BYTE *)(v7 + v6 + 8628); /*0xffcf880f*/
  if ( n5 == 5 ) /*0xffcf8819*/
  {
    if ( *(_BYTE *)(v7 + v6 + 8629) ) /*0xffcf881b*/
    {
      buf_1 = buf; /*0xffcf8825*/
      n2_1 = 0; /*0xffcf8831*/
      v11 = (char *)(buf + a6 + 2 * (n6 + 6 * (n2 + 2643))); /*0xffcf8838*/
      *v11 = 2; /*0xffcf883a*/
      goto LABEL_11; /*0xffcf883d*/
    }
    n2_1 = 1; /*0xffcf8853*/
    goto LABEL_8; /*0xffcf8854*/
  }
  if ( n5 == 6 ) /*0xffcf8859*/
  {
    if ( *(_BYTE *)(v7 + v6 + 8629) ) /*0xffcf885b*/
    {
      n2_1 = 2; /*0xffcf8865*/
LABEL_8:
      buf_1 = buf; /*0xffcf8868*/
      v11 = (char *)(buf + a6 + 2 * (n6 + 6 * (n2 + 2643))); /*0xffcf8879*/
      *v11 = n2_1; /*0xffcf887b*/
      goto LABEL_11; /*0xffcf887d*/
    }
    buf_1 = buf; /*0xffcf888e*/
    n2_1 = 3; /*0xffcf889a*/
    v11 = (char *)(buf + a6 + 2 * (n6 + 6 * (n2 + 2643))); /*0xffcf88a2*/
    *v11 = 1; /*0xffcf88a4*/
  }
  else
  {
    buf_1 = buf; /*0xffcf88a9*/
    n2_1 = -1; /*0xffcf88b5*/
    v11 = (char *)(buf + a6 + 2 * (n6 + 6 * (n2 + 2643))); /*0xffcf88bd*/
    *v11 = 0; /*0xffcf88bf*/
  }
LABEL_11:
  v12 = *v11; /*0xffcf88c2*/
  if ( *(_BYTE *)(n2 + buf_1 + 31712) < v12 ) /*0xffcf88cb*/
    *(_BYTE *)(n2 + buf_1 + 31712) = v12; /*0xffcf88cd*/
  return n2_1; /*0xffcf88d4*/
}

// Function: IioFunc88DB @ 0xffcf88db (0x58 bytes)
// Index: 2070/2560

int __cdecl IioFunc88DB(int a1, int a2, int a3, int a4)
{
  unsigned __int8 n0x20; // dl
  unsigned __int8 n8; // bl
  char v6; // cl
  int v7; // eax

  n0x20 = 0; /*0xffcf88df*/
  n8 = 0; /*0xffcf88e7*/
  v6 = 0; /*0xffcf88ef*/
  do /*0xffcf8921*/
  {
    v7 = 1 << v6; /*0xffcf88fe*/
    if ( ((1 << v6) & a2) != 0 ) /*0xffcf8902*/
      ++n0x20; /*0xffcf8904*/
    if ( (v7 & a3) != 0 ) /*0xffcf8908*/
      ++n0x20; /*0xffcf890a*/
    if ( *(_BYTE *)(a1 + 8600) && n8 < 8u && (v7 & a4) != 0 ) /*0xffcf8917*/
      ++n0x20; /*0xffcf8919*/
    ++n8; /*0xffcf891b*/
    ++v6; /*0xffcf891d*/
  }
  while ( n8 < 0x20u ); /*0xffcf8921*/
  return (unsigned __int8)-(n0x20 > 0x20u); /*0xffcf8925*/
}

// Function: IioFunc8933 @ 0xffcf8933 (0xa1 bytes)
// Index: 2071/2560

char __cdecl IioFunc8933(
        int a1,
        unsigned __int8 n2,
        unsigned __int8 n6,
        unsigned __int8 n2a,
        char a5,
        char a6,
        int a7,
        int a8,
        char a9,
        unsigned __int8 n99,
        char a11,
        char n0x55)
{
  char v12; // bl
  int n32; // esi
  int v14; // edx
  char v15; // al
  unsigned __int8 v16; // al
  char v17; // al
  char v18; // cl

  v12 = 0; /*0xffcf8945*/
  n32 = 32; /*0xffcf8967*/
  v14 = 516 * (n2a + 2 * (n6 + 6 * n2)) + a1 + 5; /*0xffcf8968*/
  v15 = a5; /*0xffcf896a*/
  do /*0xffcf89cb*/
  {
    if ( *(_BYTE *)(v14 - 1) == v15 ) /*0xffcf8971*/
    {
      if ( *(_BYTE *)v14 == a6 && *(_DWORD *)(v14 + 3) == a7 && *(_BYTE *)(v14 + 9) == a9 ) /*0xffcf8987*/
      {
        v16 = *(_BYTE *)(v14 + 10); /*0xffcf8990*/
        if ( a11 == 1 ) /*0xffcf8993*/
        {
          v17 = v16 >> 2; /*0xffcf8995*/
          v18 = n99 >> 2; /*0xffcf8998*/
        }
        else
        {
          v17 = v16 >> 3; /*0xffcf899d*/
          v18 = n99 >> 3; /*0xffcf89a0*/
        }
        if ( v17 == v18 ) /*0xffcf89a5*/
        {
          v12 = 1; /*0xffcf89ae*/
          *(_BYTE *)(v14 + 11) |= 1 << *(_BYTE *)(a1 + 24769); /*0xffcf89bb*/
          *(_BYTE *)(v14 + 13) = n0x55; /*0xffcf89be*/
        }
      }
      v15 = a5; /*0xffcf89c1*/
    }
    v14 += 16; /*0xffcf89c5*/
    --n32; /*0xffcf89c8*/
  }
  while ( n32 ); /*0xffcf89cb*/
  return v12; /*0xffcf89cd*/
}

// Function: IioFunc89D4 @ 0xffcf89d4 (0x35 bytes)
// Index: 2072/2560

int __cdecl IioFunc89D4(unsigned __int16 n3)
{
  char n3_1; // cl

  n3_1 = n3; /*0xffcf89d4*/
  if ( n3 <= 3u ) /*0xffcf89dc*/
    return (unsigned __int16)(1 << n3_1); /*0xffcf89dc*/
  if ( (unsigned __int16)(n3 - 4) <= 5u ) /*0xffcf89e5*/
  {
    n3_1 = n3 + 4; /*0xffcf89e7*/
    return (unsigned __int16)(1 << n3_1); /*0xffcf89f3*/
  }
  return n3 != 10 ? 255 : 16;
}

// Function: IioFunc8A09 @ 0xffcf8a09 (0x30e bytes)
// Index: 2073/2560

int __cdecl IioFunc8A09(
        unsigned __int8 *__return_address,
        int a2,
        int buf,
        int n2,
        char n3,
        unsigned __int8 a6,
        unsigned __int8 a7,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        char a13)
{
  char n2_1; // al
  bool n3_2; // al
  unsigned __int8 n6; // dl
  int v16; // edi
  int v17; // ecx
  int *v18; // ebp
  int v19; // edx
  int v20; // ecx
  int result; // eax
  int v22; // ebp
  int n6_3; // edi
  unsigned __int8 n6_2; // dl
  int v25; // esi
  int v26; // ecx
  int v27; // edx
  int v28; // ecx
  bool v29; // zf
  unsigned __int8 n6_4; // [esp+10h] [ebp-18h]
  unsigned __int8 n6_5; // [esp+10h] [ebp-18h]
  int *n6_6; // [esp+18h] [ebp-10h]
  int v33; // [esp+1Ch] [ebp-Ch]
  int n6_1; // [esp+1Ch] [ebp-Ch]
  int v35; // [esp+1Ch] [ebp-Ch]
  int v36; // [esp+20h] [ebp-8h]
  int v37; // [esp+20h] [ebp-8h]
  int v38; // [esp+24h] [ebp-4h]
  char n3_1; // [esp+5Ch] [ebp+34h]
  char v40; // [esp+5Ch] [ebp+34h]
  char v41; // [esp+5Ch] [ebp+34h]

  if ( a13 != 1 ) /*0xffcf8a1c*/
  {
    n3_2 = 0; /*0xffcf8a3d*/
    goto LABEL_6; /*0xffcf8a3d*/
  }
  n2_1 = *(_BYTE *)((unsigned __int8)n2 + buf + 31712); /*0xffcf8a25*/
  if ( n2_1 != 2 ) /*0xffcf8a2e*/
  {
    n3_2 = n2_1 == 1; /*0xffcf8a38*/
LABEL_6:
    n3_1 = n3_2; /*0xffcf8a3f*/
    goto LABEL_7; /*0xffcf8a3f*/
  }
  n3_1 = 3; /*0xffcf8a30*/
LABEL_7:
  n6 = 0; /*0xffcf8a43*/
  v16 = a7; /*0xffcf8a49*/
  v17 = 0; /*0xffcf8a4e*/
  v18 = (int *)(a12 + 4); /*0xffcf8a50*/
  n6_4 = 0; /*0xffcf8a53*/
  v33 = 0; /*0xffcf8a5b*/
  n6_6 = (int *)(a12 + 4); /*0xffcf8a5f*/
  do /*0xffcf8ae4*/
  {
    if ( ((1 << v17) & v16) != 0 ) /*0xffcf8a6a*/
    {
      *(v18 - 1) ^= (a8 ^ *(v18 - 1)) & 0x3FFFF; /*0xffcf8a81*/
      v18[1] ^= (a9 ^ v18[1]) & 0x3FFFF; /*0xffcf8a91*/
      *v18 ^= (*v18 ^ (8 * a10)) & 0x1FFFF8; /*0xffcf8aa4*/
      v18[2] ^= (v18[2] ^ (8 * a11)) & 0x1FFFF8; /*0xffcf8ab3*/
      IioTailX_FFD093D8((int)__return_address, n2, n6_4, *(v18 - 1), *v18, v18[1], v18[2]); /*0xffcf8abf*/
      n6 = n6_4; /*0xffcf8ac4*/
      v17 = v33; /*0xffcf8acb*/
      v16 = a7; /*0xffcf8acf*/
    }
    ++n6; /*0xffcf8ad3*/
    v18 += 4; /*0xffcf8ad5*/
    ++v17; /*0xffcf8ad8*/
    n6_4 = n6; /*0xffcf8ad9*/
    v33 = v17; /*0xffcf8add*/
  }
  while ( n6 < 6u ); /*0xffcf8ae4*/
  v38 = (unsigned __int8)(n3_1 + 1); /*0xffcf8af3*/
  v36 = v38; /*0xffcf8af7*/
  do
  {
    MailBoxFuncD466(v16, (int)__return_address, n2, v16, 4u); /*0xffcf8b03*/
    n6_1 = 6; /*0xffcf8b19*/
    LOBYTE(v19) = IioFuncA861(n2, __return_address, a2, n2); /*0xffcf8b21*/
    v40 = v19; /*0xffcf8b23*/
    v20 = 0; /*0xffcf8b37*/
    do
    {
      result = 1 << v20; /*0xffcf8b40*/
      if ( ((1 << v20) & v16) != 0 )
      {
        result = ((unsigned __int8)n3 > 3u ? 517 : 1) + 1032 * (v20 + 6 * (unsigned __int8)n2);
        if ( *(_BYTE *)(result + buf) == 1 ) /*0xffcf8b5a*/
        {
          v19 = (unsigned __int8)v19 & ~(1 << v20); /*0xffcf8b5f*/
          v40 = v19; /*0xffcf8b62*/
        }
      }
      ++v20; /*0xffcf8b66*/
      --n6_1; /*0xffcf8b67*/
    }
    while ( n6_1 );
    if ( ((unsigned __int8)v19 & a7) != 0 ) /*0xffcf8b72*/
      result = IioFunc9628(__return_address, a2, buf, n2, n3, a6, v40); /*0xffcf8b8a*/
    --v36; /*0xffcf8b92*/
  }
  while ( v36 );
  if ( *(_BYTE *)(buf + 24769) == 2 )
  {
    if ( a8 ) /*0xffcf8bb3*/
    {
      v37 = 0; /*0xffcf8bc0*/
      v22 = a9 - 1; /*0xffcf8bc5*/
    }
    else
    {
      v37 = 1; /*0xffcf8bb5*/
      v22 = a9 + 1; /*0xffcf8bbd*/
    }
    n6_3 = a12 + 4; /*0xffcf8bc6*/
    n6_2 = 0; /*0xffcf8bca*/
    v25 = a7; /*0xffcf8bcc*/
    v26 = 0; /*0xffcf8bd0*/
    n6_5 = 0; /*0xffcf8bd2*/
    v35 = 0; /*0xffcf8bd6*/
    do /*0xffcf8c68*/
    {
      if ( ((1 << v26) & v25) != 0 ) /*0xffcf8be1*/
      {
        *(_DWORD *)(n6_3 - 4) = v37 | *(_DWORD *)(n6_3 - 4) & 0xFFFC0000; /*0xffcf8bf9*/
        *(_DWORD *)(n6_3 + 4) ^= (v22 ^ *(_DWORD *)(n6_3 + 4)) & 0x3FFFF; /*0xffcf8c05*/
        *(_DWORD *)n6_3 ^= (*(_DWORD *)n6_3 ^ (8 * a10 + 512)) & 0x1FFFF8; /*0xffcf8c17*/
        *(_DWORD *)(n6_3 + 8) ^= (*(_DWORD *)(n6_3 + 8) ^ (8 * a11 + 512)) & 0x1FFFF8; /*0xffcf8c29*/
        IioTailX_FFD093D8( /*0xffcf8c3b*/
          (int)__return_address,
          n2,
          n6_5,
          *(_DWORD *)(n6_3 - 4),
          *(_DWORD *)n6_3,
          *(_DWORD *)(n6_3 + 4),
          *(_DWORD *)(n6_3 + 8));
        n6_2 = n6_5; /*0xffcf8c40*/
        v26 = v35; /*0xffcf8c47*/
        n6_3 = (int)n6_6; /*0xffcf8c4b*/
        v25 = a7; /*0xffcf8c4f*/
      }
      ++n6_2; /*0xffcf8c53*/
      n6_3 += 16; /*0xffcf8c55*/
      ++v26; /*0xffcf8c58*/
      n6_5 = n6_2; /*0xffcf8c59*/
      v35 = v26; /*0xffcf8c5d*/
      n6_6 = (int *)n6_3; /*0xffcf8c61*/
    }
    while ( n6_2 < 6u ); /*0xffcf8c68*/
    do
    {
      MailBoxFuncD466(n6_3, (int)__return_address, n2, v25, 4u); /*0xffcf8c76*/
      LOBYTE(v27) = IioFuncA861(n2, __return_address, a2, n2); /*0xffcf8c8c*/
      v41 = v27; /*0xffcf8c8e*/
      v28 = 0; /*0xffcf8ca4*/
      n6_3 = 6; /*0xffcf8ca6*/
      do
      {
        result = 1 << v28; /*0xffcf8cae*/
        if ( ((1 << v28) & a7) != 0 )
        {
          result = ((unsigned __int8)n3 > 3u ? 517 : 1) + 1032 * (v28 + 6 * (unsigned __int8)n2);
          if ( *(_BYTE *)(result + buf) == 1 ) /*0xffcf8cca*/
          {
            v27 = (unsigned __int8)v27 & ~(1 << v28); /*0xffcf8ccf*/
            v41 = v27; /*0xffcf8cd2*/
          }
        }
        ++v28; /*0xffcf8cd6*/
        --n6_3; /*0xffcf8cd7*/
      }
      while ( n6_3 );
      if ( ((unsigned __int8)v27 & a7) != 0 ) /*0xffcf8ce0*/
        result = IioFunc9628(__return_address, a2, buf, n2, n3, a6, v41); /*0xffcf8cf8*/
      v29 = v38-- == 1; /*0xffcf8d00*/
      v25 = a7; /*0xffcf8d05*/
    }
    while ( !v29 );
  }
  return result; /*0xffcf8d0f*/
}

// Function: IioFunc8D17 @ 0xffcf8d17 (0x65 bytes)
// Index: 2074/2560

char __cdecl IioFunc8D17(unsigned __int8 *__return_address, int a2, unsigned __int8 n2, int n6, int buf)
{
  unsigned int v5; // edx
  int n64; // esi
  char v7; // al
  char v9[2048]; // [esp+4h] [ebp-800h] BYREF

  v5 = 0; /*0xffcf8d20*/
  n64 = 64; /*0xffcf8d25*/
  do /*0xffcf8d5a*/
  {
    v9[v5 + 128] = 0; /*0xffcf8d28*/
    v9[v5 + 192] = -1; /*0xffcf8d3b*/
    v7 = *(_BYTE *)(buf + (v5 >> 3) + 8 * (v5 & 7)); /*0xffcf8d43*/
    v9[v5] = v7; /*0xffcf8d46*/
    v9[v5++ + 64] = ~v7; /*0xffcf8d4f*/
    --n64; /*0xffcf8d57*/
  }
  while ( n64 ); /*0xffcf8d5a*/
  return RmtFunc71F8(__return_address, n2, n6, v9, 4, 0); /*0xffcf8d77*/
}

// Function: IioFunc8D7C @ 0xffcf8d7c (0xa3 bytes)
// Index: 2075/2560

int __cdecl IioFunc8D7C(
        unsigned __int8 *__return_address,
        int a2,
        int n2,
        unsigned __int8 a4,
        char a5,
        int a6,
        char a7)
{
  int n6_1; // edx
  int v9; // esi
  char v10; // bl
  int result; // eax
  char n6; // [esp+10h] [ebp-Ch]
  int n6_2; // [esp+14h] [ebp-8h]

  IioFuncFB2A(__return_address, a2, n2, a4, a5); /*0xffcf8d98*/
  n6_1 = 0; /*0xffcf8da4*/
  v9 = a4; /*0xffcf8da6*/
  n6_2 = 0; /*0xffcf8da9*/
  v10 = 0; /*0xffcf8dad*/
  n6 = 0; /*0xffcf8daf*/
  do /*0xffcf8e15*/
  {
    result = 1 << v10; /*0xffcf8dbc*/
    if ( ((1 << v10) & v9) != 0 ) /*0xffcf8dc0*/
    {
      IioTailFunc660((int)__return_address, n2, n6, a7, a7); /*0xffcf8dd6*/
      result = IioFunc935E((int)__return_address, a2, n2, n6, *(_DWORD *)a6, *(_DWORD *)(a6 + 4)); /*0xffcf8df4*/
      n6_1 = n6_2; /*0xffcf8df9*/
      v9 = a4; /*0xffcf8e00*/
    }
    LOBYTE(n6_1) = n6_1 + 1; /*0xffcf8e04*/
    a6 += 9; /*0xffcf8e06*/
    ++v10; /*0xffcf8e09*/
    n6_2 = n6_1; /*0xffcf8e0a*/
    n6 = n6_1; /*0xffcf8e0e*/
  }
  while ( (unsigned __int8)n6_1 < 6u ); /*0xffcf8e15*/
  return result; /*0xffcf8e17*/
}

// Function: IioFunc8E1F @ 0xffcf8e1f (0x53f bytes)
// Index: 2076/2560

int __cdecl IioFunc8E1F(unsigned __int8 *__return_address, _BYTE *a2, int n2)
{
  _BYTE *v3; // ebx
  char n2_1; // al
  int v5; // esi
  int n6; // ecx
  _BYTE *v7; // eax
  int v8; // ebp
  int v9; // esi
  unsigned __int8 *v10; // esi
  int v11; // ebx
  int n2_3; // eax
  _BYTE *v13; // ebx
  _BYTE *v14; // esi
  int n2_5; // eax
  int v16; // ebp
  int v17; // eax
  int v18; // eax
  int v19; // esi
  int v20; // ecx
  int n2_6; // edx
  char v22; // si
  int n2_4; // [esp+10h] [ebp-8084h]
  int n2_2; // [esp+14h] [ebp-8080h]
  int v26; // [esp+1Ch] [ebp-8078h]
  _BYTE *v27; // [esp+20h] [ebp-8074h]
  int n6_1; // [esp+24h] [ebp-8070h]
  int n2_7; // [esp+2Ch] [ebp-8068h]
  _DWORD v30[12]; // [esp+30h] [ebp-8064h]
  _BYTE v31[1032]; // [esp+60h] [ebp-8034h] BYREF
  int buf[6192]; // [esp+468h] [ebp-7C2Ch] BYREF
  char v33; // [esp+6528h] [ebp-1B6Ch]
  char v34; // [esp+652Fh] [ebp-1B65h]

  v3 = a2; /*0xffcf8e2a*/
  IioDmiInitPcie(__return_address, (int)a2, n2, (int)v31); /*0xffcf... [8411 chars total]

// Function: IioFunc935E @ 0xffcf935e (0x6e bytes)
// Index: 2077/2560

int __cdecl IioFunc935E(int __return_address, int a2, unsigned __int8 n2, char n6, unsigned int a5, int a6)
{
  MailBoxFunc902D( /*0xffcf9399*/
    __return_address,
    n2,
    n6,
    117459836,
    8,
    HIBYTE(a5) | ((a6 & 0x1F | (((unsigned __int8)a5 | (((a5 >> 8) & 0x1F) << 12)) << 6)) << 8));
  return MailBoxFunc902D(__return_address, n2, n6, 117459840, 8, BYTE2(a6) & 0xF | (16 * (HIBYTE(a6) & 0x1F))); /*0xffcf93ca*/
}

// Function: IioFunc93CC @ 0xffcf93cc (0x1a bytes)
// Index: 2078/2560

int __cdecl IioFunc93CC(unsigned __int8 *__return_address, int a2, unsigned __int8 n2)
{
  return IioFuncF8C1(__return_address, a2, n2, 0xFFu); /*0xffcf93e5*/
}

// Function: IioFunc93E6 @ 0xffcf93e6 (0x242 bytes)
// Index: 2079/2560

int __cdecl IioFunc93E6(unsigned __int8 *__return_address, _BYTE *a2, int n2)
{
  int n210; // eax
  int v4; // ebp
  unsigned __int8 *v5; // edi
  char n2_1; // al
  unsigned __int8 n6; // bh
  unsigned __int8 *v8; // edi
  char *v9; // ebp
  unsigned __int8 n2_2; // bl
  unsigned __int8 v11; // al
  char v12; // al
  int v14; // [esp-14h] [ebp-2Ch]
  int v15; // [esp-10h] [ebp-28h]
  int v16; // [esp-Ch] [ebp-24h]
  int v17; // [esp-8h] [ebp-20h]
  int v18; // [esp-4h] [ebp-1Ch]
  int n210_1; // [esp+10h] [ebp-8h]
  int v20; // [esp+14h] [ebp-4h]

  DebugPrint( /*0xffcf940b*/
    (int)__return_address,
    3,
    255,
    255,
    255,
    255,
    255,
    255,
    "=================== [CPU#%d] STEP Test Result ======================================================================"
    "=================\n",
    (unsigned __int8)n2);
  DebugPrint( /*0xffcf941f*/
    (int)__return_address,
    3,
    255,
    255,
    255,
    255,
    255,
    255,
    "** Detail Fail Information **\n",
    (unsigned __int8)n2);
  n210 = 210; /*0xffcf9428*/
  v4 = 4292 * (unsigned __int8)n2; /*0xffcf942d*/
  n210_1 = 210; /*0xffcf9439*/
  v5 = &a2[v4 + 38]; /*0xffcf943d*/
  do
  {
    if ( *(v5 - 18) == 0xAA )
    {
      DebugPrint(
        (int)__return_address,
        3,
        255,
        255,
        255,
        255,
        255,
        255,
        "[FailedPatternBitMask 0x%X] N%d.C%d.D%d. FAIL: R%d.CID%d.BG%d.BA%d.ROW:0x%05x.COL:0x%03x.DQ%02d.Temp%02d'C.",
        *(v5 - 1),
        (unsigned __int8)n2,
        *(v5 - 17),
        *(v5 - 16),
        *(v5 - 15),
        *(v5 - 14),
        (*(v5 - 4) >> 2) & 3,
        *(v5 - 4) & 3,
        *(_DWORD *)(v5 - 10),
        *((unsigned __int16 *)v5 - 3),
        *(v5 - 3),
        *v5);
      n2_1 = *(v5 - 2); /*0xffcf949d*/
      if ( n2_1 == 1 ) /*0xffcf94a5*/
      {
        DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, "PPR:Done(PASS)\n"); /*0xffcf94ac*/
      }
      else if ( n2_1 == 2 ) /*0xffcf94b0*/
      {
        DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, "PPR:Done(FAIL)\n"); /*0xffcf94b7*/
      }
      else
      {
        DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, "\n"); /*0xffcf94cc*/
      }
      n210 = n210_1; /*0xffcf94d1*/
    }
    v5 += 20; /*0xffcf94d8*/
    n210_1 = --n210; /*0xffcf94de*/
  }
  while ( n210 );
  DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, "** Test Result Summary **\n", (unsigned __int8)n2); /*0xffcf94fc*/
  n6 = 0; /*0xffcf9505*/
  LOBYTE(v20) = 0; /*0xffcf950a*/
  v8 = &a2[v4 + 4235]; /*0xffcf9514*/
  v9 = &a2[v4 + 4220]; /*0xffcf951c*/
  do
  {
    n2_2 = 0; /*0xffcf951e*/
    LOBYTE(n210_1) = 0; /*0xffcf9520*/
    do
    {
      v18 = v8[2]; /*0xffcf9528*/
      v17 = v8[1]; /*0xffcf952d*/
      v16 = *v8; /*0xffcf9531*/
      v15 = *(v8 - 1); /*0xffcf9536*/
      v14 = (unsigned __int8)RmtFunc35FB(*(v8 - 2)); /*0xffcf9545*/
      v11 = RmtFunc35FB(*(v8 - 3)); /*0xffcf954b*/
      DebugPrint(
        (int)__return_address,
        3,
        n2,
        v20,
        n210_1,
        255,
        255,
        255,
        " [S/N: %02d%02d_%02X%02X%02X%02X]",
        v11,
        v14,
        v15,
        v16,
        v17,
        v18);
      v12 = *v9; /*0xffcf9576*/
      if ( *v9 ) /*0xffcf9576*/
      {
        switch ( v12 ) /*0xffcf9589*/
        {
          case 1: /*0xffcf9589*/
            DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " Pass\n"); /*0xffcf9590*/
            break;
          case 2: /*0xffcf9589*/
            DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " Fail(PPR Disable)\n"); /*0xffcf959b*/
            break;
          case 3: /*0xffcf9589*/
            DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " Fail(PPR Pass)\n"); /*0xffcf95a6*/
            break;
          case 4: /*0xffcf9589*/
            DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " Error Overflow\n"); /*0xffcf95b1*/
            break;
          case 5: /*0xffcf9589*/
            DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " Fail(PPR Fail)\n"); /*0xffcf95bc*/
            break;
          case 6: /*0xffcf9589*/
            DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " Test Skip (Tspd exceed 85'C)\n"); /*0xffcf95c7*/
            break;
          default:
            DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " Unknown\n"); /*0xffcf95dc*/
            break;
        }
      }
      else
      {
        DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, " ------\n"); /*0xffcf9585*/
      }
      v8 += 6; /*0xffcf95e4*/
      ++n2_2; /*0xffcf95e7*/
      ++v9; /*0xffcf95e9*/
      LOBYTE(n210_1) = n2_2; /*0xffcf95ea*/
    }
    while ( n2_2 < 2u );
    LOBYTE(v20) = ++n6; /*0xffcf95f9*/
  }
  while ( n6 < 6u );
  return DebugPrint( /*0xffcf9621*/
           (int)__return_address,
           3,
           255,
           255,
           255,
           255,
           255,
           255,
           "============================================================================================================="
           "=======================\n");
}

// Function: IioFunc9628 @ 0xffcf9628 (0x49f bytes)
// Index: 2080/2560

int __cdecl IioFunc9628(
        unsigned __int8 *__return_address,
        int a2,
        int buf,
        int n2,
        char n3,
        unsigned __int8 a6,
        unsigned __int8 a7)
{
  unsigned __int8 n6_1; // cl
  char n2_1; // bl
  int result; // eax
  int v10; // esi
  _BYTE *v11; // edx
  int v12; // edi
  int v13; // esi
  int v14; // eax
  int v15; // ecx
  int v16; // esi
  unsigned int v17; // eax
  unsigned __int8 n2_2; // cl
  int v19; // edi
  int v20; // ecx
  char v21; // al
  unsigned __int8 n0x12; // al
  char v23; // dl
  int v24; // esi
  int n15; // edx
  unsigned int v26; // edx
  unsigned __int8 v27; // cl
  int v28; // esi
  int v29; // edi
  unsigned __int8 v30; // bl
  unsigned __int8 n0x55_1; // al
  int v32; // eax
  int n0x55_2; // [esp-4h] [ebp-64h]
  unsigned __int8 n0x12_1; // [esp+12h] [ebp-4Eh]
  char v35; // [esp+13h] [ebp-4Dh]
  int n6; // [esp+14h] [ebp-4Ch]
  int v37; // [esp+18h] [ebp-48h]
  int v38; // [esp+1Ch] [ebp-44h]
  int n2_3; // [es... [9184 chars total]

// Function: IioFunc9AC7 @ 0xffcf9ac7 (0x2b9 bytes)
// Index: 2081/2560

int __cdecl IioFunc9AC7(unsigned __int8 *__return_address, int a2, int buf, int n2)
{
  unsigned __int8 n6_1; // cl
  int v5; // eax
  int n2_1; // ebp
  unsigned __int8 *v7; // edx
  unsigned __int8 v8; // al
  int v9; // ecx
  int v10; // eax
  int v11; // ebp
  int v12; // eax
  int v13; // eax
  int v14; // ebp
  int v15; // eax
  int n6; // [esp+14h] [ebp-58h]
  int v18; // [esp+18h] [ebp-54h]
  int n2_2; // [esp+1Ch] [ebp-50h]
  unsigned __int8 *v20; // [esp+28h] [ebp-44h]
  __int64 v21; // [esp+2Ch] [ebp-40h] BYREF
  _DWORD v22[9]; // [esp+34h] [ebp-38h] BYREF

  v22[0] = 0; /*0xffcf9ade*/
  v22[1] = 0; /*0xffcf9ae2*/
  v21 = 0; /*0xffcf9ae6*/
  *(_DWORD *)(buf + 24776) = 100; /*0xffcf9af5*/
  *(_BYTE *)(buf + 24774) = 1; /*0xffcf9b09*/
  *(_BYTE *)(buf + 24769) = 1; /*0xffcf9b10*/
  DebugPrint((int)__return_address, 3, n2, 255, 255, 255, 255, 255, "Test Pattern1 Parameter = %d\n", 100); /*0xffcf9b17*/
  IioFuncF5DB(__return_address, a2, buf, n2, 1); /*0xffcf9b3a*/
  if ( !*(_BYTE *)(a2 + 8601) ) /*0xffcf9b42*/
  {
    n6_1 = 0; /*0xffcf9b53*/
    v5 = 0; /*0xffcf9b55*/
    *(_BYTE *)(buf + 24775) = 1; /*0xffcf9b57*/
    n2_1 = (unsigned __int8)n2; /*0xffcf9b5e*/
    v7 = (unsigned __int8 *)(a2 + 888 * (unsigned __int8)n2 + 8609); /*0xffcf9b68*/
    LOBYTE(n6) = 0; /*0xffcf9b6a*/
    v18 = 0; /*0xffcf9b6e*/
    v20 = v7; /*0xffcf9b72*/
    do /*0xffcf9c0d*/
    {
      if ( *(v7 - 1) ) /*0xffcf9b76*/
      {
        v8 = 0; /*0xffcf9b94*/
        LOBYTE(n2_2) = 0; /*0xffcf9b96*/
        if ( *v7 ) /*0xffcf9b9a*/
        {
          v9 = a2 + 148 * (v18 + 6 * n2_1) + 8624; /*0xffcf9b9e*/
          do /*0xffcf9be7*/
          {
            v10 = 66 * v8; /*0xffcf9ba5*/
            if ( *(_BYTE *)(v10 + v9 + 2) && *(_WORD *)(v10 + v9 + 8) == 0xCE00 ) /*0xffcf9bb9*/
            {
              RmtFunc765(__return_address, n2, n6, n2_2, 0, 1u, 0); /*0xffcf9bcb*/
              v7 = v20; /*0xffcf9bd0*/
              v9 = a2 + 148 * (v18 + 6 * n2_1) + 8624; /*0xffcf9bd7*/
            }
            v8 = n2_2 + 1; /*0xffcf9bdf*/
            LOBYTE(n2_2) = v8; /*0xffcf9be1*/
          }
          while ( v8 < *v7 ); /*0xffcf9be7*/
          n6_1 = n6; /*0xffcf9be9*/
          n2_1 = (unsigned __int8)n2; /*0xffcf9bed*/
        }
        v5 = v18; /*0xffcf9bf1*/
      }
      ++n6_1; /*0xffcf9bf5*/
      v7 += 148; /*0xffcf9bf7*/
      ++v5; /*0xffcf9bfd*/
      LOBYTE(n6) = n6_1; /*0xffcf9bfe*/
      v18 = v5; /*0xffcf9c02*/
      v20 = v7; /*0xffcf9c06*/
    }
    while ( n6_1 < 6u ); /*0xffcf9c0d*/
  }
  DdrTrainFunc15A1(__return_address, n2, 0xFFu); /*0xffcf9c1a*/
  KtiFunc8C4((int)__return_address, 0xAu); /*0xffcf9c22*/
  KtiFuncF4E(v22); /*0xffcf9c2c*/
  LOBYTE(n6) = 0; /*0xffcf9c34*/
  v11 = 0; /*0xffcf9c3e*/
  do /*0xffcf9ca3*/
  {
    v12 = MiscConfigCheck(__return_address, n2, n6, 184566948); /*0xffcf9c4e*/
    v22[v11 + 2] = v12; /*0xffcf9c53*/
    MiscIoCheck(__return_address, n2, n6, 0xB0044A4u, v12 & 0x7FFFFFFF); /*0xffcf9c65*/
    v13 = MiscConfigCheck(__return_address, n2, n6, 184567556); /*0xffcf9c72*/
    v22[v11 + 8] = v13; /*0xffcf9c77*/
    MiscIoCheck(__return_address, n2, n6, 0xB004704u, v13 & 0xFDFFFFFF); /*0xffcf9c8c*/
    ++v11; /*0xffcf9c95*/
    LOBYTE(n6) = n6 + 1; /*0xffcf9c9d*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffcf9ca3*/
  if ( !IioFuncC188(__return_address, a2, buf, n2) ) /*0xffcf9cb1*/
    IioFuncCF48(__return_address, a2, buf, n2); /*0xffcf9cc1*/
  LOBYTE(n6) = 0; /*0xffcf9cc9*/
  v14 = 0; /*0xffcf9cce*/
  do /*0xffcf9d0a*/
  {
    MiscIoCheck(__return_address, n2, n6, 0xB0044A4u, v22[v14 + 2]); /*0xffcf9cdf*/
    MiscIoCheck(__return_address, n2, n6, 0xB004704u, v22[v14 + 8]); /*0xffcf9cf3*/
    ++v14; /*0xffcf9cfc*/
    LOBYTE(n6) = n6 + 1; /*0xffcf9d04*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffcf9d0a*/
  KtiFuncF4E(&v21); /*0xffcf9d11*/
  DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, "\n"); /*0xffcf9d2b*/
  v15 = KtiFuncF75((int)__return_address, v22[0], v22[1], v21, SHIDWORD(v21), 1u); /*0xffcf9d43*/
  DebugPrint((int)__return_address, 3, n2, 255, 255, 255, 255, 255, "Pattern1 Finished. Total Test Time : %ds\n", v15);
  if ( !*(_BYTE *)(a2 + 8601) ) /*0xffcf9d66*/
    *(_BYTE *)(buf + 24775) = 0; /*0xffcf9d6f*/
  return 0; /*0xffcf9d76*/
}

// Function: IioFunc9D80 @ 0xffcf9d80 (0x17 bytes)
// Index: 2082/2560

int __cdecl IioFunc9D80(unsigned __int8 *__return_address, int a2, unsigned __int8 n2)
{
  return IioFuncF8C1(__return_address, a2, n2, 0); /*0xffcf9d96*/
}

// Function: IioSecurePlatformInit @ 0xffcf9d97 (0xaca bytes)
// Index: 2083/2560

int __cdecl IioSecurePlatformInit(
        unsigned __int8 *n6,
        int a2,
        int n4,
        int n63,
        unsigned __int8 *n0x12,
        int a6,
        int *a7)
{
  int n4_1; // ebx
  unsigned __int8 *n0x12_1; // esi
  unsigned __int8 n6_1; // dl
  int v10; // ecx
  unsigned __int8 *v11; // esi
  int v12; // ecx
  unsigned __int8 *v13; // ebp
  char v14; // cl
  unsigned __int8 *v15; // esi
  unsigned __int8 v16; // al
  char *v17; // esi
  char v18; // cl
  bool v19; // al
  int v20; // ecx
  int v21; // edx
  unsigned __int16 v22; // ax
  unsigned __int8 n2a; // al
  char v24; // al
  char v25; // al
  char v26; // al
  char v27; // al
  char v28; // al
  int v29; // esi
  unsigned __int8 n6_3; // dl
  int v31; // ecx
  unsigned __int8 v32; // al
  char *v33; // ebp
  unsigned __int8 n6_4; // dl
  int v35; // ecx
  int v36; // esi
  char v37; // al
  int v38; // ecx
  unsigned int ib_1; // ecx
  unsigned __int8 *n0x12_2; // edx
  unsigned __int8 n2a_1; // al
  char *... [16771 chars total]

// Function: IioFuncA861 @ 0xffcfa861 (0xa0 bytes)
// Index: 2084/2560

char __usercall IioFuncA861@<al>(int n6@<ebx>, _BYTE *__return_address, int a3, int n2)
{
  char v4; // al
  unsigned int v5; // eax
  int v6; // ebx
  char v7; // al
  char v8; // al
  int v10; // [esp-4h] [ebp-10h]
  int v11; // [esp-4h] [ebp-10h]

  v10 = DdrTrainFunc1DF(__return_address, n2, 0, 0x7004B04u); /*0xffcfa87d*/
  v4 = DdrTrainFunc45AB((int)__return_address, n2, 0); /*0xffcfa882*/
  v5 = MailBoxFunc8E0B(n6, (int)__return_address, n2, v4, v10); /*0xffcfa890*/
  v6 = v5 >> 2; /*0xffcfa899*/
  LOBYTE(v6) = v5 & 1 | (2 * (((v5 & 2) != 0) | (2 * ((v5 & 4) != 0)))); /*0xffcfa8b5*/
  v11 = DdrTrainFunc1DF(__return_address, n2, 0, 0x7004B04u); /*0xffcfa8bf*/
  v7 = DdrTrainFunc45AB((int)__return_address, n2, 3u); /*0xffcfa8c4*/
  v8 = MailBoxFunc8E0B(v6, (int)__return_address, n2, v7, v11); /*0xffcfa8d2*/
  return v6 | (8 * (v8 & 1 | (2 * (((v8 & 2) != 0) | (2 * ((v8 & 4) != 0)))))); /*0xffcfa8f6*/
}

// Function: IioFuncA901 @ 0xffcfa901 (0x7b bytes)
// Index: 2085/2560

unsigned int __cdecl IioFuncA901(int __return_address, int n2, unsigned __int8 n6, int a4, int a5, int a6, int a7)
{
  int v7; // ecx
  int v8; // esi
  unsigned int v9; // eax
  unsigned int v10; // eax
  unsigned int result; // eax

  v7 = *(_DWORD *)(a4 + 4 * n6); /*0xffcfa90e*/
  if ( !v7 ) /*0xffcfa913*/
  {
    v8 = a6; /*0xffcfa91c*/
    *(_DWORD *)(a6 + 4 * n6) = IioTailFunc2(1u); /*0xffcfa91f*/
    v9 = IioTailFunc2(*(_DWORD *)(a5 + 4 * n6)); /*0xffcfa928*/
LABEL_6:
    *(_DWORD *)(v8 + 4 * n6 + 24) = v9; /*0xffcfa962*/
    goto LABEL_7; /*0xffcfa963*/
  }
  if ( v7 != *(_DWORD *)(a5 + 4 * n6) ) /*0xffcfa930*/
  {
    v8 = a6; /*0xffcfa952*/
    *(_DWORD *)(a6 + 4 * n6) = IioTailFunc2(v7 + 1); /*0xffcfa955*/
    v9 = IioTailFunc2(*(_DWORD *)(a4 + 4 * n6) - 1); /*0xffcfa95d*/
    goto LABEL_6; /*0xffcfa95d*/
  }
  v10 = IioTailFunc2(v7 - 1); /*0xffcfa936*/
  *(_DWORD *)(a6 + 4 * n6 + 24) = 0; /*0xffcfa93f*/
  *(_DWORD *)(a6 + 4 * n6) = v10; /*0xffcfa944*/
LABEL_7:
  result = IioTailFunc2(*(_DWORD *)(a4 + 4 * n6)); /*0xffcfa968*/
  *(_DWORD *)(a7 + 4 * n6) = result; /*0xffcfa974*/
  return result; /*0xffcfa977*/
}

// Function: IioFuncA97C @ 0xffcfa97c (0x4e bytes)
// Index: 2086/2560

int __cdecl IioFuncA97C(int __return_address, int a2, int a3)
{
  char v4; // [esp+0h] [ebp-4h]

  v4 = MemChipFuncE67E(__return_address); /*0xffcfa98d*/
  MemChipFuncEA7C(__return_address, 0); /*0xffcfa990*/
  KtiFunc296B(__return_address, a3, (_BYTE *)(4292 * (unsigned __int8)a3 + a2 + 12), 0x10C4u); /*0xffcfa9b3*/
  return MemChipFuncEA7C(__return_address, v4); /*0xffcfa9c8*/
}

// Function: IioFuncA9CA @ 0xffcfa9ca (0x7a bytes)
// Index: 2087/2560

int __cdecl IioFuncA9CA(int __return_address, int a2, char n2)
{
  unsigned __int8 n2_1; // bl
  int SocketNumber; // ebp
  int v5; // esi
  int v7; // [esp+10h] [ebp-4h]

  n2_1 = 0; /*0xffcfa9dc*/
  SocketNumber = (unsigned __int8)GetSocketNumber(__return_address); /*0xffcfa9df*/
  v5 = 0; /*0xffcfa9e2*/
  LOBYTE(v7) = 0; /*0xffcfa9e4*/
  do /*0xffcfaa3a*/
  {
    if ( ((1 << v5) & *(_DWORD *)(a2 + 8596)) != 0 && n2_1 != n2 ) /*0xffcfaa00*/
    {
      DebugPrint(__return_address, 2, 255, 255, 255, 255, 255, 255, "GetData S%d -> S%d\n", v5, SocketNumber); /*0xffcfaa15*/
      IioFuncA97C(__return_address, a2, v7); /*0xffcfaa23*/
    }
    ++n2_1; /*0xffcfaa30*/
    ++v5; /*0xffcfaa32*/
    LOBYTE(v7) = n2_1; /*0xffcfaa33*/
  }
  while ( n2_1 < 2u ); /*0xffcfaa3a*/
  return 0; /*0xffcfaa3c*/
}

// Function: IioFuncAA44 @ 0xffcfaa44 (0x3ad bytes)
// Index: 2088/2560

void __cdecl IioFuncAA44(int a1)
{
  _DWORD src[100]; // [esp+8h] [ebp-190h] BYREF

  src[0] = -242945627; /*0xffcfaa4f*/
  src[1] = -3728; /*0xffcfaa59*/
  memset(&src[2], 255, 12); /*0xffcfaa63*/
  src[5] = -242946038; /*0xffcfaa81*/
  memset(&src[6], 255, 16); /*0xffcfaa8b*/
  src[10] = -244256347; /*0xffcfaab3*/
  src[11] = -3995; /*0xffcfaabd*/
  memset(&src[12], 255, 12); /*0xffcfaac7*/
  src[15] = -244256758; /*0xffcfaae5*/
  memset(&src[16], 255, 336); /*0xffcfaaef*/
  qmemcpy((void *)(a1 + 10384), src, 0x190u); /*0xffcfade9*/
}

// Function: IioFuncADF1 @ 0xffcfadf1 (0x18e bytes)
// Index: 2089/2560

int __cdecl IioFuncADF1(
        _BYTE *__return_address,
        int a2,
        int buf,
        int n2,
        unsigned __int8 n3,
        int bufa,
        int a7,
        unsigned __int8 a8,
        unsigned __int8 a9)
{
  int result; // eax
  int v10; // ebp
  int n2_1; // edi
  int bufa_1; // edx
  unsigned __int8 n6; // bl
  int v14; // esi
  unsigned int v15; // eax
  signed int n85; // ebp
  bool v17; // cc
  int v18; // [esp+10h] [ebp-14h]
  int v19; // [esp+14h] [ebp-10h]
  int v20; // [esp+18h] [ebp-Ch]
  int n5; // [esp+1Ch] [ebp-8h] BYREF
  int v22; // [esp+20h] [ebp-4h]

  result = a2; /*0xffcfadf1*/
  if ( !*(_BYTE *)(a2 + 8601) ) /*0xffcfadf8*/
  {
    v10 = a9; /*0xffcfae09*/
    n2_1 = n2; /*0xffcfae0e*/
    bufa_1 = bufa; /*0xffcfae12*/
    LOWORD(n5) = 4; /*0xffcfae19*/
    v20 = a9; /*0xffcfae27*/
    n6 = 0; /*0xffcfae2e*/
    LOWORD(v22) = v22 & 0xF0F | 0x30; /*0xffcfae30*/
    v14 = 0; /*0xffcfae35*/
    LOBYTE(v18) = 0; /*0xffcfae37*/
    do /*0xffcfaf71*/
    {
      result = 1 << v14; /*0xffcfae40*/
      if ( ((1 << v14) & v10) != 0 ) /*0xffcfae44*/
      {
        v19 = 6 * n3; /*0xffcfae57*/
        DdrTrainFunc466A((int)__return_address, n2_1, v18, *(_BYTE *)(v14 + v19 + bufa_1), (int)&n5); /*0xffcfae6b*/
        DdrTrainFunc4A71(__return_address, n2_1, n5, v22, 5, (unsigned __int8 *)&a2); /*0xffcfae92*/
        v15 = (unsigned __int16)(25 * (((unsigned __int16)a2 >> 2) & 0x3FF)); /*0xffcfaeba*/
        n85 = v15 / 0x64; /*0xffcfaecc*/
        if ( (a2 & 0x1000) != 0 ) /*0xffcfaebc*/
          result = DebugPrint( /*0xffcfaee7*/
                     (int)__return_address,
                     3,
                     n2_1,
                     v18,
                     *(unsigned __int8 *)(v14 + v19 + bufa),
                     *(unsigned __int8 *)(v14 + v19 + a7),
                     255,
                     255,
                     "SubRank = %d, [TSOD] MTS_TEMP = -%d.%d'C\n",
                     a8,
                     v15 / 0x64,
                     v15 % 0x64);
        else
          result = DebugPrint( /*0xffcfaf26*/
                     (int)__return_address,
                     3,
                     n2_1,
                     v18,
                     *(unsigned __int8 *)(v14 + v19 + bufa),
                     *(unsigned __int8 *)(v14 + v19 + a7),
                     255,
                     255,
                     "SubRank = %d, [TSOD] MTS_TEMP = %d.%d'C\n",
                     a8,
                     v15 / 0x64,
                     v15 % 0x64);
        bufa_1 = bufa; /*0xffcfaf2b*/
        v17 = n85 <= 85; /*0xffcfaf32*/
        v10 = v20; /*0xffcfaf35*/
        if ( !v17 ) /*0xffcfaf39*/
        {
          n2_1 = n2; /*0xffcfaf3f*/
          result = 516 * (*(unsigned __int8 *)(v14 + v19 + bufa) + 2 * (v14 + 6 * (unsigned __int8)n2)); /*0xffcfaf5c*/
          *(_BYTE *)(result + buf + 2) = 1; /*0xffcfaf62*/
        }
      }
      ++n6; /*0xffcfaf67*/
      ++v14; /*0xffcfaf69*/
      LOBYTE(v18) = n6; /*0xffcfaf6a*/
    }
    while ( n6 < 6u ); /*0xffcfaf71*/
  }
  return result; /*0xffcfaf77*/
}

// Function: TsodTempRead @ 0xffcfaf7f (0x42f bytes)
// Index: 2090/2560

int __cdecl TsodTempRead(
        _BYTE *__return_address,
        int a2,
        int buf,
        int n2,
        unsigned __int8 n3,
        int bufa,
        _WORD *a7,
        unsigned __int8 a8)
{
  int v9; // esi
  unsigned __int8 n6; // dl
  int v11; // ebx
  int n0xFFFF; // eax
  int v13; // edi
  unsigned __int16 v14; // si
  __int64 v15; // rax
  int v16; // edi
  int bufa_1; // esi
  signed int n1500; // eax
  __int16 v19; // cx
  int v20; // edx
  int v21; // edi
  unsigned __int8 v22; // bl
  int v23; // eax
  int v24; // edx
  _WORD *v25; // eax
  unsigned __int16 n0x251C; // ax
  unsigned __int16 n0x251C_1; // cx
  int n11_1; // eax
  int n11; // [esp-4h] [ebp-A4h]
  int n6_1; // [esp+10h] [ebp-90h]
  unsigned __int8 v31[4]; // [esp+14h] [ebp-8Ch] BYREF
  int v32; // [esp+18h] [ebp-88h]
  int v33; // [esp+1Ch] [ebp-84h]
  int v34; // [esp+20h] [ebp-80h]
  int n5; // [esp+24h] [ebp-7Ch] BYREF
  int v36; // [esp+28h] [ebp-78h]
  int v37; // [esp+2Ch] [ebp-74h]
  _DWORD v38[14]; // [esp+30h] [ebp-70h] BYREF
  _DWORD v39[14]; // [esp+68h] [ebp-38h] BYREF

  v9 = a8; /*0xffcfaf91*/
  n6 = 0; /*0xffcfaf99*/
  LOWORD(n5) = 4; /*0xffcfaf9f*/
  v11 = 0; /*0xffcfafa4*/
  v38[0] = 290; /*0xffcfafaf*/
  v38[1] = 172; /*0xffcfafba*/
  v38[2] = 110; /*0xffcfafc2*/
  v38[3] = 74; /*0xffcfafca*/
  v38[4] = 52; /*0xffcfafd2*/
  v38[5] = 36; /*0xffcfafda*/
  v38[6] = 28; /*0xffcfafe2*/
  v38[7] = 20; /*0xffcfafea*/
  v38[8] = 18; /*0xffcfaff2*/
  v38[9] = 12; /*0xffcfaffa*/
  v38[10] = 10; /*0xffcfb002*/
  memset(&v38[11], 0, 12); /*0xffcfb00a*/
  v39[0] = 12810; /*0xffcfb016*/
  v39[1] = 8680; /*0xffcfb01e*/
  v39[2] = 6200; /*0xffcfb026*/
  v39[3] = 4580; /*0xffcfb02e*/
  v39[4] = 3480; /*0xffcfb036*/
  v39[5] = 2600; /*0xffcfb03e*/
  v39[6] = 2120; /*0xffcfb046*/
  v39[7] = 1600; /*0xffcfb051*/
  v39[8] = 1460; /*0xffcfb05c*/
  v39[9] = 1010; /*0xffcfb067*/
  v39[10] = 850; /*0xffcfb072*/
  memset(&v39[11], 0, 12); /*0xffcfb07d*/
  LOWORD(v36) = v36 & 0xF0F | 0x30; /*0xffcfb092*/
  LOBYTE(n6_1) = 0; /*0xffcfb097*/
  v37 = a8; /*0xffcfb09b*/
  v34 = 0; /*0xffcfb09f*/
  do /*0xffcfb39d*/
  {
    if ( ((1 << v11) & v9) == 0 ) /*0xffcfb0ac*/
    {
      n0xFFFF = 0xFFFF; /*0xffcfb0ae*/
      *a7 = -1; /*0xffcfb0b3*/
      goto LABEL_42; /*0xffcfb0b7*/
    }
    v33 = 6 * n3; /*0xffcfb0ce*/
    v13 = v11 + v33; /*0xffcfb0d2*/
    DdrTrainFunc466A((int)__return_address, n2, n6_1, *(_BYTE *)(v11 + v33 + bufa), (int)&n5); /*0xffcfb0f2*/
    DdrTrainFunc4A71(__return_address, n2, n5, v36, 5, v31); /*0xffcfb11c*/
    v14 = 25 * ((*(_WORD *)v31 >> 2) & 0x3FF); /*0xffcfb13d*/
    v15 = v14; /*0xffcfb147*/
    if ( (*(_WORD *)v31 & 0x1000) == 0 ) /*0xffcfb14a*/
    {
      DebugPrint( /*0xffcfb1c4*/
        (int)__return_address,
        3,
        n2,
        n6_1,
        *(unsigned __int8 *)(v13 + bufa),
        255,
        255,
        255,
        "[TSOD] MTS_TEMP = %d.%d'C\n",
        v14 / 0x64u,
        v14 % 0x64u);
      v19 = 0; /*0xffcfb1d0*/
      v32 = 0; /*0xffcfb1db*/
      v20 = 148 * (v11 + 6 * (unsigned __int8)n2); /*0xffcfb1e8*/
      v21 = 66 * *(unsigned __int8 *)(v13 + bufa); /*0xffcfb1f9*/
      v22 = *(_BYTE *)(v21 + v20 + a2 + 8654); /*0xffcfb1ff*/
      if ( v22 ) /*0xffcfb208*/
      {
        v23 = v21 + v20 + 8664; /*0xffcfb217*/
        v24 = v22; /*0xffcfb219*/
        v25 = (_WORD *)(a2 + v23); /*0xffcfb21c*/
        v19 = v32; /*0xffcfb21e*/
        do /*0xffcfb22c*/
        {
          v19 += *v25; /*0xffcfb223*/
          v25 += 4; /*0xffcfb226*/
          --v24; /*0xffcfb229*/
        }
        while ( v24 ); /*0xffcfb22c*/
        LOWORD(v32) = v19; /*0xffcfb22e*/
      }
      n0x251C = v14 - 500; /*0xffcfb245*/
      if ( (v19 & 0xFFF0u) < 0x1000 ) /*0xffcfb24b*/
        n0x251C = v14 + 500; /*0xffcfb24d*/
      n0x251C_1 = n0x251C; /*0xffcfb253*/
      if ( n0x251C >= 0xDACu ) /*0xffcfb25e*/
      {
        if ( n0x251C >= 0xFA0u ) /*0xffcfb26f*/
        {
          if ( n0x251C >= 0x1194u ) /*0xffcfb281*/
          {
            if ( n0x251C >= 0x1388u ) /*0xffcfb28f*/
            {
              if ( n0x251C >= 0x157Cu ) /*0xffcfb29d*/
              {
                if ( n0x251C >= 0x1770u ) /*0xffcfb2ab*/
                {
                  if ( n0x251C >= 0x1964u ) /*0xffcfb2b9*/
                  {
                    if ( n0x251C >= 0x1B58u ) /*0xffcfb2c7*/
                    {
                      if ( n0x251C >= 0x1D4Cu ) /*0xffcfb2d5*/
                      {
                        if ( n0x251C >= 0x1F40u ) /*0xffcfb2e3*/
                        {
                          if ( n0x251C >= 0x2134u ) /*0xffcfb2f1*/
                          {
                            if ( n0x251C >= 0x2328u ) /*0xffcfb2ff*/
                            {
                              n11_1 = 13 - (n0x251C < 0x251Cu); /*0xffcfb310*/
                              goto LABEL_38; /*0xffcfb310*/
                            }
                            n11 = 11; /*0xffcfb301*/
                          }
                          else
                          {
                            n11 = 10; /*0xffcfb2f3*/
                          }
                        }
                        else
                        {
                          n11 = 9; /*0xffcfb2e5*/
                        }
                      }
                      else
                      {
                        n11 = 8; /*0xffcfb2d7*/
                      }
                    }
                    else
                    {
                      n11 = 7; /*0xffcfb2c9*/
                    }
                  }
                  else
                  {
                    n11 = 6; /*0xffcfb2bb*/
                  }
                }
                else
                {
                  n11 = 5; /*0xffcfb2ad*/
                }
              }
              else
              {
                n11 = 4; /*0xffcfb29f*/
              }
            }
            else
            {
              n11 = 3; /*0xffcfb291*/
            }
          }
          else
          {
            n11 = 2; /*0xffcfb283*/
          }
          n11_1 = n11; /*0xffcfb303*/
        }
        else
        {
          n11_1 = 1; /*0xffcfb273*/
        }
      }
      else
      {
        n11_1 = 0; /*0xffcfb260*/
      }
LABEL_38:
      n1500 = (100 * v39[n11_1] - v38[n11_1] * (unsigned int)n0x251C_1) / 0x64; /*0xffcfb313*/
      if ( n1500 >= 1500 ) /*0xffcfb330*/
        LOWORD(n1500) = 1500; /*0xffcfb332*/
      v11 = v34; /*0xffcfb334*/
      bufa_1 = bufa; /*0xffcfb338*/
      v16 = v33; /*0xffcfb33f*/
      goto LABEL_41; /*0xffcfb33f*/
    }
    v16 = v33; /*0xffcfb14e*/
    bufa_1 = bufa; /*0xffcfb152*/
    DebugPrint( /*0xffcfb184*/
      (int)__return_address,
      3,
      n2,
      n6_1,
      *(unsigned __int8 *)(v11 + v33 + bufa),
      255,
      255,
      255,
      "[TSOD] MTS_TEMP = -%d.%d'C\n",
      (unsigned int)v15 / 0x64,
      (unsigned int)v15 % 0x64);
    LOWORD(n1500) = 0; /*0xffcfb18c*/
LABEL_41:
    *a7 = n1500; /*0xffcfb343*/
    n0xFFFF = DebugPrint( /*0xffcfb37c*/
                (int)__return_address,
                3,
                n2,
                n6_1,
                *(unsigned __int8 *)(v11 + v16 + bufa_1),
                255,
                255,
                255,
                "New Parameter = %d.%d\n",
                (unsigned __int16)n1500 / 0xAu,
                (unsigned __int16)n1500 % 0xAu);
    n6 = n6_1; /*0xffcfb381*/
    v9 = v37; /*0xffcfb388*/
LABEL_42:
    ++n6; /*0xffcfb38c*/
    ++a7; /*0xffcfb38e*/
    ++v11; /*0xffcfb391*/
    LOBYTE(n6_1) = n6; /*0xffcfb392*/
    v34 = v11; /*0xffcfb396*/
  }
  while ( n6 < 6u ); /*0xffcfb39d*/
  return n0xFFFF; /*0xffcfb3a3*/
}

// Function: IioFuncB3AE @ 0xffcfb3ae (0x76 bytes)
// Index: 2091/2560

unsigned int __cdecl IioFuncB3AE(unsigned __int8 *__return_address, int a2, int n2, int n6, char n2a)
{
  int n5; // [esp+0h] [ebp-Ch] BYREF
  unsigned __int16 v7; // [esp+4h] [ebp-8h]
  unsigned __int8 v8[4]; // [esp+8h] [ebp-4h] BYREF

  LOWORD(n5) = 4; /*0xffcfb3b7*/
  v7 = v7 & 0xF0F | 0x30; /*0xffcfb3c6*/
  DdrTrainFunc466A((int)__return_address, n2, n6, n2a, (int)&n5); /*0xffcfb3da*/
  DdrTrainFunc4A71(__return_address, n2, n5, v7, 5, v8); /*0xffcfb3ff*/
  return (unsigned __int16)(25 * ((*(_WORD *)v8 >> 2) & 0x3FF)) / 0x64u; /*0xffcfb420*/
}

// Function: IioFuncB424 @ 0xffcfb424 (0x7d bytes)
// Index: 2092/2560

char *__cdecl IioFuncB424(int *buf, unsigned __int8 n2)
{
  int n6; // ebx
  int *v3; // esi
  char *v4; // ecx
  int n2_1; // edx
  char *result; // eax
  int n32; // edi

  *((_BYTE *)buf + n2 + 31712) = 0; /*0xffcfb436*/
  n6 = 6; /*0xffcfb44a*/
  v3 = &buf[3 * n2 + 7929]; /*0xffcfb44b*/
  v4 = (char *)&buf[1548 * n2] + 2; /*0xffcfb450*/
  do /*0xffcfb49a*/
  {
    n2_1 = 2; /*0xffcfb454*/
    do /*0xffcfb495*/
    {
      *(v4 - 2) = 0; /*0xffcfb457*/
      result = v4 + 3; /*0xffcfb45b*/
      n32 = 32; /*0xffcfb45e*/
      do /*0xffcfb486*/
      {
        *(_DWORD *)(result + 3) = -1; /*0xffcfb45f*/
        result += 16; /*0xffcfb463*/
        *(_WORD *)(result - 17) = -1; /*0xffcfb466*/
        *(_DWORD *)(result - 9) = -1; /*0xffcfb46c*/
        *(_WORD *)(result - 5) = -1; /*0xffcfb473*/
        *(result - 3) = -1; /*0xffcfb479*/
        *(_WORD *)(v4 - 1) = 0; /*0xffcfb47d*/
        --n32; /*0xffcfb483*/
      }
      while ( n32 ); /*0xffcfb486*/
      v4 += 516; /*0xffcfb488*/
      *(_BYTE *)v3 = 0; /*0xffcfb48e*/
      v3 = (int *)((char *)v3 + 1); /*0xffcfb491*/
      --n2_1; /*0xffcfb492*/
    }
    while ( n2_1 ); /*0xffcfb495*/
    --n6; /*0xffcfb497*/
  }
  while ( n6 ); /*0xffcfb49a*/
  return result; /*0xffcfb49c*/
}

// Function: IioFuncB4A1 @ 0xffcfb4a1 (0x3b bytes)
// Index: 2093/2560

int __cdecl IioFuncB4A1(int a1)
{
  int v1; // ecx
  int n2; // edx
  int result; // eax
  int n210; // esi

  v1 = a1 + 21; /*0xffcfb4a9*/
  n2 = 2; /*0xffcfb4ae*/
  do /*0xffcfb4d7*/
  {
    result = v1; /*0xffcfb4af*/
    n210 = 210; /*0xffcfb4b1*/
    do /*0xffcfb4cc*/
    {
      *(_DWORD *)(result - 1) = 0; /*0xffcfb4b6*/
      result += 20; /*0xffcfb4b9*/
      *(_BYTE *)(result - 17) = 0; /*0xffcfb4bc*/
      *(_WORD *)(result - 7) = 0; /*0xffcfb4bf*/
      *(_DWORD *)(result - 13) = 0; /*0xffcfb4c3*/
      *(_BYTE *)(result - 3) = 0; /*0xffcfb4c6*/
      --n210; /*0xffcfb4c9*/
    }
    while ( n210 ); /*0xffcfb4cc*/
    v1 += 4292; /*0xffcfb4ce*/
    --n2; /*0xffcfb4d4*/
  }
  while ( n2 ); /*0xffcfb4d7*/
  return result; /*0xffcfb4d9*/
}

// Function: IioFuncB4DC @ 0xffcfb4dc (0x1ca bytes)
// Index: 2094/2560

unsigned __int8 __cdecl IioFuncB4DC(
        int __return_address,
        int a2,
        char n2,
        int buf,
        int a5,
        int a6,
        int a7,
        int a8,
        unsigned __int8 *p_n6,
        _BYTE *a10,
        int a11)
{
  char n2_1; // dl
  int v12; // edi
  int v13; // eax
  _BYTE *v14; // esi
  unsigned __int8 n2_2; // bh
  unsigned __int8 v16; // bl
  int v17; // ebp
  unsigned __int8 n6; // al
  int v19; // ecx
  unsigned __int8 n6_1; // al
  int n6_2; // ecx
  _BYTE *v22; // edi
  _BYTE *v23; // ebp
  int n2_3; // eax
  _BYTE *v25; // esi
  char n6_3; // [esp+10h] [ebp-18h]
  int v27; // [esp+14h] [ebp-14h]
  unsigned __int8 v28; // [esp+18h] [ebp-10h]
  unsigned __int8 n2_4; // [esp+1Ch] [ebp-Ch]
  int v30; // [esp+20h] [ebp-8h]
  int v31; // [esp+24h] [ebp-4h]
  int v32; // [esp+30h] [ebp+8h]
  int n2a; // [esp+34h] [ebp+Ch]
  int p_n6a; // [esp+4Ch] [ebp+24h]

  n2_1 = n2; /*0xffcfb4e3*/
  *p_n6 = 0; /*0xffcfb4e9*/
  n6_3 = 0; /*0xffcfb4f7*/
  v27 = 0; /*0xffcfb500*/
  v12 = a2 + 888 * (unsigned __int8)n2; /*0xffcfb505*/
  v31 = v12; /*0xffcfb507*/
  v30 = v12; /*0xffcfb50b*/
  do /*0xffcfb622*/
  {
    v13 = v12; /*0xffcfb50f*/
    v14 = (_BYTE *)(v12 + 8656); /*0xffcfb511*/
    n2_2 = 0; /*0xffcfb51b*/
    n2_4 = 0; /*0xffcfb51d*/
    v32 = v12; /*0xffcfb521*/
    do /*0xffcfb5fe*/
    {
      if ( *(v14 - 30) ) /*0xffcfb525*/
      {
        v16 = 0; /*0xffcfb52f*/
        v28 = 0; /*0xffcfb531*/
        if ( *(v14 - 32) ) /*0xffcfb535*/
        {
          v17 = v32; /*0xffcfb53e*/
          do /*0xffcfb5e1*/
          {
            if ( !KtiFunc89E9(__return_address, n2_1, n6_3, n2_4, v28, 1) ) /*0xffcfb555*/
            {
              n6 = *(_BYTE *)(v17 + 8 * v16 + 8659); /*0xffcfb568*/
              if ( n6 > *p_n6 ) /*0xffcfb571*/
                *p_n6 = n6; /*0xffcfb573*/
              v19 = 6 * n6 + v27; /*0xffcfb583*/
              *(_BYTE *)(v19 + buf) = v14[1]; /*0xffcfb588*/
              v17 = v32; /*0xffcfb58e*/
              *(_BYTE *)(v19 + a5) = *(v14 - 29); /*0xffcfb592*/
              *(_BYTE *)(v19 + a6) = 4; /*0xffcfb599*/
              if ( (*v14 & 4) != 0 && (v16 & 1) != 0 ) /*0xffcfb5a5*/
                --*(_BYTE *)(v19 + a5); /*0xffcfb5a7*/
              if ( (*v14 & 8) != 0 && (v16 & 1) != 0 ) /*0xffcfb5b2*/
                *(_BYTE *)(v19 + a5) -= 2; /*0xffcfb5b4*/
              *(_BYTE *)(v19 + a8) = n2_2; /*0xffcfb5c0*/
              *(_BYTE *)(v19 + a11) = v16; /*0xffcfb5c7*/
              *(_BYTE *)(v19 + a7) = *(v14 - 1) == 0; /*0xffcfb5d1*/
            }
            n2_1 = n2; /*0xffcfb5d4*/
            v28 = ++v16; /*0xffcfb5da*/
          }
          while ( v16 < *(v14 - 32) ); /*0xffcfb5e1*/
          v13 = v32; /*0xffcfb5e7*/
        }
      }
      ++n2_2; /*0xffcfb5eb*/
      v13 += 66; /*0xffcfb5ed*/
      v14 += 66; /*0xffcfb5f0*/
      n2_4 = n2_2; /*0xffcfb5f3*/
      v32 = v13; /*0xffcfb5f7*/
    }
    while ( n2_2 < 2u ); /*0xffcfb5fe*/
    n6_1 = n6_3 + 1; /*0xffcfb60c*/
    ++v27; /*0xffcfb60e*/
    v12 = v30 + 148; /*0xffcfb612*/
    n6_3 = n6_1; /*0xffcfb618*/
    v30 += 148; /*0xffcfb61c*/
  }
  while ( n6_1 < 6u ); /*0xffcfb622*/
  if ( a10 ) /*0xffcfb632*/
  {
    n6_2 = 6; /*0xffcfb636*/
    v22 = (_BYTE *)(v31 + 8610); /*0xffcfb637*/
    *a10 = 0; /*0xffcfb63d*/
    v23 = (_BYTE *)(v31 + 8630); /*0xffcfb640*/
    p_n6a = 6; /*0xffcfb646*/
    do /*0xffcfb69c*/
    {
      if ( *v22 == 1 ) /*0xffcfb64e*/
      {
        *a10 = 1; /*0xffcfb650*/
      }
      else if ( *v22 == 2 ) /*0xffcfb656*/
      {
        n2_3 = 2; /*0xffcfb65a*/
        v25 = v23; /*0xffcfb65b*/
        n2a = 2; /*0xffcfb65d*/
        do /*0xffcfb686*/
        {
          if ( *(v25 - 4) ) /*0xffcfb661*/
          {
            n2_3 = n2a; /*0xffcfb672*/
            if ( (unsigned __int8)*a10 < (unsigned __int8)*v25 - 1 ) /*0xffcfb676*/
              *a10 = *v25 - 1; /*0xffcfb67a*/
          }
          v25 += 66; /*0xffcfb67c*/
          n2a = --n2_3; /*0xffcfb682*/
        }
        while ( n2_3 ); /*0xffcfb686*/
        n6_2 = p_n6a; /*0xffcfb688*/
      }
      n6_1 = -108; /*0xffcfb68c*/
      v23 += 148; /*0xffcfb691*/
      v22 += 148; /*0xffcfb693*/
      p_n6a = --n6_2; /*0xffcfb698*/
    }
    while ( n6_2 ); /*0xffcfb69c*/
  }
  return n6_1; /*0xffcfb69e*/
}

// Function: IioFuncB6A6 @ 0xffcfb6a6 (0x4e bytes)
// Index: 2095/2560

unsigned int __cdecl IioFuncB6A6(int a1, unsigned int a2)
{
  unsigned int v2; // edx

  v2 = a2 & 0xFFFFFE07 | (2 * (a2 & 0xA8)) | (a2 >> 1) & 0xA8; /*0xffcfb6c5*/
  if ( *(_WORD *)(a1 + 8602) != 11 ) /*0xffcfb6d3*/
    return (4 * (a2 & 0x800)) | (a2 >> 2) & 0x800 | a2 & 0xFFFFD607 | (2 * (a2 & 0xA8)) & 0xD7FF | (a2 >> 1) & 0xA8; /*0xffcfb6ee*/
  return v2; /*0xffcfb6f2*/
}

// Function: IIOFuncB6F4 @ 0xffcfb6f4 (0x427 bytes)
// Index: 2096/2560

_BYTE *__cdecl IIOFuncB6F4(_BYTE *__return_address, int a2, int buf, int n2)
{
  int v4; // edx
  int n2_1; // ebx
  unsigned __int8 n6; // cl
  int v7; // ebp
  _BYTE *result; // eax
  int v9; // edi
  int v10; // edx
  char n2_3; // al
  int v12; // esi
  _WORD *v13; // ecx
  unsigned __int8 n0x90; // bl
  char n8; // bh
  unsigned __int8 *__@BFHJLD_?ACGIKME_1; // edi
  unsigned __int8 n0x90_1; // ch
  char v18; // bh
  int v19; // esi
  int n4; // ebp
  char *v21; // edx
  unsigned __int8 n0x90_3; // al
  unsigned int n0x90_4; // ecx
  char v24; // al
  int v25; // ecx
  int v26; // ecx
  int v27; // eax
  int n36; // esi
  int v29; // edx
  _BYTE *v30; // edx
  unsigned __int8 *v31; // ecx
  unsigned __int8 v32; // al
  char v33; // al
  unsigned __int8 v34; // al
  char v35; // al
  _BYTE *v36; // edx
  char *v37; // ecx
  char v38; // al
  unsigned __int8 n0x90_2; // [esp+13h] [ebp-A9h]
  char n8_1; // [esp+14h] [ebp-A8h]
  unsigned __int8 n0x90_5; // [esp+15h] [ebp-A7h]
  _WORD ... [9741 chars total]

// Function: IioFuncBB1B @ 0xffcfbb1b (0x367 bytes)
// Index: 2097/2560

int __cdecl IioFuncBB1B(
        unsigned __int8 *n6,
        int a2,
        int buf,
        int n2,
        int a5,
        int a6,
        unsigned __int8 a7,
        unsigned __int8 a8,
        unsigned __int8 a9,
        unsigned int a10,
        unsigned __int8 n0x40)
{
  int v11; // eax
  unsigned __int8 v12; // al
  BOOL v13; // ebx
  int v15; // [esp-14h] [ebp-B8h]
  int v16; // [esp+10h] [ebp-94h]
  int v17; // [esp+18h] [ebp-8Ch] BYREF
  int v18; // [esp+1Ch] [ebp-88h]
  int n255; // [esp+20h] [ebp-84h]
  int v20; // [esp+24h] [ebp-80h]
  int v21; // [esp+28h] [ebp-7Ch]
  int v22; // [esp+2Ch] [ebp-78h]
  int v23; // [esp+30h] [ebp-74h]
  int v24; // [esp+34h] [ebp-70h]
  int v25; // [esp+38h] [ebp-6Ch]
  int v26; // [esp+3Ch] [ebp-68h]
  int n0x12; // [esp+40h] [ebp-64h]
  unsigned __int8 n0x12_4[72]; // [esp+44h] [ebp-60h] BYREF
  int v29[6]; // [esp+8Ch] [ebp-18h] BYREF
  unsigned int v30; // [esp+CCh] [ebp+28h]

  v25 = (unsigned __int8)a6; /*0xffcfbb43*/
  v21 = 66 * (unsigned __int8)a6; /*0xffcfbb5c*/
  v20 = a2 + 148 * ((unsigned __int8)a5 + 6 * (unsigned __int8)n2) + 8624; /*0xffcfbb70*/
  n0x12 = (2 << (*(_BYTE *)(v21 + v20 + 3) - 1)) - 1; /*0xffcfbb86*/
  v26 = n0x12 >> 31; /*0xffcfbb9b*/
  v16 = 12 * (unsigned __int8)a5; /*0xffcfbba6*/
  n0x12_4[v16] = a6; /*0xffcfbbaa*/
  n0x12_4[v16 + 1] = a8; /*0xffcfbbae*/
  n0x12_4[v16 + 2] = a7; /*0xffcfbbb2*/
  v17 = 0; /*0xffcfbbb8*/
  v18 = 0; /*0xffcfbbbc*/
  n255 = 0; /*0xffcfbbc0*/
  if ( n0x40 == 98 ) /*0xffcfbbc7*/
  {
    v17 = -1; /*0xffcfbbc9*/
    v18 = -1; /*0xffcfbbce*/
    n255 = 255; /*0xffcfbbd3*/
  }
  else if ( n0x40 >= 0x20u ) /*0xffcfbbe2*/
  {
    if ( n0x40 >= 0x40u ) /*0xffcfbbf4*/
      n255 = 1 << (n0x40 - 64); /*0xffcfbc06*/
    else
      v18 = 1 << (n0x40 - 32); /*0xffcfbbfb*/
  }
  else
  {
    v17 = 1 << n0x40; /*0xffcfbbe8*/
  }
  v11 = RmtFunc2CE4((int)n6, n2, a5, a6, (unsigned int *)&v17); /*0xffcfbc26*/
  v22 = v11; /*0xffcfbc36*/
  *(_DWORD *)&n0x12_4[12 * (unsigned __int8)a5 + 3] = v11; /*0xffcfbc3e*/
  *(_DWORD *)&n0x12_4[12 * (unsigned __int8)a5 + 8] = a10; /*0xffcfbc46*/
  n0x12_4[v16 + 7] = a9; /*0xffcfbc57*/
  v23 = a7; /*0xffcfbc61*/
  v24 = a8; /*0xffcfbc68*/
  DebugPrint(
    (int)n6,
    3,
    255,
    255,
    255,
    255,
    255,
    255,
    "Fail Information : ch = %d, dimm = %d, rank = %d, cid = %d, bank = 0x%x, addr = 0x%x, DRAM mask = 0x%x\n",
    (unsigned __int8)a5,
    v25,
    a8,
    a7,
    a9,
    a10,
    v11);
  DebugPrint( /*0xffcfbcc4*/
    (int)n6,
    3,
    255,
    255,
    255,
    255,
    255,
    255,
    "numRowbit = %d, MaxRow = 0x%x.\n",
    *(unsigned __int8 *)(v21 + v20 + 3),
    n0x12);
  if ( (a8 & 1) != 0 && *(_BYTE *)(v21 + v20 + 1) )
  {
    v30 = IioFuncB6A6(a2, a10) | a10 & 0xFF0000; /*0xffcfbd0c*/
    *(_DWORD *)&n0x12_4[12 * (unsigned __int8)a5 + 8] = v30; /*0xffcfbd13*/
    v12 = KtiFuncEAE2((int)n6, a9); /*0xffcfbd17*/
    v15 = v22; /*0xffcfbd1c*/
    n0x12_4[12 * (unsigned __int8)a5 + 7] = v12; /*0xffcfbd2b*/
    DebugPrint(
      (int)n6,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "Mirrored Fail Information : ch = %d, dimm = %d, rank = %d, cid = %d, bank = %d, addr = 0x%x, DRAM mask = 0x%x\n",
      (unsigned __int8)a5,
      v25,
      v24,
      v23,
      v12,
      v30,
      v15);
  }
  if ( (unsigned __int8)(n0x40 - 32) <= 0x1Fu && !*(_BYTE *)(a2 + 8601) && *(_WORD *)(a2 + 8602) == 12 ) /*0xffcfbd7f*/
  {
    DebugPrint((int)n6, 3, 255, 255, 255, 255, 255, 255, "Execute address inversion for SIDE_B.\n"); /*0xffcfbd98*/
    DebugPrint( /*0xffcfbdc2*/
      (int)n6,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "Current Bank = %d, Address = 0x%x.\n",
      n0x12_4[12 * (unsigned __int8)a5 + 7],
      *(_DWORD *)&n0x12_4[12 * (unsigned __int8)a5 + 8]);
    IioFunc7E48(a2, n2, __PAIR64__(v26, n0x12), &n0x12_4[v16 + 7], (int *)&n0x12_4[v16 + 8]); /*0xffcfbde4*/
    DebugPrint( /*0xffcfbe0b*/
      (int)n6,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "Inversioned Bank = %d, Address = 0x%x.\n",
      n0x12_4[12 * (unsigned __int8)a5 + 7],
      *(_DWORD *)&n0x12_4[12 * (unsigned __int8)a5 + 8]);
  }
  MailBoxFuncEF71(n6, n2, 63); /*0xffcfbe1d*/
  IioSecurePlatformInit(n6, a2, n2, 1 << a5, n0x12_4, 1, v29); /*0xffcfbe40*/
  v13 = v29[(unsigned __int8)a5] != 0; /*0xffcfbe5a*/
  MailBoxFunc2B5B((int)n6, n2); /*0xffcfbe5d*/
  KtiFuncD59F(n6, n2, 63); /*0xffcfbe6c*/
  return v13 + 1; /*0xffcfbe77*/
}

// Function: IioFuncBE82 @ 0xffcfbe82 (0x306 bytes)
// Index: 2098/2560

int __cdecl IioFuncBE82(unsigned __int8 *__return_address, _BYTE *a2, int n2, int *buf)
{
  unsigned __int8 n6; // bh
  _BYTE *v5; // ebp
  int n2_1; // ecx
  _BYTE *v7; // eax
  int v8; // edi
  int v9; // eax
  unsigned __int8 n2_3; // dl
  int v11; // ecx
  _WORD *v12; // eax
  char v13; // bl
  int v14; // ebp
  int v15; // edx
  int *v16; // ecx
  int n32; // eax
  int v18; // eax
  char v20; // [esp+13h] [ebp-49h]
  _WORD *v21; // [esp+14h] [ebp-48h]
  int *v22; // [esp+18h] [ebp-44h]
  int n2_2; // [esp+1Ch] [ebp-40h]
  int v24; // [esp+20h] [ebp-3Ch]
  int v25; // [esp+24h] [ebp-38h]
  int n32_1; // [esp+28h] [ebp-34h]
  unsigned int v27; // [esp+34h] [ebp-28h]
  int v28; // [esp+38h] [ebp-24h]
  _BYTE *v29; // [esp+3Ch] [ebp-20h]
  int v30; // [esp+40h] [ebp-1Ch]
  unsigned __int8 n0x40; // [esp+4Ch] [ebp-10h]
  unsigned __int8 v32; // [esp+50h] [ebp-Ch]
  unsigned __int8 v33; // [esp+54h] [ebp-8h]
  unsigned __int8 v34; // [esp+58h] [ebp-4h]

  n6 = 0; /*0xffcfbe8c*/
  DebugPrint( /*0xffcfbea0*/
    (int)__return_address,
    3,
    255,
    255,
    255,
    255,
    255,
    255,
    "STEP Test was done. Check fail information and execute on boot dram repair.\n");
  DebugPrint( /*0xffcfbeb3*/
    (int)__return_address,
    3,
    255,
    255,
    255,
    255,
    255,
    255,
    "Repair option enabled. Check fail data for repair.\n");
  v5 = a2; /*0xffcfbec1*/
  n2_1 = (unsigned __int8)n2; /*0xffcfbecb*/
  LOBYTE(v28) = 0; /*0xffcfbed8*/
  v7 = &a2[888 * (unsigned __int8)n2 + 8608]; /*0xffcfbee1*/
  v8 = 0; /*0xffcfbee3*/
  v29 = v7; /*0xffcfbee5*/
  do
  {
    if ( *v7 )
    {
      v9 = 6 * n2_1; /*0xffcfbef2*/
      n2_3 = 0; /*0xffcfbef5*/
      v11 = 0; /*0xffcfbef7*/
      LOBYTE(n2_2) = 0; /*0xffcfbef9*/
      v24 = 0; /*0xffcfbefd*/
      v30 = v8 + v9; /*0xffcfbf03*/
      v12 = &v5[148 * v8 + 8632 + 148 * v9]; /*0xffcfbf12*/
      v21 = v12; /*0xffcfbf14*/
      do
      {
        if ( *((_BYTE *)v12 - 6) == 1 && *v12 == 0xCE00 )
        {
          v13 = 0; /*0xffcfbf34*/
          v20 = 0; /*0xffcfbf36*/
          v14 = 129 * (v11 + 2 * v30); /*0xffcfbf3d*/
          if ( BYTE1(buf[v14]) != 1 && BYTE2(buf[v14]) != 1 && LOBYTE(buf[v14]) == 1 )
          {
            DebugPrint( /*0xffcfbf80*/
              (int)__return_address,
              3,
              255,
              255,
              255,
              255,
              255,
              255,
              "Check socket %d ch%d dimm%d fail data.\n",
              (unsigned __int8)n2,
              v8,
              v11);
            v15 = 0; /*0xffcfbf8f*/
            v16 = &buf[v14 + 1]; /*0xffcfbf94*/
            v25 = 0; /*0xffcfbf96*/
            n32 = 32; /*0xffcfbfa0*/
            v22 = v16; /*0xffcfbfa1*/
            n32_1 = 32; /*0xffcfbfa5*/
            do
            {
              if ( *(_BYTE *)v16 != 0xFF )
              {
                DebugPrint( /*0xffcfbfc6*/
                  (int)__return_address,
                  3,
                  255,
                  255,
                  255,
                  255,
                  255,
                  255,
                  "fail index %d has fail data.\n",
                  v15);
                v27 = v22[1]; /*0xffcfbfda*/
                n0x40 = *((_BYTE *)v22 + 11); /*0xffcfbfe4*/
                v34 = *((_BYTE *)v22 + 1); /*0xffcfbff2*/
                v32 = *((_BYTE *)v22 + 10); /*0xffcfbfff*/
                v33 = *(_BYTE *)v22; /*0xffcfc014*/
                if ( v27 + n0x40 + v32 + *(unsigned __int8 *)v22 + v34 )
                {
                  DebugPrint(
                    (int)__return_address,
                    3,
                    255,
                    255,
                    255,
                    255,
                    255,
                    255,
                    "Execute PPR : N%d.C%d.D%d.R%d Sub-R%d.Row 0x%05x.BG%d.BA%d.DQ%02d\n",
                    (unsigned __int8)n2,
                    v8,
                    v24,
                    *(unsigned __int8 *)v22,
                    v34,
                    v27,
                    (v32 >> 2) & 3,
                    v32 & 3,
                    n0x40);
                  v18 = IioFuncBB1B(__return_address, (int)a2, (int)buf, n2, v28, n2_2, v34, v33, v32, v27, n0x40); /*0xffcfc0c0*/
                  v16 = v22; /*0xffcfc0c5*/
                  v13 = 1; /*0xffcfc0d2*/
                  v20 = 1; /*0xffcfc0d4*/
                  *((_BYTE *)v22 + 13) = (v18 != 1) + 1; /*0xffcfc0dd*/
                }
                else
                {
                  DebugPrint( /*0xffcfc02f*/
                    (int)__return_address,
                    3,
                    255,
                    255,
                    255,
                    255,
                    255,
                    255,
                    "Not valid DRAM fail information.\n");
                  v16 = v22; /*0xffcfc034*/
                  v13 = v20; /*0xffcfc03b*/
                }
                n32 = n32_1; /*0xffcfc0e0*/
                v15 = v25; /*0xffcfc0e4*/
              }
              ++v15; /*0xffcfc0e8*/
              v16 += 4; /*0xffcfc0e9*/
              --n32; /*0xffcfc0ec*/
              v25 = v15; /*0xffcfc0ef*/
              v22 = v16; /*0xffcfc0f3*/
              n32_1 = n32; /*0xffcfc0f7*/
            }
            while ( n32 );
            MailBoxFuncEF71(__return_address, n2, 63); /*0xffcfc108*/
            if ( v13 == 1 ) /*0xffcfc113*/
              DebugPrint( /*0xffcfc12a*/
                (int)__return_address,
                3,
                255,
                255,
                255,
                255,
                255,
                255,
                "Channel %d Dimm %d PPR executed.\n",
                v8,
                v24);
            n2_3 = n2_2; /*0xffcfc132*/
            v11 = v24; /*0xffcfc136*/
          }
          v12 = v21; /*0xffcfc13a*/
        }
        ++n2_3; /*0xffcfc13e*/
        v12 += 33; /*0xffcfc140*/
        ++v11; /*0xffcfc143*/
        LOBYTE(n2_2) = n2_3; /*0xffcfc144*/
        v24 = v11; /*0xffcfc148*/
        v21 = v12; /*0xffcfc14c*/
      }
      while ( n2_3 < 2u );
      v7 = v29; /*0xffcfc159*/
      n2_1 = (unsigned __int8)n2; /*0xffcfc15d*/
      v5 = a2; /*0xffcfc161*/
    }
    ++n6; /*0xffcfc165*/
    v7 += 148; /*0xffcfc167*/
    ++v8; /*0xffcfc16c*/
    LOBYTE(v28) = n6; /*0xffcfc16d*/
    v29 = v7; /*0xffcfc171*/
  }
  while ( n6 < 6u );
  return 0; /*0xffcfc17e*/
}

// Function: IioFuncC188 @ 0xffcfc188 (0x1d0 bytes)
// Index: 2099/2560

int __cdecl IioFuncC188(unsigned __int8 *__return_address, int a2, int buf, unsigned __int8 n2)
{
  unsigned __int8 n2_1; // cl
  unsigned __int8 n6; // bl
  unsigned int *v6; // ebp
  _BYTE *v7; // edi
  unsigned int v8; // esi
  unsigned int v9; // eax
  unsigned __int8 n6_1; // [esp+8h] [ebp-74h]
  _DWORD v12[28]; // [esp+Ch] [ebp-70h]

  n2_1 = n2; /*0xffcfc18b*/
  n6 = 0; /*0xffcfc19b*/
  v6 = (unsigned int *)(buf + 31764); /*0xffcfc1a0*/
  v12[0] = 25000; /*0xffcfc1bb*/
  v12[1] = 20000; /*0xffcfc1c3*/
  v12[2] = 18750; /*0xffcfc1cb*/
  v12[3] = 16667; /*0xffcfc1d3*/
  v12[4] = 15000; /*0xffcfc1db*/
  v7 = (_BYTE *)(888 * n2 + a2 + 8608); /*0xffcfc1e3*/
  v12[5] = 14286; /*0xffcfc1e5*/
  v12[6] = 12500; /*0xffcfc1ed*/
  v12[7] = 11111; /*0xffcfc1f5*/
  v12[8] = 10714; /*0xffcfc1fd*/
  v12[9] = 10000; /*0xffcfc205*/
  v12[10] = 9375; /*0xffcfc20d*/
  v12[11] = 9091; /*0xffcfc215*/
  v12[12] = 8333; /*0xffcfc21d*/
  v12[13] = 7692; /*0xffcfc225*/
  v12[14] = 7500; /*0xffcfc22d*/
  v12[15] = 7143; /*0xffcfc235*/
  v12[16] = 6818; /*0xffcfc23d*/
  v12[17] = 6667; /*0xffcfc245*/
  v12[18] = 6250; /*0xffcfc24d*/
  v12[19] = 5883; /*0xffcfc255*/
  v12[20] = 5769; /*0xffcfc25d*/
  v12[21] = 5556; /*0xffcfc265*/
  v12[22] = 5358; /*0xffcfc26d*/
  v12[23] = 5264; /*0xffcfc275*/
  v12[24] = 5000; /*0xffcfc27d*/
  v12[25] = 4762; /*0xffcfc285*/
  v12[26] = 4689; /*0xffcfc28d*/
  v12[27] = 4546; /*0xffcfc295*/
  n6_1 = 0; /*0xffcfc2a0*/
  do /*0xffcfc348*/
  {
    if ( *v7 ) /*0xffcfc2a4*/
    {
      v8 = MiscConfigCheck(__return_address, n2_1, n6_1, 184566432); /*0xffcfc2cc*/
      v9 = 100000 /*0xffcfc32a*/
         * *(_DWORD *)(buf + 24776)
         / (4
          * v12[*(unsigned __int8 *)(a2 + 8604)]
          * (3 * (HIWORD(v8) & 7)
           + (((unsigned int)MiscConfigCheck(__return_address, n2, n6_1, 184566280) >> 27) & 7)
           + 16)
          / 0x64);
      n2_1 = n2; /*0xffcfc32c*/
      *v6 = v9; /*0xffcfc333*/
    }
    ++n6; /*0xffcfc336*/
    ++v6; /*0xffcfc338*/
    v7 += 148; /*0xffcfc33b*/
    n6_1 = n6; /*0xffcfc341*/
  }
  while ( n6 < 6u ); /*0xffcfc348*/
  return 0; /*0xffcfc350*/
}

// Function: IioFuncC358 @ 0xffcfc358 (0x64 bytes)
// Index: 2100/2560

int __cdecl IioFuncC358(unsigned __int8 *__return_address, _BYTE *a2, int n2)
{
  int result; // eax

  if ( (char)*a2 < 0 && *((_DWORD *)a2 + 2149) > 1u ) /*0xffcfc36b*/
  {
    KtiFunc2F44((int)__return_address); /*0xffcfc371*/
    DebugPrint( /*0xffcfc392*/
      (int)__return_address,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "Socket%d waitting for sync\n",
      (unsigned __int8)n2);
    if ( (_BYTE)n2 ) /*0xffcfc39c*/
      return IioFuncEA8B(__return_address, a2, n2); /*0xffcfc3b0*/
    else
      return IioFuncA9CA((int)__return_address, (int)a2, 0); /*0xffcfc3a4*/
  }
  return result; /*0xffcfc3b9*/
}

// Function: IioFuncC3BC @ 0xffcfc3bc (0x24a bytes)
// Index: 2101/2560

int __cdecl IioFuncC3BC(unsigned __int8 *__return_address, int n4, int n63, int n0x12, int a5, int n6)
{
  unsigned __int8 n6_3; // bl
  unsigned __int8 n6_1; // dl
  int v8; // esi
  bool v9; // zf
  int v10; // ebp
  int v11; // edi
  char v12; // bp
  unsigned __int8 *v13; // esi
  unsigned __int8 n6_2; // dl
  int v15; // ecx
  unsigned __int8 *v16; // ebp
  int v17; // eax
  unsigned __int8 *v18; // esi
  char v19; // bp
  int v21; // [esp+10h] [ebp-Ch]
  int v22; // [esp+10h] [ebp-Ch]
  int v23; // [esp+14h] [ebp-8h]

  n6_3 = 0; /*0xffcfc3c5*/
  n6_1 = 0; /*0xffcfc3cc*/
  v8 = n0x12 + 7; /*0xffcfc3ce*/
  v21 = 0; /*0xffcfc3d1*/
  v9 = (_BYTE)n6 == 0; /*0xffcfc3d5*/
  v10 = ~n63; /*0xffcfc3d9*/
  v11 = 0; /*0xffcfc3dc*/
  LOBYTE(n6) = 0; /*0xffcfc3de*/
  if ( v9 ) /*0xffcfc3e2*/
  {
    v23 = ~n63; /*0xffcfc4af*/
    do /*0xffcfc501*/
    {
      if ( ((1 << v11) & v10) == 0 ) /*0xffcfc4bc*/
      {
        MailBoxFuncF015( /*0xffcfc4e8*/
          __return_address,
          n4,
          n6,
          *(unsigned __int8 *)(v8 - 7),
          *(unsigned __int8 *)(v8 - 6),
          *(_BYTE *)(v8 - 5),
          *(_DWORD *)(v8 - 4),
          *(_BYTE *)v8,
          *(_DWORD *)(v8 + 1),
          4352);
        n6_1 = n6; /*0xffcfc4ed*/
      }
      ++n6_1; /*0xffcfc4f4*/
      v8 += 12; /*0xffcfc4f6*/
      ++v11; /*0xffcfc4f9*/
      LOBYTE(n6) = n6_1; /*0xffcfc4fa*/
    }
    while ( n6_1 < 6u ); /*0xffcfc501*/
    MailBoxFuncD466(v11, (int)__return_address, n4, n63, 0x1100u); /*0xffcfc514*/
    n6_2 = 0; /*0xffcfc521*/
    v15 = 0; /*0xffcfc523*/
    v16 = (unsigned __int8 *)(n0x12 + 1); /*0xffcfc529*/
    LOBYTE(n6) = 0; /*0xffcfc52b*/
    v22 = 0; /*0xffcfc538*/
    do /*0xffcfc588*/
    {
      if ( ((1 << v15) & v23) == 0 ) /*0xffcfc543*/
      {
        DebugPrint( /*0xffcfc567*/
          (int)__return_address,
          2,
          n4,
          n6,
          *(v16 - 1),
          *v16,
          255,
          255,
          "PprErrInjTest - Row:%d Read done\n",
          *(_DWORD *)(v16 + 7));
        n6_2 = n6; /*0xffcfc56c*/
        v15 = v22; /*0xffcfc573*/
      }
      ++n6_2; /*0xffcfc577*/
      v16 += 12; /*0xffcfc579*/
      ++v15; /*0xffcfc57c*/
      LOBYTE(n6) = n6_2; /*0xffcfc57d*/
      v22 = v15; /*0xffcfc581*/
    }
    while ( n6_2 < 6u ); /*0xffcfc588*/
    v17 = KtiFuncBC82(__return_address, n4, n63, a5); /*0xffcfc59a*/
    v18 = (unsigned __int8 *)(n0x12 + 1); /*0xffcfc59f*/
    v21 = v17; /*0xffcfc5a6*/
    v19 = 0; /*0xffcfc5aa*/
    LOBYTE(n6) = 0; /*0xffcfc5ac*/
    do /*0xffcfc5f8*/
    {
      if ( ((1 << v19) & v23) == 0 ) /*0xffcfc5bb*/
      {
        DebugPrint( /*0xffcfc5df*/
          (int)__return_address,
          2,
          n4,
          n6,
          *(v18 - 1),
          *v18,
          255,
          255,
          "PprErrInjTest - Row:%d Read Test status :%x\n",
          *(_DWORD *)(v18 + 7),
          v17);
        v17 = v21; /*0xffcfc5e4*/
      }
      ++n6_3; /*0xffcfc5eb*/
      v18 += 12; /*0xffcfc5ed*/
      ++v19; /*0xffcfc5f0*/
      LOBYTE(n6) = n6_3; /*0xffcfc5f1*/
    }
    while ( n6_3 < 6u ); /*0xffcfc5f8*/
  }
  else
  {
    do /*0xffcfc43a*/
    {
      if ( ((1 << v11) & v10) == 0 ) /*0xffcfc3f5*/
      {
        MailBoxFuncF015( /*0xffcfc421*/
          __return_address,
          n4,
          n6,
          *(unsigned __int8 *)(v8 - 7),
          *(unsigned __int8 *)(v8 - 6),
          *(_BYTE *)(v8 - 5),
          *(_DWORD *)(v8 - 4),
          *(_BYTE *)v8,
          *(_DWORD *)(v8 + 1),
          4608);
        n6_1 = n6; /*0xffcfc426*/
      }
      ++n6_1; /*0xffcfc42d*/
      v8 += 12; /*0xffcfc42f*/
      ++v11; /*0xffcfc432*/
      LOBYTE(n6) = n6_1; /*0xffcfc433*/
    }
    while ( n6_1 < 6u ); /*0xffcfc43a*/
    MailBoxFuncD466(v11, (int)__return_address, n4, n63, 0x1200u); /*0xffcfc44d*/
    LOBYTE(n6) = 0; /*0xffcfc459*/
    v12 = 0; /*0xffcfc45d*/
    v13 = (unsigned __int8 *)(n0x12 + 1); /*0xffcfc45f*/
    do /*0xffcfc4a8*/
    {
      if ( ((1 << v12) & ~n63) == 0 ) /*0xffcfc470*/
        DebugPrint( /*0xffcfc493*/
          (int)__return_address,
          2,
          n4,
          n6,
          *(v13 - 1),
          *v13,
          255,
          255,
          "PprErrInjTest - Row:%d Write all 1s done\n",
          *(_DWORD *)(v13 + 7));
      ++n6_3; /*0xffcfc49b*/
      v13 += 12; /*0xffcfc49d*/
      ++v12; /*0xffcfc4a0*/
      LOBYTE(n6) = n6_3; /*0xffcfc4a1*/
    }
    while ( n6_3 < 6u ); /*0xffcfc4a8*/
  }
  return v21; /*0xffcfc5fe*/
}

// Function: IioFuncC606 @ 0xffcfc606 (0xe7 bytes)
// Index: 2102/2560

int __cdecl IioFuncC606(unsigned __int8 *__return_address, _BYTE *a2, int n2)
{
  _BYTE *v3; // edi
  int n2_1; // eax
  int v5; // eax
  int n6; // [esp+10h] [ebp-8h]
  unsigned __int8 n2_3; // [esp+10h] [ebp-8h]
  int n2_2; // [esp+14h] [ebp-4h]

  ProcCommonFuncFBF1((int)__return_address); /*0xffcfc611*/
  DdrTrainFunc15A1(__return_address, n2, 0xFFu); /*0xffcfc621*/
  n2_2 = 0; /*0xffcfc62b*/
  LOBYTE(n6) = 0; /*0xffcfc62f*/
  do /*0xffcfc676*/
  {
    if ( !ProcCommonFunc24D8(__return_address, n2, n6) ) /*0xffcfc639*/
    {
      ProcCommonFunc3D3D(__return_address, n2, n6, 1); /*0xffcfc64d*/
      KtiFunc8C4((int)__return_address, 1u); /*0xffcfc655*/
      ProcCommonFunc3D3D(__return_address, n2, n6, 0); /*0xffcfc662*/
    }
    LOBYTE(n6) = n6 + 1; /*0xffcfc670*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffcfc676*/
  n2_3 = 0; /*0xffcfc68d*/
  v3 = &a2[4292 * (unsigned __int8)n2 + 15]; /*0xffcfc692*/
  n2_1 = 0; /*0xffcfc694*/
  do /*0xffcfc6cb*/
  {
    if ( *v3 ) /*0xffcfc696*/
    {
      v5 = MailBoxFunc8E0B(n2, (int)__return_address, n2, n2_3, 117459068); /*0xffcfc6a2*/
      MailBoxFunc8FC5((int)__return_address, n2, n2_3, 117459068, v5 & 0xFFFFFFFE); /*0xffcfc6b2*/
      n2_1 = n2_2; /*0xffcfc6b7*/
    }
    LOBYTE(n2_1) = n2_1 + 1; /*0xffcfc6be*/
    ++v3; /*0xffcfc6c0*/
    n2_2 = n2_1; /*0xffcfc6c1*/
    n2_3 = n2_1; /*0xffcfc6c5*/
  }
  while ( (unsigned __int8)n2_1 < 2u ); /*0xffcfc6cb*/
  MailBoxFunc2B5B((int)__return_address, n2); /*0xffcfc6cf*/
  KtiFuncD59F(__return_address, n2, 63); /*0xffcfc6d8*/
  return ProcCommonFuncFBFD((int)__return_address); /*0xffcfc6e6*/
}

// Function: IioFuncC6ED @ 0xffcfc6ed (0x368 bytes)
// Index: 2103/2560

unsigned __int8 __cdecl IioFuncC6ED(unsigned __int8 *__return_address, _BYTE *a2, unsigned __int8 n2, _BYTE *a4)
{
  int *v4; // edi
  unsigned __int8 n6; // al
  int v6; // [esp+10h] [ebp-8h]
  char v7; // [esp+14h] [ebp-4h]

  LOBYTE(v6) = 0; /*0xffcfc6ff*/
  v4 = (int *)(a4 + 4); /*0xffcfc704*/
  do /*0xffcfca48*/
  {
    v7 = DdrTrainFunc45AB((int)__return_address, n2, v6); /*0xffcfc716*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459720, 4, v4[8]); /*0xffcfc724*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459884, 4, *v4); /*0xffcfc735*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460304, 4, v4[1]); /*0xffcfc747*/
    MiscIoCheck(__return_address, n2, v6, 0xB004538u, v4[2]); /*0xffcfc75a*/
    MiscIoCheck(__return_address, n2, v6, 0xB00453Cu, v4[3]); /*0xffcfc76a*/
    MiscIoCheck(__return_address, n2, v6, 0xB004544u, v4[4]); /*0xffcfc77a*/
    MiscIoCheck(__return_address, n2, v6, 0xB014530u, v4[5]); /*0xffcfc78a*/
    MiscIoCheck(__return_address, n2, v6, 0xB014550u, v4[6]); /*0xffcfc79d*/
    MiscIoCheck(__return_address, n2, v6, 0xB014554u, v4[7]); /*0xffcfc7ad*/
    MiscIoCheck(__return_address, n2, v6, 0xB014530u, v4[5]); /*0xffcfc7bd*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459984, 80, v4[9]); /*0xffcfc7cf*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459992, 80, v4[10]); /*0xffcfc7e4*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460000, 80, v4[11]); /*0xffcfc7f6*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460008, 80, v4[12]); /*0xffcfc808*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460016, 80, v4[13]); /*0xffcfc81d*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460024, 80, v4[14]); /*0xffcfc82f*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460032, 80, v4[15]); /*0xffcfc841*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460040, 80, v4[16]); /*0xffcfc856*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460048, 80, v4[17]); /*0xffcfc868*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460056, 80, v4[18]); /*0xffcfc87a*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459772, 4, v4[19]); /*0xffcfc88f*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460328, 4, v4[20]); /*0xffcfc8a1*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459788, 4, v4[21]); /*0xffcfc8b3*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117460344, 4, v4[22]); /*0xffcfc8c8*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459820, 4, v4[23]); /*0xffcfc8da*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459836, 8, v4[24]); /*0xffcfc8ec*/
    MailBoxFunc902D((int)__return_address, n2, v6, 117459840, 8, v4[25]); /*0xffcfc901*/
    MiscIoCheck(__return_address, n2, v6, 0xB0044A0u, v4[26]); /*0xffcfc911*/
    MiscIoCheck(__return_address, n2, v6, 0xB014534u, v4[27]); /*0xffcfc921*/
    MiscIoCheck(__return_address, n2, v6, 0xB014524u, v4[29]); /*0xffcfc934*/
    MiscIoCheck(__return_address, n2, v6, 0xB01450Cu, v4[30]); /*0xffcfc944*/
    MiscIoCheck(__return_address, n2, v6, 0xB014510u, v4[31]); /*0xffcfc954*/
    MiscIoCheck(__return_address, n2, v6, 0xB014514u, v4[32]); /*0xffcfc967*/
    MiscIoCheck(__return_address, n2, v6, 0xB014518u, v4[33]); /*0xffcfc97d*/
    MiscIoCheck(__return_address, n2, v6, 0xB01451Cu, v4[34]); /*0xffcfc990*/
    MiscIoCheck(__return_address, n2, v6, 0xB014520u, v4[35]); /*0xffcfc9a3*/
    MiscIoCheck(__return_address, n2, v6, 0xB004548u, v4[28]); /*0xffcfc9b3*/
    MiscIoCheck(__return_address, n2, v6, 0xB00454Cu, v4[36]); /*0xffcfc9c9*/
    MiscIoCheck(__return_address, n2, v6, 0xB004550u, v4[37]); /*0xffcfc9dc*/
    MiscIoCheck(__return_address, n2, v6, 0xB004554u, v4[38]); /*0xffcfc9ef*/
    MiscIoCheck(__return_address, n2, v6, 0xB004500u, v4[39]); /*0xffcfca02*/
    MiscIoCheck(__return_address, n2, v6, 0xB004540u, v4[40]); /*0xffcfca18*/
    MailBoxFunc8FC5((int)__return_address, n2, v7, 117459712, v4[41]); /*0xffcfca2e*/
    v4 += 43; /*0xffcfca37*/
    n6 = v6 + 1; /*0xffcfca40*/
    LOBYTE(v6) = n6; /*0xffcfca42*/
  }
  while ( n6 < 6u ); /*0xffcfca48*/
  return n6; /*0xffcfca4e*/
}

// Function: IioFuncCA55 @ 0xffcfca55 (0x103 bytes)
// Index: 2104/2560

int __cdecl IioFuncCA55(unsigned __int8 *__return_address, int a2, int n4, int n6, int n2)
{
  int n4_1; // ecx
  int n6_1; // edx
  int v8; // edi
  unsigned __int8 n2_2; // bh
  int v10; // esi
  unsigned __int8 i_1; // bl
  int v12; // eax
  int n2_1; // [esp+10h] [ebp-10h]
  unsigned __int8 i; // [esp+28h] [ebp+8h]

  n4_1 = n4; /*0xffcfca58*/
  n6_1 = n6; /*0xffcfca5c*/
  v8 = 148 * ((unsigned __int8)n6 + 6 * (unsigned __int8)n4); /*0xffcfca7b*/
  n2_2 = 0; /*0xffcfca81*/
  LOBYTE(n2_1) = 0; /*0xffcfca83*/
  v10 = v8 + a2; /*0xffcfca87*/
  do /*0xffcfcb03*/
  {
    if ( *(_BYTE *)(v10 + 8626) ) /*0xffcfca8a*/
    {
      i_1 = 0; /*0xffcfca9b*/
      for ( i = 0; i_1 < *(_BYTE *)(4292 * (unsigned __int8)n4 + a2 + 18); i = i_1 ) /*0xffcfcaa5*/
      {
        if ( *(_BYTE *)(v10 + 8 * i_1 + 8658) ) /*0xffcfcaae*/
        {
          RmtFunc349(__return_address, n4_1, n6_1, n2_1, i, *(unsigned __int16 *)(v8 + 8 * i_1 + a2 + 8660), 0); /*0xffcfcad4*/
          n4_1 = n4; /*0xffcfcad9*/
          n6_1 = n6; /*0xffcfcae0*/
        }
        ++i_1; /*0xffcfcae8*/
      }
    }
    ++n2_2; /*0xffcfcaf4*/
    v8 += 66; /*0xffcfcaf6*/
    v10 += 66; /*0xffcfcaf9*/
    LOBYTE(n2_1) = n2_2; /*0xffcfcafc*/
  }
  while ( n2_2 < 2u ); /*0xffcfcb03*/
  v12 = MiscConfigCheck(__return_address, n4_1, n6_1, 184566276); /*0xffcfcb11*/
  return MiscIoCheck( /*0xffcfcb50*/
           __return_address,
           n4,
           n6,
           0xB004204u,
           v12 & 0xE0FFFF0F
         | (16
          * (*(_DWORD *)(n2 + 8 * (unsigned __int8)n6 + 4) & 0xF
           | ((*(_DWORD *)(n2 + 8 * (unsigned __int8)n6) & 0x1F) << 20))));
}

// Function: DimmRowTestPpr @ 0xffcfcb58 (0x3f0 bytes)
// Index: 2105/2560

int __cdecl DimmRowTestPpr(unsigned __int8 *__return_address, int n4, int n63, unsigned __int8 *n0x12, _BYTE *a5)
{
  unsigned __int8 n6_1; // dl
  int v6; // ecx
  unsigned __int8 *v7; // esi
  unsigned __int8 n6_2; // dl
  int v9; // ecx
  unsigned __int8 *v10; // esi
  unsigned __int8 *v11; // esi
  unsigned __int8 n6_3; // dl
  int v13; // ecx
  unsigned __int8 *v14; // esi
  unsigned __int8 n6_4; // dl
  int v16; // ecx
  int v17; // esi
  unsigned __int8 *v18; // esi
  unsigned __int8 n6_5; // dl
  int v20; // ecx
  unsigned __int8 *v21; // esi
  unsigned __int8 n6_6; // dl
  int v23; // ecx
  unsigned __int8 n6_7; // dl
  char v25; // si
  unsigned __int8 *v26; // edx
  unsigned __int8 n6_8; // bl
  char v28; // si
  int n6; // [esp+10h] [ebp-14h]
  int v31; // [esp+14h] [ebp-10h]
  unsigned __int8 *v32; // [esp+18h] [ebp-Ch]
  int v33; // [esp+1Ch] [ebp-8h]
  unsigned __int8 *v34; // [esp+1Ch] [ebp-8h]
  int v35; // [esp+20h] [ebp-4h]
  int v36; // [esp+20h] [ebp-4h]
  int v37; // [esp+20h] [ebp-4h]
  int v38; // [esp+20h] [ebp-4h]
  int v39; // [esp+20h] [ebp-4h]

  n6_1 = 0; /*0xffcfcb69*/
  v31 = ~n63; /*0xffcfcb6b*/
  v6 = 0; /*0xffcfcb6f*/
  v7 = n0x12 + 7; /*0xffcfcb82*/
  LOBYTE(n6) = 0; /*0xffcfcb84*/
  v33 = 0; /*0xffcfcb88*/
  v32 = n0x12 + 7; /*0xffcfcb8c*/
  do /*0xffcfcbde*/
  {
    if ( ((1 << v6) & ~n63) == 0 ) /*0xffcfcb97*/
    {
      MailBoxFuncF015( /*0xffcfcbbd*/
        __return_address,
        n4,
        n6,
        *(v7 - 7),
        *(v7 - 6),
        *(v7 - 5),
        *((_DWORD *)v7 - 1),
        *v7,
        *(_DWORD *)(v7 + 1),
        3584);
      n6_1 = n6; /*0xffcfcbc2*/
      v6 = v33; /*0xffcfcbc9*/
    }
    ++n6_1; /*0xffcfcbcd*/
    v7 += 12; /*0xffcfcbcf*/
    ++v6; /*0xffcfcbd2*/
    LOBYTE(n6) = n6_1; /*0xffcfcbd3*/
    v33 = v6; /*0xffcfcbd7*/
  }
  while ( n6_1 < 6u ); /*0xffcfcbde*/
  MailBoxFuncD466((int)__return_address, (int)__return_address, n4, n63, 0xC00u); /*0xffcfcbeb*/
  n6_2 = 0; /*0xffcfcbf9*/
  v9 = 0; /*0xffcfcbfb*/
  LOBYTE(n6) = 0; /*0xffcfcbfd*/
  v35 = 0; /*0xffcfcc06*/
  v10 = n0x12 + 1; /*0xffcfcc0a*/
  v34 = n0x12 + 1; /*0xffcfcc0c*/
  do
  {
    if ( ((1 << v9) & v31) == 0 )
    {
      DebugPrint(
        (int)__return_address,
        2,
        n4,
        n6,
        *(v10 - 1),
        *v10,
        255,
        255,
        "RowTestPPR - Row: 0x%x Write all 1s done\n",
        *(_DWORD *)(v10 + 7));
      n6_2 = n6; /*0xffcfcc3e*/
      v9 = v35; /*0xffcfcc45*/
    }
    ++n6_2; /*0xffcfcc49*/
    v10 += 12; /*0xffcfcc4b*/
    ++v9; /*0xffcfcc4e*/
    LOBYTE(n6) = n6_2; /*0xffcfcc4f*/
    v35 = v9; /*0xffcfcc53*/
  }
  while ( n6_2 < 6u );
  v11 = n0x12 + 7; /*0xffcfcc5c*/
  n6_3 = 0; /*0xffcfcc62*/
  v13 = 0; /*0xffcfcc64*/
  LOBYTE(n6) = 0; /*0xffcfcc6a*/
  v36 = 0; /*0xffcfcc6e*/
  do /*0xffcfccc0*/
  {
    if ( ((1 << v13) & v31) == 0 ) /*0xffcfcc79*/
    {
      MailBoxFuncF015( /*0xffcfcc9f*/
        __return_address,
        n4,
        n6,
        *(v11 - 7),
        *(v11 - 6),
        *(v11 - 5),
        *((_DWORD *)v11 - 1),
        *v11,
        *(_DWORD *)(v11 + 1),
        3328);
      n6_3 = n6; /*0xffcfcca4*/
      v13 = v36; /*0xffcfccab*/
    }
    ++n6_3; /*0xffcfccaf*/
    v11 += 12; /*0xffcfccb1*/
    ++v13; /*0xffcfccb4*/
    LOBYTE(n6) = n6_3; /*0xffcfccb5*/
    v36 = v13; /*0xffcfccb9*/
  }
  while ( n6_3 < 6u ); /*0xffcfccc0*/
  MailBoxFuncD466((int)__return_address, (int)__return_address, n4, n63, 0xD00u); /*0xffcfcccd*/
  v14 = n0x12 + 1; /*0xffcfccd2*/
  n6_4 = 0; /*0xffcfccdb*/
  v16 = 0; /*0xffcfccdd*/
  LOBYTE(n6) = 0; /*0xffcfcce3*/
  v37 = 0; /*0xffcfcce7*/
  do
  {
    if ( ((1 << v16) & v31) == 0 )
    {
      DebugPrint(
        (int)__return_address,
        2,
        n4,
        n6,
        *(v14 - 1),
        *v14,
        255,
        255,
        "RowTestPPR - Row: 0x%x Read all 1s done\n",
        *(_DWORD *)(v14 + 7));
      n6_4 = n6; /*0xffcfcd19*/
      v16 = v37; /*0xffcfcd20*/
    }
    ++n6_4; /*0xffcfcd24*/
    v14 += 12; /*0xffcfcd26*/
    ++v16; /*0xffcfcd29*/
    LOBYTE(n6) = n6_4; /*0xffcfcd2a*/
    v37 = v16; /*0xffcfcd2e*/
  }
  while ( n6_4 < 6u );
  v17 = KtiFuncBC82(__return_address, n4, n63, (int)a5); /*0xffcfcd46*/
  DebugPrint((int)__return_address, 2, n4, 255, 255, 255, 255, 255, "RowTestPPR - Row Read Test status :%x\n", v17); /*0xffcfcd5c*/
  if ( !v17 )
  {
    v18 = n0x12 + 7; /*0xffcfcd6f*/
    n6_5 = 0; /*0xffcfcd73*/
    v20 = 0; /*0xffcfcd75*/
    LOBYTE(n6) = 0; /*0xffcfcd77*/
    v38 = 0; /*0xffcfcd7f*/
    do /*0xffcfcdd1*/
    {
      if ( ((1 << v20) & v31) == 0 ) /*0xffcfcd8a*/
      {
        MailBoxFuncF015( /*0xffcfcdb0*/
          __return_address,
          n4,
          n6,
          *(v18 - 7),
          *(v18 - 6),
          *(v18 - 5),
          *((_DWORD *)v18 - 1),
          *v18,
          *(_DWORD *)(v18 + 1),
          2560);
        n6_5 = n6; /*0xffcfcdb5*/
        v20 = v38; /*0xffcfcdbc*/
      }
      ++n6_5; /*0xffcfcdc0*/
      v18 += 12; /*0xffcfcdc2*/
      ++v20; /*0xffcfcdc5*/
      LOBYTE(n6) = n6_5; /*0xffcfcdc6*/
      v38 = v20; /*0xffcfcdca*/
    }
    while ( n6_5 < 6u ); /*0xffcfcdd1*/
    MailBoxFuncD466((int)__return_address, (int)__return_address, n4, n63, 0xA00u); /*0xffcfcdde*/
    v21 = n0x12 + 1; /*0xffcfcde3*/
    n6_6 = 0; /*0xffcfcdec*/
    v23 = 0; /*0xffcfcdee*/
    LOBYTE(n6) = 0; /*0xffcfcdf4*/
    v39 = 0; /*0xffcfcdf8*/
    do
    {
      if ( ((1 << v23) & v31) == 0 )
      {
        DebugPrint(
          (int)__return_address,
          2,
          n4,
          n6,
          *(v21 - 1),
          *v21,
          255,
          255,
          "RowTestPPR - Row: 0x%x Write all 0s done\n",
          *(_DWORD *)(v21 + 7));
        n6_6 = n6; /*0xffcfce2a*/
        v23 = v39; /*0xffcfce31*/
      }
      ++n6_6; /*0xffcfce35*/
      v21 += 12; /*0xffcfce37*/
      ++v23; /*0xffcfce3a*/
      LOBYTE(n6) = n6_6; /*0xffcfce3b*/
      v39 = v23; /*0xffcfce3f*/
    }
    while ( n6_6 < 6u );
    n6_7 = 0; /*0xffcfce4a*/
    v25 = 0; /*0xffcfce4c*/
    LOBYTE(n6) = 0; /*0xffcfce52*/
    do /*0xffcfcea4*/
    {
      if ( ((1 << v25) & v31) == 0 ) /*0xffcfce5f*/
      {
        MailBoxFuncF015( /*0xffcfce89*/
          __return_address,
          n4,
          n6,
          *(v32 - 7),
          *(v32 - 6),
          *(v32 - 5),
          *((_DWORD *)v32 - 1),
          *v32,
          *(_DWORD *)(v32 + 1),
          2304);
        n6_7 = n6; /*0xffcfce8e*/
      }
      v32 += 12; /*0xffcfce95*/
      ++n6_7; /*0xffcfce9a*/
      ++v25; /*0xffcfce9c*/
      LOBYTE(n6) = n6_7; /*0xffcfce9d*/
    }
    while ( n6_7 < 6u ); /*0xffcfcea4*/
    MailBoxFuncD466((int)__return_address, (int)__return_address, n4, n63, 0x900u); /*0xffcfceb1*/
    v26 = n0x12 + 1; /*0xffcfceb6*/
    n6_8 = 0; /*0xffcfcebd*/
    LOBYTE(n6) = 0; /*0xffcfcebf*/
    v28 = 0; /*0xffcfcec3*/
    do
    {
      if ( ((1 << v28) & v31) == 0 )
      {
        DebugPrint(
          (int)__return_address,
          2,
          n4,
          n6,
          *(v26 - 1),
          *v26,
          255,
          255,
          "RowTestPPR - Row: 0x%x Read all 0s done\n",
          *(_DWORD *)(v26 + 7));
        v26 = v34; /*0xffcfcef7*/
      }
      ++n6_8; /*0xffcfcefe*/
      v26 += 12; /*0xffcfcf00*/
      ++v28; /*0xffcfcf03*/
      LOBYTE(n6) = n6_8; /*0xffcfcf04*/
      v34 = v26; /*0xffcfcf08*/
    }
    while ( n6_8 < 6u );
    v17 = KtiFuncBC82(__return_address, n4, n63, (int)a5); /*0xffcfcf20*/
    DebugPrint((int)__return_address, 2, n4, 255, 255, 255, 255, 255, "RowTestPPR - Row Read Test status :%x\n", v17); /*0xffcfcf36*/
  }
  return v17; /*0xffcfcf3e*/
}

// Function: IioFuncCF48 @ 0xffcfcf48 (0x899 bytes)
// Index: 2106/2560

unsigned __int8 __cdecl IioFuncCF48(unsigned __int8 *__return_address, int a2, int buf, int n2)
{
  int __return_address_1; // ebx
  _BYTE *v5; // esi
  unsigned __int8 n6_1; // al
  _BYTE *v7; // edi
  unsigned __int8 n6a_1; // al
  unsigned __int8 p_n6_1; // al
  int v10; // eax
  int n6_2; // edx
  int v12; // ecx
  int v13; // eax
  int n6_3; // ebp
  int v15; // esi
  _BYTE *v16; // edi
  int n6_16; // ebp
  int v18; // esi
  int n6_4; // edx
  int v20; // ebp
  unsigned __int8 v21; // si
  int __return_address_3; // ebx
  int v23; // edx
  int n6_6; // edi
  int v25; // esi
  bool v26; // zf
  _BYTE *v27; // edx
  _BYTE *v28; // esi
  char v29; // cl
  unsigned int n6_7; // edx
  int v31; // eax
  unsigned int n6_15; // edx
  char *n6_14; // eax
  int v34; // esi
  unsigned __int8 *n6_17; // edi
  int v36; // eax
  unsigned int v37; // eax
  unsigned int *v38; // edi
  int n2_2; // ebx
  int __return_address_5; // edi
  int *n6_10; // esi
  unsigned __int8 n6c_1; // dl
  int v43;... [17383 chars total]

// Function: IioFuncD7E1 @ 0xffcfd7e1 (0x77f bytes)
// Index: 2107/2560

int __cdecl IioFuncD7E1(unsigned __int8 *__return_address, int a2, int buf, int n2)
{
  int n2_1; // ebx
  unsigned __int8 n6_1; // al
  _BYTE *v6; // edi
  unsigned __int8 p_n6_1; // al
  int v8; // eax
  int n6_2; // edx
  int v10; // ecx
  int v11; // ebp
  int v12; // eax
  int n6_4; // esi
  int v14; // edi
  unsigned __int8 *__return_address_1; // esi
  int v16; // edi
  char *v17; // edx
  int n2_4; // ebp
  int n6_5; // eax
  int n2_5; // ebx
  int v21; // edx
  int n6_7; // ebp
  int v23; // edi
  bool v24; // zf
  char *v25; // edi
  char *v26; // edx
  char *v27; // ebp
  int v28; // ecx
  int n6_8; // ebx
  _BYTE *v30; // esi
  char v31; // cl
  int buf_6; // edi
  unsigned __int8 n2_6; // al
  char v34; // cl
  unsigned __int8 n6_10; // dl
  _BYTE *bufa_2; // edi
  int v37; // ecx
  unsigned __int8 v38; // di
  __int16 v39; // dx
  unsigned __int8 *v40; // edi
  unsigned int v41; // edi
  unsigned __int8 n2_7; // [esp+13h] [ebp-3F5h]
  int n3; // [esp+14h] [ebp-3F4h]
  int... [14405 chars total]

// Function: IioFuncDF60 @ 0xffcfdf60 (0x6f4 bytes)
// Index: 2108/2560

unsigned __int8 __cdecl IioFuncDF60(unsigned __int8 *__return_address, int a2, int buf, int n2)
{
  unsigned __int8 n6_1; // bl
  int n2_1; // eax
  _BYTE *v6; // esi
  int v7; // ebx
  unsigned __int8 p_n6_1; // al
  int v9; // eax
  int n6_2; // edx
  int v11; // ecx
  int n6_3; // ebp
  unsigned __int8 *__return_address_1; // ebp
  char *v14; // edx
  int v15; // esi
  int n2_3; // edi
  int n6_4; // eax
  int n2_4; // edi
  int v19; // edx
  int n6_6; // edi
  char *v21; // esi
  char *v22; // edx
  _BYTE *v23; // ebp
  char *v24; // edi
  int v25; // ecx
  char v26; // cl
  char v27; // cl
  unsigned __int8 n0x10_1; // al
  int buf_6; // edx
  _BYTE *v30; // ecx
  unsigned __int8 n6_8; // dl
  _BYTE *bufa_2; // esi
  char v33; // bl
  int v34; // ebx
  unsigned __int8 i; // bl
  int v36; // eax
  int v37; // esi
  int v38; // [esp+10h] [ebp-408h]
  char *v39; // [esp+14h] [ebp-404h]
  int v40; // [esp+14h] [ebp-404h]
  int v41; // [esp+14h] [ebp-404h]
  char v42; // [esp+1Bh] [ebp... [12882 chars total]

// Function: IioFuncE654 @ 0xffcfe654 (0x97 bytes)
// Index: 2109/2560

char __cdecl IioFuncE654(
        int __return_address,
        int a2,
        int buf,
        unsigned __int8 n2,
        unsigned __int8 n6,
        unsigned __int8 a6,
        unsigned __int8 n0xD2,
        _BYTE *n0x20)
{
  int v8; // esi
  int v9; // edi
  int v10; // edx
  char result; // al

  v8 = 4292 * n2; /*0xffcfe663*/
  v9 = a2 + 20 * n0xD2; /*0xffcfe673*/
  *(_BYTE *)(v8 + v9 + 21) = n6; /*0xffcfe676*/
  *(_BYTE *)(v8 + v9 + 22) = a6; /*0xffcfe67f*/
  *(_BYTE *)(v8 + v9 + 20) = -86; /*0xffcfe686*/
  v10 = buf + 516 * (a6 + 2 * (n6 + 6 * n2)); /*0xffcfe69a*/
  *(_BYTE *)(v8 + v9 + 24) = *(_BYTE *)(v10 + 16 * (unsigned __int8)n0x20 + 5); /*0xffcfe6a1*/
  *(_BYTE *)(v8 + v9 + 23) = *(_BYTE *)(v10 + 16 * (unsigned __int8)n0x20 + 4); /*0xffcfe6a9*/
  *(_BYTE *)(v8 + v9 + 34) = *(_BYTE *)(v10 + 16 * (unsigned __int8)n0x20 + 14); /*0xffcfe6b1*/
  *(_DWORD *)(v8 + v9 + 28) = *(_DWORD *)(v10 + 16 * (unsigned __int8)n0x20 + 8); /*0xffcfe6b9*/
  *(_WORD *)(v8 + v9 + 32) = *(_WORD *)(v10 + 16 * (unsigned __int8)n0x20 + 12); /*0xffcfe6c2*/
  *(_BYTE *)(v8 + v9 + 35) = *(_BYTE *)(v10 + 16 * (unsigned __int8)n0x20 + 15); /*0xffcfe6cb*/
  *(_BYTE *)(v8 + v9 + 36) = *(_BYTE *)(v10 + 16 * (unsigned __int8)n0x20 + 17); /*0xffcfe6d3*/
  *(_BYTE *)(v8 + v9 + 37) = *(_BYTE *)(v10 + 16 * (unsigned __int8)n0x20 + 16); /*0xffcfe6db*/
  result = *(_BYTE *)(v10 + 16 * (unsigned __int8)n0x20 + 18); /*0xffcfe6df*/
  *(_BYTE *)(v8 + v9 + 38) = result; /*0xffcfe6e3*/
  return result; /*0xffcfe6e7*/
}

// Function: IioDmiInitPcie @ 0xffcfe6eb (0x352 bytes)
// Index: 2110/2560

unsigned __int8 __cdecl IioDmiInitPcie(unsigned __int8 *__return_address, int a2, int n2, int a4)
{
  int *v4; // edi
  unsigned __int8 n6; // al
  unsigned __int8 n6_1; // [esp+10h] [ebp-8h]
  char v7; // [esp+14h] [ebp-4h]

  n6_1 = 0; /*0xffcfe6fd*/
  v4 = (int *)(a4 + 4); /*0xffcfe702*/
  do /*0xffcfea30*/
  {
    v7 = DdrTrainFunc45AB((int)__return_address, n2, n6_1); /*0xffcfe71b*/
    v4[8] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459720, 4); /*0xffcfe72e*/
    *v4 = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459884, 4); /*0xffcfe740*/
    v4[1] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460304, 4); /*0xffcfe74a*/
    v4[2] = MiscConfigCheck(__return_address, n2, n6_1, 184567096); /*0xffcfe762*/
    v4[3] = MiscConfigCheck(__return_address, n2, n6_1, 184567100); /*0xffcfe772*/
    v4[4] = MiscConfigCheck(__return_address, n2, n6_1, 184567108); /*0xffcfe782*/
    v4[5] = MiscConfigCheck(__return_address, n2, n6_1, 184632624); /*0xffcfe78d*/
    v4[6] = MiscConfigCheck(__return_address, n2, n6_1, 184632656); /*0xffcfe7a5*/
    v4[7] = MiscConfigCheck(__return_address, n2, n6_1, 184632660); /*0xffcfe7b7*/
    v4[9] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459984, 80); /*0xffcfe7c9*/
    v4[10] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459992, 80); /*0xffcfe7d4*/
    v4[11] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460000, 80); /*0xffcfe7f0*/
    v4[12] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460008, 80); /*0xffcfe802*/
    v4[13] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460016, 80); /*0xffcfe814*/
    v4[14] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460024, 80); /*0xffcfe81f*/
    v4[15] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460032, 80); /*0xffcfe83b*/
    v4[16] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460040, 80); /*0xffcfe84d*/
    v4[17] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460048, 80); /*0xffcfe85f*/
    v4[18] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460056, 80); /*0xffcfe86a*/
    v4[19] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459772, 4); /*0xffcfe886*/
    v4[20] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460328, 4); /*0xffcfe898*/
    v4[21] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459788, 4); /*0xffcfe8a7*/
    v4[22] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117460344, 4); /*0xffcfe8b5*/
    v4[23] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459820, 4); /*0xffcfe8d1*/
    v4[24] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459836, 8); /*0xffcfe8e3*/
    v4[25] = MailBoxFunc8E6B((int)__return_address, n2, n6_1, 117459840, 8); /*0xffcfe8f3*/
    v4[26] = MiscConfigCheck(__return_address, n2, n6_1, 184566944); /*0xffcfe8fe*/
    v4[27] = MiscConfigCheck(__return_address, n2, n6_1, 184632628); /*0xffcfe916*/
    v4[29] = MiscConfigCheck(__return_address, n2, n6_1, 184632612); /*0xffcfe926*/
    v4[30] = MiscConfigCheck(__return_address, n2, n6_1, 184632588); /*0xffcfe936*/
    v4[31] = MiscConfigCheck(__return_address, n2, n6_1, 184632592); /*0xffcfe941*/
    v4[32] = MiscConfigCheck(__return_address, n2, n6_1, 184632596); /*0xffcfe959*/
    v4[33] = MiscConfigCheck(__return_address, n2, n6_1, 184632600); /*0xffcfe96c*/
    v4[34] = MiscConfigCheck(__return_address, n2, n6_1, 184632604); /*0xffcfe97f*/
    v4[35] = MiscConfigCheck(__return_address, n2, n6_1, 184632608); /*0xffcfe98d*/
    v4[28] = MiscConfigCheck(__return_address, n2, n6_1, 184567112); /*0xffcfe9a8*/
    v4[36] = MiscConfigCheck(__return_address, n2, n6_1, 184567116); /*0xffcfe9b8*/
    v4[37] = MiscConfigCheck(__return_address, n2, n6_1, 184567120); /*0xffcfe9cb*/
    v4[38] = MiscConfigCheck(__return_address, n2, n6_1, 184567124); /*0xffcfe9d9*/
    v4[39] = MiscConfigCheck(__return_address, n2, n6_1, 184567040); /*0xffcfe9f4*/
    v4[40] = MiscConfigCheck(__return_address, n2, n6_1, 184567104); /*0xffcfea08*/
    v4[41] = MailBoxFunc8E0B((int)__return_address, (int)__return_address, n2, v7, 117459712); /*0xffcfea15*/
    v4 += 43; /*0xffcfea1b*/
    n6 = n6_1 + 1; /*0xffcfea28*/
    n6_1 = n6; /*0xffcfea2a*/
  }
  while ( n6 < 6u ); /*0xffcfea30*/
  return n6; /*0xffcfea36*/
}

// Function: IioFuncEA3D @ 0xffcfea3d (0x4e bytes)
// Index: 2111/2560

int __cdecl IioFuncEA3D(int __return_address, int a2, unsigned __int8 n2)
{
  unsigned __int8 v4; // [esp+0h] [ebp-4h]

  v4 = MemChipFuncE67E(__return_address); /*0xffcfea4e*/
  MemChipFuncEA7C(__return_address, 0); /*0xffcfea51*/
  KtiFunc2D6B(__return_address, n2, (char *)(4292 * n2 + a2 + 12), 0x10C4u); /*0xffcfea74*/
  return MemChipFuncEA7C(__return_address, v4); /*0xffcfea89*/
}

// Function: IioFuncEA8B @ 0xffcfea8b (0x45 bytes)
// Index: 2112/2560

int __cdecl IioFuncEA8B(unsigned __int8 *__return_address, _BYTE *a2, int n2)
{
  unsigned __int8 SocketNumber; // al

  SocketNumber = GetSocketNumber((int)__return_address); /*0xffcfea92*/
  DebugPrint( /*0xffcfeab7*/
    (int)__return_address,
    2,
    255,
    255,
    255,
    255,
    255,
    255,
    "SendData S%d -> S%d\n",
    (unsigned __int8)n2,
    SocketNumber);
  IioFuncEA3D((int)__return_address, (int)a2, n2); /*0xffcfeac3*/
  return 0; /*0xffcfeacd*/
}

// Function: IioFuncEAD0 @ 0xffcfead0 (0x8d4 bytes)
// Index: 2113/2560

_BYTE *__cdecl IioFuncEAD0(
        unsigned __int8 *__return_address,
        int a2,
        int buf,
        unsigned __int8 n2,
        char *a5,
        unsigned __int8 a6,
        _BYTE *bufa,
        unsigned __int8 n0x10)
{
  int v8; // edx
  unsigned __int8 n6_1; // cl
  int v10; // ebp
  _BYTE *bufa_1; // ebx
  int n2_1; // esi
  _BYTE *result; // eax
  int v14; // esi
  int v15; // edi
  char v16; // al
  char n2_3; // bl
  int v18; // ebp
  int v19; // ecx
  _BYTE *bufa_2; // esi
  int v21; // eax
  unsigned __int8 n0x40; // cl
  int v23; // edx
  unsigned __int8 v24; // al
  unsigned __int8 n4; // bh
  int v26; // edi
  unsigned __int8 n0x40_1; // bl
  char v28; // cl
  bool v29; // zf
  char n2_4; // [esp+12h] [ebp-2AAh]
  unsigned __int8 n0x40_2; // [esp+13h] [ebp-2A9h]
  _DWORD v32[4]; // [esp+14h] [ebp-2A8h]
  _DWORD PPPPPPPPUUUUUUUU_n_n_n_n_n_n_n_n[8]; // [esp+24h] [ebp-298h] BYREF
  _DWORD ZZZZZZZZ________[20]; // [esp+44h] [ebp-278h] BYREF
  _DWORD v35[32]; // [esp+... [11975 chars total]

// Function: IioFuncF3A4 @ 0xffcff3a4 (0x237 bytes)
// Index: 2114/2560

unsigned __int8 __cdecl IioFuncF3A4(unsigned __int8 *__return_address, int a2, int n2, _BYTE *a4, _BYTE *a5, _BYTE *a6)
{
  int v6; // esi
  _BYTE *v7; // edx
  unsigned __int8 n6; // al
  int v10; // edi
  int v11; // ecx
  int v12; // eax
  unsigned __int8 v13; // di
  _BYTE *v14; // ecx
  unsigned __int8 n6_1; // al
  _BYTE *v16; // ebp
  unsigned int v17; // esi
  _BYTE *v18; // ebp
  _BYTE *v19; // edi
  unsigned int v20; // esi
  unsigned __int8 n6_2; // al
  _BYTE *v22; // edi
  unsigned int v23; // esi
  _BYTE *v24; // ebp
  unsigned __int8 n6_3; // bl
  int n6_4; // [esp+10h] [ebp-14h]
  unsigned __int8 n6_5; // [esp+10h] [ebp-14h]
  unsigned __int8 n6_6; // [esp+10h] [ebp-14h]
  unsigned __int8 n6_7; // [esp+10h] [ebp-14h]
  int v30; // [esp+14h] [ebp-10h]
  int v31; // [esp+18h] [ebp-Ch]
  _BYTE *v32; // [esp+1Ch] [ebp-8h]
  int v33; // [esp+20h] [ebp-4h]
  char v34; // [esp+2Ch] [ebp+8h]
  int v35; // [esp+2Ch] [ebp+8h]

  v6 = n2 & 0x2100007F; /*0xffcff3c7*/
  v31 = 888 * (unsigned __int8)n2 + a2 + 8608; /*0xffcff3cf*/
  v7 = (_BYTE *)v31; /*0xffcff3d4*/
  n6 = 0; /*0xffcff3d6*/
  v10 = 0; /*0xffcff3dc*/
  LOBYTE(n6_4) = 0; /*0xffcff3de*/
  v30 = 0; /*0xffcff3e2*/
  v32 = (_BYTE *)v31; /*0xffcff3e6*/
  do
  {
    if ( *v7 )
    {
      LOBYTE(v11) = 0; /*0xffcff3f7*/
      v34 = 0; /*0xffcff3f9*/
      if ( *a5 )
      {
        do
        {
          v11 = (unsigned __int8)v11; /*0xffcff40b*/
          v33 = v11; /*0xffcff40e*/
          v12 = *(_DWORD *)&a4[4 * v10 + 4 * (unsigned __int8)v11]; /*0xffcff415*/
          v13 = v12 + 4; /*0xffcff418*/
          if ( (unsigned int)(v12 + 4) > 0x1F )
          {
            DebugPrint(
              (int)__return_address,
              3,
              n2,
              n6_4,
              255,
              255,
              255,
              255,
              "ERROR: Wrong cacheline number for subsequence %d: %d\n",
              (unsigned __int8)v11,
              v12);
            ProcMemInitCheck((int)__return_address, 96, 3); /*0xffcff448*/
            v11 = v33; /*0xffcff44d*/
          }
          v6 ^= ((unsigned __int8)v6 ^ v13) & 0x7F; /*0xffcff460*/
          MailBoxFunc902D((int)__return_address, n2, n6_4, 8 * v11 + 117459984, 80, v6); /*0xffcff46f*/
          v10 = v30; /*0xffcff47b*/
          LOBYTE(v11) = v34 + 1; /*0xffcff47f*/
          v34 = v11; /*0xffcff481*/
        }
        while ( (unsigned __int8)v11 < *a5 );
        n6 = n6_4; /*0xffcff48e*/
        v7 = v32; /*0xffcff494*/
      }
    }
    ++n6; /*0xffcff498*/
    v7 += 148; /*0xffcff49a*/
    v10 += 7; /*0xffcff4a0*/
    LOBYTE(n6_4) = n6; /*0xffcff4a3*/
    ++a5; /*0xffcff4a7*/
    v32 = v7; /*0xffcff4a8*/
    v30 = v10; /*0xffcff4ac*/
  }
  while ( n6 < 6u );
  v14 = (_BYTE *)v31; /*0xffcff4b8*/
  n6_1 = 0; /*0xffcff4bc*/
  v16 = a6; /*0xffcff4be*/
  v17 = v6 & 0xFF0FFFFF | 0x100000; /*0xffcff4cc*/
  n6_5 = 0; /*0xffcff4d2*/
  v35 = v31; /*0xffcff4d6*/
  do /*0xffcff51f*/
  {
    if ( *v14 ) /*0xffcff4da*/
    {
      v17 ^= ((unsigned __int8)v17 ^ (unsigned __int8)(*v16 + 1)) & 0x7F; /*0xffcff4e9*/
      MailBoxFunc902D((int)__return_address, n2, n6_5, 117460040, 80, v17); /*0xffcff4fc*/
      n6_1 = n6_5; /*0xffcff501*/
      v14 = (_BYTE *)v35; /*0xffcff508*/
    }
    ++n6_1; /*0xffcff50c*/
    v14 += 148; /*0xffcff50e*/
    ++v16; /*0xffcff514*/
    n6_5 = n6_1; /*0xffcff515*/
    v35 = (int)v14; /*0xffcff519*/
  }
  while ( n6_1 < 6u ); /*0xffcff51f*/
  v18 = (_BYTE *)v31; /*0xffcff521*/
  v19 = a6; /*0xffcff52b*/
  v20 = v17 & 0xFF0FFFFF | 0x100000; /*0xffcff52f*/
  n6_2 = 0; /*0xffcff537*/
  n6_6 = 0; /*0xffcff53d*/
  do /*0xffcff57e*/
  {
    if ( *v18 ) /*0xffcff541*/
    {
      v20 ^= ((unsigned __int8)v20 ^ (unsigned __int8)(*v19 + 1)) & 0x7F; /*0xffcff550*/
      MailBoxFunc902D((int)__return_address, n2, n6_6, 117460048, 80, v20); /*0xffcff563*/
      n6_2 = n6_6; /*0xffcff568*/
    }
    ++n6_2; /*0xffcff56f*/
    v18 += 148; /*0xffcff571*/
    ++v19; /*0xffcff577*/
    n6_6 = n6_2; /*0xffcff578*/
  }
  while ( n6_2 < 6u ); /*0xffcff57e*/
  v22 = a6; /*0xffcff580*/
  v23 = v20 & 0xFF0FFFFF; /*0xffcff584*/
  v24 = (_BYTE *)v31; /*0xffcff58a*/
  n6_3 = 0; /*0xffcff58e*/
  n6_7 = 0; /*0xffcff590*/
  do /*0xffcff5d1*/
  {
    if ( *v24 ) /*0xffcff594*/
    {
      v23 ^= ((unsigned __int8)v23 ^ (unsigned __int8)(*v22 + 1)) & 0x7F; /*0xffcff5a3*/
      n6_2 = MailBoxFunc902D((int)__return_address, n2, n6_7, 117460056, 80, v23); /*0xffcff5b9*/
    }
    ++n6_3; /*0xffcff5c1*/
    v24 += 148; /*0xffcff5c3*/
    ++v22; /*0xffcff5c9*/
    n6_7 = n6_3; /*0xffcff5ca*/
  }
  while ( n6_3 < 6u ); /*0xffcff5d1*/
  return n6_2; /*0xffcff5d3*/
}

// Function: IioFuncF5DB @ 0xffcff5db (0x2e6 bytes)
// Index: 2115/2560

int __cdecl IioFuncF5DB(unsigned __int8 *__return_address, int a2, int buf, int n2, char n3)
{
  unsigned __int8 n6_1; // dl
  int n2_1; // ebx
  int v7; // esi
  int v8; // edi
  unsigned __int8 *v9; // ebp
  int v10; // eax
  unsigned __int8 v11; // bh
  int v12; // eax
  int v13; // ecx
  int v14; // eax
  unsigned __int8 v15; // al
  int v16; // edx
  char *v17; // esi
  int n10; // ecx
  unsigned __int16 *v19; // ebp
  unsigned int v20; // edi
  __int16 v21; // ax
  unsigned __int8 v22; // bl
  int v23; // ecx
  unsigned __int16 *v24; // esi
  int n10_2; // eax
  int n6; // [esp+10h] [ebp-84h]
  int n2_2; // [esp+14h] [ebp-80h]
  int n10_1; // [esp+18h] [ebp-7Ch]
  int n10_3; // [esp+18h] [ebp-7Ch]
  int v31; // [esp+1Ch] [ebp-78h]
  int v32; // [esp+20h] [ebp-74h]
  int n2a; // [esp+2Ch] [ebp-68h]
  int v34; // [esp+30h] [ebp-64h]
  unsigned __int8 *v35; // [esp+34h] [ebp-60h]
  int v36; // [esp+38h] [ebp-5Ch]
  char v37; // [esp+3Ch] [ebp-58h]
  char v38; // [esp+46h] [ebp-4Eh] BYREF
  char v39; // [esp+4Ah] [ebp-4Ah] BYREF

  n6_1 = 0; /*0xffcff5e8*/
  n2_1 = (unsigned __int8)n2; /*0xffcff5ed*/
  v7 = 0; /*0xffcff5f0*/
  v8 = a2; /*0xffcff5fb*/
  LOBYTE(n6) = 0; /*0xffcff60d*/
  v37 = n3 - 1; /*0xffcff617*/
  v34 = 0; /*0xffcff61b*/
  v9 = (unsigned __int8 *)(888 * (unsigned __int8)n2 + a2 + 8609); /*0xffcff61f*/
  v35 = v9; /*0xffcff629*/
  do /*0xffcff8ae*/
  {
    if ( *(v9 - 1) ) /*0xffcff62d*/
    {
      v10 = 6 * n2_1; /*0xffcff637*/
      v11 = 0; /*0xffcff640*/
      LOBYTE(n2_2) = 0; /*0xffcff642*/
      v12 = 148 * (v7 + v10); /*0xffcff648*/
      v13 = v12 + v8 + 8624; /*0xffcff64e*/
      v36 = v12; /*0xffcff650*/
      v32 = v13; /*0xffcff654*/
      if ( *v9 ) /*0xffcff658*/
      {
        do /*0xffcff884*/
        {
          v14 = 66 * v11; /*0xffcff664*/
          if ( *(_BYTE *)(v14 + v13 + 2) && *(_WORD *)(v14 + v13 + 8) == 0xCE00 ) /*0xffcff67c*/
          {
            v31 = v8 + v36 + v14; /*0xffcff697*/
            v15 = IioFunc87EA((int)__return_address, v8, buf, n2, n6, n2_2); /*0xffcff6aa*/
            if ( v15 != 0xFF ) /*0xffcff6b4*/
            {
              v16 = 1 << v37; /*0xffcff6cd*/
              v17 = &v38; /*0xffcff6cf*/
              n10 = 10; /*0xffcff6d5*/
              v19 = (unsigned __int16 *)(20 * v15 + v8 + 10384); /*0xffcff6da*/
              n10_1 = 10; /*0xffcff6dc*/
              do /*0xffcff751*/
              {
                v20 = *v19; /*0xffcff6e0*/
                if ( ((unsigned __int8)(v20 >> 12) & (unsigned __int8)v16) == 0 || (v20 & 0xFFF) == 0xFFF ) /*0xffcff703*/
                {
                  v21 = 0; /*0xffcff6ed*/
                  *(v17 - 2) = 0; /*0xffcff6ef*/
                  *(_DWORD *)v17 = 0; /*0xffcff6f3*/
                }
                else
                {
                  *(v17 - 2) = 1; /*0xffcff707*/
                  *(_WORD *)v17 = IioFunc89D4((v20 >> 8) & 0xF); /*0xffcff717*/
                  *((_WORD *)v17 + 1) = IioFunc89D4((unsigned __int8)v20 >> 4); /*0xffcff72b*/
                  v21 = IioFunc89D4(v20 & 0xF); /*0xffcff730*/
                  n10 = n10_1; /*0xffcff735*/
                  LOBYTE(v16) = 1 << v37; /*0xffcff73c*/
                }
                *((_WORD *)v17 + 2) = v21; /*0xffcff740*/
                ++v19; /*0xffcff744*/
                v17 += 8; /*0xffcff747*/
                n10_1 = --n10; /*0xffcff74d*/
              }
              while ( n10 ); /*0xffcff751*/
              v22 = 0; /*0xffcff75b*/
              v8 = a2; /*0xffcff75d*/
              v9 = v35; /*0xffcff764*/
              LOBYTE(n2a) = 0; /*0xffcff768*/
              if ( *(_BYTE *)(4292 * (unsigned __int8)n2 + a2 + 18) ) /*0xffcff770*/
              {
                v23 = v31; /*0xffcff77a*/
                do /*0xffcff871*/
                {
                  if ( *(_BYTE *)(v23 + 8 * v22 + 8658) ) /*0xffcff781*/
                  {
                    if ( v35[2] ) /*0xffcff78f*/
                      RmtFunc765(__return_address, n2, n6, n2_2, n2a, 0x18u, 0xB0u); /*0xffcff7b7*/
                    IioTailX_FFD09355(__return_address, n2, n6, n2_2, n2a); /*0xffcff7d6*/
                    v24 = (unsigned __int16 *)&v39; /*0xffcff7de*/
                    n10_2 = 10; /*0xffcff7e4*/
                    n10_3 = 10; /*0xffcff7e5*/
                    do /*0xffcff82a*/
                    {
                      if ( *((_BYTE *)v24 - 6) == 1 ) /*0xffcff7ed*/
                      {
                        IioTailFunc6AF(__return_address, n2, n6, n2_2, n2a, *(v24 - 2), *(v24 - 1), *v24); /*0xffcff814*/
                        n10_2 = n10_3; /*0xffcff819*/
                      }
                      v24 += 4; /*0xffcff820*/
                      n10_3 = --n10_2; /*0xffcff826*/
                    }
                    while ( n10_2 ); /*0xffcff82a*/
                    if ( v35[2] ) /*0xffcff82c*/
                      RmtFunc765(__return_address, n2, n6, n2_2, n2a, 0, 0xB0u); /*0xffcff850*/
                    v23 = v31; /*0xffcff858*/
                    v8 = a2; /*0xffcff85c*/
                  }
                  LOBYTE(n2a) = ++v22; /*0xffcff869*/
                }
                while ( v22 < *(_BYTE *)(4292 * (unsigned __int8)n2 + v8 + 18) ); /*0xffcff871*/
              }
            }
            v13 = v32; /*0xffcff877*/
          }
          LOBYTE(n2_2) = ++v11; /*0xffcff87d*/
        }
        while ( v11 < *v9 ); /*0xffcff884*/
        n6_1 = n6; /*0xffcff88a*/
        v7 = v34; /*0xffcff88e*/
      }
      n2_1 = (unsigned __int8)n2; /*0xffcff892*/
    }
    ++n6_1; /*0xffcff896*/
    v9 += 148; /*0xffcff898*/
    ++v7; /*0xffcff89e*/
    LOBYTE(n6) = n6_1; /*0xffcff89f*/
    v34 = v7; /*0xffcff8a3*/
    v35 = v9; /*0xffcff8a7*/
  }
  while ( n6_1 < 6u ); /*0xffcff8ae*/
  return 0; /*0xffcff8b4*/
}

// Function: IioFuncF8C1 @ 0xffcff8c1 (0x4f bytes)
// Index: 2116/2560

int __cdecl IioFuncF8C1(unsigned __int8 *__return_address, int a2, unsigned __int8 n2, unsigned __int8 n255)
{
  unsigned __int8 n6; // bl
  int v5; // eax
  int result; // eax
  int v7; // [esp+Ch] [ebp-4h]

  n6 = 0; /*0xffcff8cb*/
  LOBYTE(v7) = 0; /*0xffcff8ce*/
  do /*0xffcff907*/
  {
    v5 = MiscConfigCheck(__return_address, n2, v7, 184567096); /*0xffcff8e0*/
    result = MiscIoCheck(__return_address, n2, v7, 0xB004538u, n255 | v5 & 0xFFFFFF00); /*0xffcff8f7*/
    LOBYTE(v7) = ++n6; /*0xffcff901*/
  }
  while ( n6 < 6u ); /*0xffcff907*/
  return result; /*0xffcff909*/
}

// Function: IioFuncF910 @ 0xffcff910 (0x39 bytes)
// Index: 2117/2560

int __cdecl IioFuncF910(unsigned __int8 *__return_address, int a2, unsigned __int8 n2, int a4, unsigned __int8 a5)
{
  int v5; // eax

  v5 = MiscConfigCheck(__return_address, n2, a4, 184567096); /*0xffcff923*/
  return MiscIoCheck(__return_address, n2, a4, 0xB004538u, a5 | v5 & 0xFFFFFF00); /*0xffcff946*/
}

// Function: IioFuncF949 @ 0xffcff949 (0x37 bytes)
// Index: 2118/2560

int __cdecl IioFuncF949(int buf, int a2)
{
  int n150; // eax

  *(_BYTE *)(buf + 24770) = 1; /*0xffcff951*/
  if ( *(_BYTE *)(a2 + 8601) ) /*0xffcff958*/
  {
    n150 = 150; /*0xffcff96c*/
    *(_BYTE *)(buf + 24771) = 0; /*0xffcff971*/
  }
  else
  {
    n150 = 0; /*0xffcff961*/
    *(_BYTE *)(buf + 24771) = 1; /*0xffcff963*/
  }
  *(_WORD *)(buf + 24772) = n150; /*0xffcff978*/
  return n150; /*0xffcff97f*/
}

// Function: IioFuncF980 @ 0xffcff980 (0x1aa bytes)
// Index: 2119/2560

int __cdecl IioFuncF980(unsigned __int8 *__return_address, int a2, int n2, _BYTE *a4, _BYTE *a5, _BYTE *a6)
{
  unsigned __int8 n6; // al
  int v7; // esi
  _BYTE *v8; // edx
  _BYTE *v9; // edi
  _BYTE *v10; // ecx
  unsigned int v11; // esi
  _BYTE *v12; // edi
  _BYTE *v13; // ebp
  unsigned __int8 n6_1; // al
  unsigned __int8 n6_2; // bl
  _BYTE *v16; // ebp
  unsigned int v17; // esi
  int result; // eax
  _BYTE *v19; // [esp+10h] [ebp-14h]
  _BYTE *v20; // [esp+10h] [ebp-14h]
  int v21; // [esp+14h] [ebp-10h]
  _BYTE *v22; // [esp+1Ch] [ebp-8h]
  unsigned __int8 n6_3; // [esp+2Ch] [ebp+8h]
  unsigned __int8 n6_4; // [esp+2Ch] [ebp+8h]
  unsigned __int8 n6_5; // [esp+2Ch] [ebp+8h]
  _BYTE *v26; // [esp+34h] [ebp+10h]

  n6 = 0; /*0xffcff9a9*/
  v7 = n2 & 0x2100007F | 0x100000; /*0xffcff9b1*/
  v8 = (_BYTE *)(888 * (unsigned __int8)n2 + a2 + 8608); /*0xffcff9bb*/
  v9 = a5; /*0xffcff9ca*/
  v22 = v8; /*0xffcff9ce*/
  v21 = a6 - a5; /*0xffcff9d6*/
  n6_3 = 0; /*0xffcff9de*/
  v19 = v8; /*0xffcff9e2*/
  do /*0xffcffa3c*/
  {
    if ( *v8 ) /*0xffcff9e6*/
    {
      v7 ^= ((unsigned __int8)v7 ^ (unsigned __int8)(v9[a4 - a5] + v9[v21] - 3 + *v9)) & 0x7F; /*0xffcffa06*/
      MailBoxFunc902D((int)__return_address, n2, n6_3, 117459984, 80, v7); /*0xffcffa19*/
      n6 = n6_3; /*0xffcffa1e*/
      v8 = v19; /*0xffcffa25*/
    }
    ++n6; /*0xffcffa29*/
    v8 += 148; /*0xffcffa2b*/
    ++v9; /*0xffcffa31*/
    n6_3 = n6; /*0xffcffa32*/
    v19 = v8; /*0xffcffa36*/
  }
  while ( n6 < 6u ); /*0xffcffa3c*/
  v10 = v22; /*0xffcffa3e*/
  v11 = v7 & 0xFF0FFFFF; /*0xffcffa42*/
  v12 = a6; /*0xffcffa48*/
  v13 = a5; /*0xffcffa4e*/
  n6_1 = 0; /*0xffcffa52*/
  n6_4 = 0; /*0xffcffa58*/
  v20 = v22; /*0xffcffa5c*/
  do /*0xffcffabb*/
  {
    if ( *v10 ) /*0xffcffa60*/
    {
      v11 ^= ((unsigned __int8)v11 ^ (unsigned __int8)(v13[a4 - a5] + v13[v21] - 3 + *v13)) & 0x7F; /*0xffcffa85*/
      MailBoxFunc902D((int)__return_address, n2, n6_4, 117459992, 80, v11); /*0xffcffa98*/
      n6_1 = n6_4; /*0xffcffa9d*/
      v10 = v20; /*0xffcffaa4*/
    }
    ++n6_1; /*0xffcffaa8*/
    v10 += 148; /*0xffcffaaa*/
    ++v13; /*0xffcffab0*/
    n6_4 = n6_1; /*0xffcffab1*/
    v20 = v10; /*0xffcffab5*/
  }
  while ( n6_1 < 6u ); /*0xffcffabb*/
  n6_2 = 0; /*0xffcffac1*/
  v16 = v22; /*0xffcffac3*/
  v17 = v11 & 0xFF0FFFFF; /*0xffcffac7*/
  result = a4 - a6; /*0xffcffacd*/
  n6_5 = 0; /*0xffcffacf*/
  v26 = (_BYTE *)(a4 - a6); /*0xffcffad3*/
  do /*0xffcffb20*/
  {
    if ( *v16 ) /*0xffcffad7*/
    {
      v17 ^= ((unsigned __int8)v17 ^ (unsigned __int8)(v12[result] - 3 + *v12)) & 0x7F; /*0xffcffaee*/
      MailBoxFunc902D((int)__return_address, n2, n6_5, 117460000, 80, v17); /*0xffcffb04*/
      result = (int)v26; /*0xffcffb09*/
    }
    ++n6_2; /*0xffcffb10*/
    v16 += 148; /*0xffcffb12*/
    ++v12; /*0xffcffb18*/
    n6_5 = n6_2; /*0xffcffb19*/
  }
  while ( n6_2 < 6u ); /*0xffcffb20*/
  return result; /*0xffcffb22*/
}

// Function: IioFuncFB2A @ 0xffcffb2a (0x57 bytes)
// Index: 2120/2560

int __cdecl IioFuncFB2A(unsigned __int8 *a1, int a2, unsigned __int8 a3, unsigned __int8 a4, char a5)
{
  unsigned __int8 n6; // bl
  char v6; // si
  int result; // eax
  int v8; // [esp+Ch] [ebp-4h]

  n6 = 0; /*0xffcffb30*/
  v6 = 0; /*0xffcffb37*/
  LOBYTE(v8) = 0; /*0xffcffb39*/
  do /*0xffcffb78*/
  {
    result = 1 << v6; /*0xffcffb41*/
    if ( ((1 << v6) & a4) != 0 ) /*0xffcffb45*/
      result = MiscIoCheck(a1, a3, v8, 0xB0044A0u, (a5 & 0x3F | ((a5 & 0x3F) << 8)) << 8); /*0xffcffb67*/
    ++n6; /*0xffcffb6f*/
    ++v6; /*0xffcffb71*/
    LOBYTE(v8) = n6; /*0xffcffb72*/
  }
  while ( n6 < 6u ); /*0xffcffb78*/
  return result; /*0xffcffb7a*/
}

// Function: IioFuncFB81 @ 0xffcffb81 (0x194 bytes)
// Index: 2121/2560

unsigned __int8 __cdecl IioFuncFB81(unsigned __int8 *__return_address, int a2, int n2, _BYTE *a4, _BYTE *a5, _BYTE *a6)
{
  _BYTE *v6; // eax
  unsigned __int8 n6; // cl
  int v8; // esi
  _BYTE *v9; // ebp
  _BYTE *v10; // ecx
  unsigned int v11; // esi
  unsigned __int8 n6_1; // al
  _BYTE *v13; // ebp
  _BYTE *v14; // edi
  unsigned int v15; // esi
  _BYTE *v16; // ebp
  unsigned __int8 n6_2; // bl
  _BYTE *v18; // [esp+10h] [ebp-Ch]
  _BYTE *v19; // [esp+10h] [ebp-Ch]
  _BYTE *v20; // [esp+14h] [ebp-8h]
  unsigned __int8 n6_3; // [esp+24h] [ebp+8h]
  unsigned __int8 n6_4; // [esp+24h] [ebp+8h]
  unsigned __int8 n6_5; // [esp+24h] [ebp+8h]
  _BYTE *v24; // [esp+30h] [ebp+14h]

  v6 = (_BYTE *)(888 * (unsigned __int8)n2 + a2 + 8608); /*0xffcffbab*/
  n6 = 0; /*0xffcffbb3*/
  v20 = v6; /*0xffcffbb5*/
  v8 = n2 & 0x2100007F | 0x100000; /*0xffcffbbd*/
  n6_3 = 0; /*0xffcffbc5*/
  v9 = a5; /*0xffcffbce*/
  v18 = v6; /*0xffcffbd8*/
  do /*0xffcffc33*/
  {
    if ( *v6 ) /*0xffcffbdc*/
    {
      v8 ^= ((unsigned __int8)v8 ^ (unsigned __int8)(v9[a4 - a5] + v9[a6 - a5] - 3 + *v9)) & 0x7F; /*0xffcffbfd*/
      MailBoxFunc902D((int)__return_address, n2, n6_3, 117459984, 80, v8); /*0xffcffc10*/
      n6 = n6_3; /*0xffcffc15*/
      v6 = v18; /*0xffcffc1c*/
    }
    ++n6; /*0xffcffc20*/
    v6 += 148; /*0xffcffc22*/
    ++v9; /*0xffcffc27*/
    n6_3 = n6; /*0xffcffc28*/
    v18 = v6; /*0xffcffc2c*/
  }
  while ( n6 < 6u ); /*0xffcffc33*/
  v10 = v20; /*0xffcffc3f*/
  v11 = v8 & 0xFF0FFFFF | 0x100000; /*0xffcffc45*/
  v19 = v20; /*0xffcffc4b*/
  v24 = (_BYTE *)(a5 - a6); /*0xffcffc4f*/
  n6_1 = 0; /*0xffcffc53*/
  v13 = a6; /*0xffcffc59*/
  n6_4 = 0; /*0xffcffc5f*/
  do /*0xffcffcae*/
  {
    if ( *v10 ) /*0xffcffc63*/
    {
      v11 ^= ((unsigned __int8)v11 ^ (unsigned __int8)(v13[(_DWORD)v24] - 1 + *v13)) & 0x7F; /*0xffcffc78*/
      MailBoxFunc902D((int)__return_address, n2, n6_4, 117459992, 80, v11); /*0xffcffc8b*/
      n6_1 = n6_4; /*0xffcffc90*/
      v10 = v19; /*0xffcffc97*/
    }
    ++n6_1; /*0xffcffc9b*/
    v10 += 148; /*0xffcffc9d*/
    ++v13; /*0xffcffca3*/
    n6_4 = n6_1; /*0xffcffca4*/
    v19 = v10; /*0xffcffca8*/
  }
  while ( n6_1 < 6u ); /*0xffcffcae*/
  v14 = a6; /*0xffcffcb0*/
  v15 = v11 & 0xFF0FFFFF; /*0xffcffcb4*/
  v16 = v20; /*0xffcffcba*/
  n6_2 = 0; /*0xffcffcbe*/
  n6_5 = 0; /*0xffcffcc0*/
  do /*0xffcffd0b*/
  {
    if ( *v16 ) /*0xffcffcc4*/
    {
      v15 ^= ((unsigned __int8)v15 ^ (unsigned __int8)(v24[(_DWORD)v14] - 1 + *v14)) & 0x7F; /*0xffcffcdd*/
      n6_1 = MailBoxFunc902D((int)__return_address, n2, n6_5, 117460000, 80, v15); /*0xffcffcf3*/
    }
    ++n6_2; /*0xffcffcfb*/
    v16 += 148; /*0xffcffcfd*/
    ++v14; /*0xffcffd03*/
    n6_5 = n6_2; /*0xffcffd04*/
  }
  while ( n6_2 < 6u ); /*0xffcffd0b*/
  return n6_1; /*0xffcffd0d*/
}

// Function: IioFuncFD15 @ 0xffcffd15 (0x40 bytes)
// Index: 2122/2560

bool *__cdecl IioFuncFD15(int buf)
{
  unsigned __int8 n2; // cl
  bool *result; // eax

  n2 = 0; /*0xffcffd19*/
  *(_BYTE *)(buf + 24780) = 1; /*0xffcffd1b*/
  *(_WORD *)(buf + 24797) = 2052; /*0xffcffd22*/
  result = (bool *)(buf + 24781); /*0xffcffd2b*/
  do /*0xffcffd52*/
  {
    *result = n2 == 1 || n2 == 2 || n2 == 4 || n2 == 8; /*0xffcffd49*/
    ++n2; /*0xffcffd4c*/
    ++result; /*0xffcffd4e*/
  }
  while ( n2 < 0x10u ); /*0xffcffd52*/
  return result; /*0xffcffd54*/
}

// Function: IioFuncFD55 @ 0xffcffd55 (0xb8 bytes)
// Index: 2123/2560

unsigned __int8 __cdecl IioFuncFD55(
        unsigned __int8 *__return_address,
        int n2,
        __int16 *a3,
        _BYTE *a4,
        unsigned __int8 a5)
{
  unsigned __int8 n6; // cl
  _BYTE *v7; // edx
  __int16 v8; // ax
  int n5; // ebx
  _WORD *v10; // esi
  int n5_1; // ebp
  char v12; // cl
  __int16 v13; // dx
  unsigned __int8 result; // al
  unsigned __int16 *v15; // edi
  int v16; // ebx
  int v17; // esi

  n6 = 0; /*0xffcffd5d*/
  v7 = a4; /*0xffcffd64*/
  do /*0xffcffd7a*/
  {
    *v7 = n6++; /*0xffcffd66*/
    v8 = *a3++; /*0xffcffd6a*/
    *((_WORD *)v7 + 1) = v8; /*0xffcffd70*/
    v7 += 4; /*0xffcffd74*/
  }
  while ( n6 < 6u ); /*0xffcffd7a*/
  n5 = 5; /*0xffcffd81*/
  do /*0xffcffdb8*/
  {
    v10 = a4 + 6; /*0xffcffd86*/
    n5_1 = 5; /*0xffcffd88*/
    do /*0xffcffdb3*/
    {
      if ( *(v10 - 2) > *v10 ) /*0xffcffd93*/
      {
        v12 = *((_BYTE *)v10 - 6); /*0xffcffd95*/
        v13 = *(v10 - 2); /*0xffcffd98*/
        *(v10 - 2) = *v10; /*0xffcffd9d*/
        *((_BYTE *)v10 - 6) = *((_BYTE *)v10 - 2); /*0xffcffda4*/
        *v10 = v13; /*0xffcffda7*/
        *((_BYTE *)v10 - 2) = v12; /*0xffcffdaa*/
      }
      v10 += 2; /*0xffcffdad*/
      --n5_1; /*0xffcffdb0*/
    }
    while ( n5_1 ); /*0xffcffdb3*/
    --n5; /*0xffcffdb5*/
  }
  while ( n5 ); /*0xffcffdb8*/
  result = a5; /*0xffcffdba*/
  if ( a5 ) /*0xffcffdc4*/
  {
    v15 = (unsigned __int16 *)(a4 + 2); /*0xffcffdc6*/
    v16 = a5; /*0xffcffdc9*/
    v17 = 0; /*0xffcffdd1*/
    do /*0xffcffe05*/
    {
      result = DebugPrint( /*0xffcffdf6*/
                 (int)__return_address,
                 3,
                 255,
                 255,
                 255,
                 255,
                 255,
                 255,
                 "Index[%d] Ch = %d, Parameter = %d.%d\n",
                 v17,
                 *((unsigned __int8 *)v15 - 2),
                 *v15 / 0xAu,
                 *v15 % 0xAu);
      v15 += 2; /*0xffcffdfe*/
      ++v17; /*0xffcffe01*/
      --v16; /*0xffcffe02*/
    }
    while ( v16 ); /*0xffcffe05*/
  }
  return result; /*0xffcffe07*/
}

// Function: IioFuncFE0D @ 0xffcffe0d (0x1f5 bytes)
// Index: 2124/2560

int __cdecl IioFuncFE0D(unsigned __int8 *__return_address, _BYTE *a2, int *buf, int n2)
{
  bool v4; // zf
  unsigned __int8 *__return_address_1; // ebx
  int v6; // edi
  int v7; // eax
  int v8; // eax
  int v9; // esi
  int n6_1; // eax
  int v11; // eax
  int n6; // [esp+14h] [ebp-4Ch]
  int n6_2; // [esp+18h] [ebp-48h]
  __int64 v15; // [esp+20h] [ebp-40h] BYREF
  _QWORD v16[7]; // [esp+28h] [ebp-38h] BYREF

  n6_2 = 0; /*0xffcffe1e*/
  v16[0] = 0; /*0xffcffe22*/
  v15 = 0; /*0xffcffe2a*/
  IioFuncF949((int)buf, (int)a2); /*0xffcffe32*/
  if ( *((_BYTE *)buf + 24770) )
  {
    v4 = *((_BYTE *)buf + 24771) == 1; /*0xffcffe46*/
    *((_BYTE *)buf + 24769) = 3; /*0xffcffe53*/
    if ( v4 ) /*0xffcffe5f*/
    {
      __return_address_1 = __return_address; /*0xffcffe68*/
      if ( a2[8601] ) /*0xffcffe61*/
        DebugPrint( /*0xffcffe93*/
          (int)__return_address,
          3,
          n2,
          255,
          255,
          255,
          255,
          255,
          "Test Pattern3 Parameter = Auto(%d)\n",
          *((unsigned __int16 *)buf + 12386));
      else
        DebugPrint((int)__return_address, 3, n2, 255, 255, 255, 255, 255, "Test Pattern3 Parameter = Auto\n"); /*0xffcffe7c*/
    }
    else
    {
      __return_address_1 = __return_address; /*0xffcffe9c*/
      DebugPrint( /*0xffcffeaf*/
        (int)__return_address,
        3,
        n2,
        255,
        255,
        255,
        255,
        255,
        "Test Pattern3 Parameter = %d\n",
        *((unsigned __int16 *)buf + 12386));
    }
    IioFuncF5DB(__return_address_1, (int)a2, (int)buf, n2, 3); /*0xffcffec0*/
    DdrTrainFunc15A1(__return_address_1, n2, 0); /*0xffcffec9*/
    KtiFunc8C4((int)__return_address_1, 0xAu); /*0xffcffed1*/
    KtiFuncF4E(v16); /*0xffcffedb*/
    LOBYTE(n6) = 0; /*0xffcffee5*/
    v6 = 0; /*0xffcffee9*/
    do /*0xffcfff49*/
    {
      v7 = MiscConfigCheck(__return_address_1, n2, n6, 184566948); /*0xffcffef7*/
      *(_DWORD *)((char *)&v16[1] + v6) = v7; /*0xffcffefc*/
      MiscIoCheck(__return_address_1, n2, n6, 0xB0044A4u, v7 & 0x7FFFFFFF); /*0xffcfff0e*/
      v8 = MiscConfigCheck(__return_address_1, n2, n6, 184567556); /*0xffcfff1b*/
      *(_DWORD *)((char *)&v16[4] + v6) = v8; /*0xffcfff20*/
      MiscIoCheck(__return_address_1, n2, n6, 0xB004704u, v8 & 0xFDFFFFFF); /*0xffcfff32*/
      v6 += 4; /*0xffcfff3b*/
      LOBYTE(n6) = n6 + 1; /*0xffcfff43*/
    }
    while ( (unsigned __int8)n6 < 6u ); /*0xffcfff49*/
    IioFuncD7E1(__return_address_1, (int)a2, (int)buf, n2); /*0xffcfff55*/
    LOBYTE(n6) = 0; /*0xffcfff64*/
    v9 = 0; /*0xffcfff68*/
    do /*0xffcfffa8*/
    {
      MiscIoCheck(__return_address_1, n2, n6, 0xB0044A4u, *(_DWORD *)((char *)&v16[1] + v9)); /*0xffcfff79*/
      MiscIoCheck(__return_address_1, n2, n6, 0xB004704u, *(_DWORD *)((char *)&v16[4] + v9)); /*0xffcfff8d*/
      n6_1 = n6_2; /*0xffcfff92*/
      v9 += 4; /*0xffcfff96*/
      LOBYTE(n6_1) = n6_2 + 1; /*0xffcfff9c*/
      n6_2 = n6_1; /*0xffcfff9e*/
      LOBYTE(n6) = n6_1; /*0xffcfffa2*/
    }
    while ( (unsigned __int8)n6_1 < 6u ); /*0xffcfffa8*/
    KtiFuncF4E(&v15); /*0xffcfffaf*/
    DebugPrint((int)__return_address_1, 3, 255, 255, 255, 255, 255, 255, "\n"); /*0xffcfffc4*/
    v11 = KtiFuncF75((int)__return_address_1, v16[0], SHIDWORD(v16[0]), v15, SHIDWORD(v15), 1u); /*0xffcfffdc*/
    DebugPrint(
      (int)__return_address_1,
      3,
      n2,
      255,
      255,
      255,
      255,
      255,
      "Pattern3 Finished. Total Test Time : %ds\n",
      v11);
  }
  return 0; /*0xffcffffa*/
}

// Function: IioTailFunc2 @ 0xffd00002 (0x19 bytes)
// Index: 2125/2560

unsigned int __cdecl IioTailFunc2(unsigned int a1)
{
  return a1 ^ ((a1 & 8 | (a1 >> 1) & 4) >> 1); /*0xffd0001a*/
}

// Function: IioTailFunc1B @ 0xffd0001b (0x1c5 bytes)
// Index: 2126/2560

int __cdecl IioTailFunc1B(
        unsigned __int8 *__return_address,
        int a2,
        int buf,
        int n2,
        char n3,
        unsigned __int8 a6,
        unsigned __int8 a7,
        unsigned int *a8,
        _DWORD *a9,
        unsigned __int8 a10)
{
  int n2_1; // edx
  char n2_2; // al
  char n3_1; // al
  int v13; // edi
  unsigned __int8 n2_3; // bh
  int *v15; // esi
  __int16 n6; // bx
  int v17; // ebp
  int v18; // eax
  int v19; // ecx
  int v20; // edx
  int v21; // ecx
  int n6_1; // ebp
  int result; // eax
  bool v24; // zf
  unsigned __int8 n2_4; // [esp+13h] [ebp-19h]
  unsigned __int8 n6_2; // [esp+18h] [ebp-14h]
  unsigned int *v27; // [esp+1Ch] [ebp-10h]
  int v28; // [esp+1Ch] [ebp-10h]
  unsigned __int8 v29; // [esp+20h] [ebp-Ch]
  int v30; // [esp+24h] [ebp-8h]

  n2_1 = n2; /*0xffd0001e*/
  n2_2 = *(_BYTE *)((unsigned __int8)n2 + buf + 31712); /*0xffd0002f*/
  if ( n2_2 == 2 ) /*0xffd0003d*/
    n3_1 = 3; /*0xffd0003f*/
  else
    n3_1 = n2_2 == 1; /*0xffd00045*/
  v13 = a7; /*0xffd00048*/
  n2_3 = 0; /*0xffd0004d*/
  n2_4 = 0; /*0xffd00051*/
  v30 = (unsigned __int8)(n3_1 + 1); /*0xffd0005c*/
  do
  {
    v15 = (int *)a8; /*0xffd00060*/
    LOBYTE(n6) = 0; /*0xffd00064*/
    n6_2 = 0; /*0xffd00066*/
    v17 = 0; /*0xffd0006a*/
    v27 = a8; /*0xffd0006c*/
    do /*0xffd00105*/
    {
      if ( ((1 << v17) & v13) != 0 ) /*0xffd00079*/
      {
        if ( n2_3 ) /*0xffd0007d*/
        {
          v18 = a10 + 1; /*0xffd000a4*/
        }
        else
        {
          IioTailFunc660((int)__return_address, n2_1, n6_2, 9, 9); /*0xffd0008c*/
          v18 = a10; /*0xffd00091*/
          LOBYTE(n2_1) = n2; /*0xffd00099*/
        }
        v19 = a9[6 * v18 + v17] & 0x3FFFF; /*0xffd000bb*/
        *v15 = v19 | *v15 & 0xFFFC0000; /*0xffd000c5*/
        v15[2] = v19 | v15[2] & 0xFFFC0000; /*0xffd000d4*/
        IioTailX_FFD093D8((int)__return_address, n2_1, n6_2, *v15, v15[1], v15[2], v15[3]); /*0xffd000e0*/
        n2_1 = n2; /*0xffd000e5*/
        v15 = (int *)v27; /*0xffd000ec*/
        v13 = a7; /*0xffd000f0*/
      }
      LOBYTE(n6) = n6 + 1; /*0xffd000f4*/
      v15 += 4; /*0xffd000f6*/
      ++v17; /*0xffd000f9*/
      n6_2 = n6; /*0xffd000fa*/
      v27 = (unsigned int *)v15; /*0xffd000fe*/
    }
    while ( (unsigned __int8)n6 < 6u ); /*0xffd00105*/
    HIBYTE(n6) = a7; /*0xffd0010f*/
    v28 = v30; /*0xffd00113*/
    do
    {
      MailBoxFuncD466(v13, (int)__return_address, n2_1, v13, 4u); /*0xffd0011f*/
      LOBYTE(v20) = IioFuncA861(n6, __return_address, a2, n2); /*0xffd00139*/
      v29 = v20; /*0xffd0013b*/
      v21 = 0; /*0xffd00151*/
      n6_1 = 6; /*0xffd00153*/
      do
      {
        result = 1 << v21; /*0xffd0015b*/
        if ( ((1 << v21) & a7) != 0 )
        {
          result = ((unsigned __int8)n3 > 3u ? 517 : 1) + 1032 * (v21 + 6 * (unsigned __int8)n2);
          if ( *(_BYTE *)(result + buf) == 1 ) /*0xffd00176*/
          {
            v20 = (unsigned __int8)v20 & ~(1 << v21); /*0xffd0017b*/
            v29 = v20; /*0xffd0017e*/
          }
        }
        ++v21; /*0xffd00182*/
        --n6_1; /*0xffd00183*/
      }
      while ( n6_1 );
      if ( ((unsigned __int8)v20 & a7) != 0 ) /*0xffd0018e*/
        result = IioFunc9628(__return_address, a2, buf, n2, n3, a6, v29); /*0xffd001aa*/
      v24 = v28-- == 1; /*0xffd001b2*/
      n2_1 = n2; /*0xffd001b7*/
      v13 = a7; /*0xffd001bb*/
    }
    while ( !v24 );
    n2_3 = n2_4 + 1; /*0xffd001c9*/
    n2_4 = n2_3; /*0xffd001cb*/
  }
  while ( n2_3 < 2u );
  return result; /*0xffd001d8*/
}

// Function: IioTailFunc1E0 @ 0xffd001e0 (0xe6 bytes)
// Index: 2127/2560

int __usercall IioTailFunc1E0@<eax>(
        int *__return_address@<edi>,
        int __return_address_1,
        int a3,
        int n2,
        int n3,
        unsigned __int8 a6,
        unsigned int *a7,
        _DWORD *a8,
        unsigned __int8 a9)
{
  int v9; // edx
  unsigned __int8 n2_1; // bh
  int *v11; // esi
  unsigned __int8 n6; // bl
  int v13; // ebp
  int v14; // eax
  int v15; // ecx
  int result; // eax
  unsigned __int8 v17; // [esp-14h] [ebp-30h]
  int v18; // [esp+0h] [ebp-1Ch] BYREF
  int v19; // [esp+10h] [ebp-Ch]
  unsigned int *v20; // [esp+14h] [ebp-8h]
  int v21; // [esp+18h] [ebp-4h]

  v9 = a6; /*0xffd001e3*/
  n2_1 = 0; /*0xffd001ec*/
  v21 = a6; /*0xffd001ee*/
  do /*0xffd002b8*/
  {
    v11 = (int *)a7; /*0xffd001f2*/
    n6 = 0; /*0xffd001f6*/
    LOBYTE(v19) = 0; /*0xffd001f8*/
    v13 = 0; /*0xffd001fc*/
    v20 = a7; /*0xffd001fe*/
    do /*0xffd00296*/
    {
      if ( ((1 << v13) & v9) != 0 ) /*0xffd0020b*/
      {
        if ( n2_1 ) /*0xffd0020f*/
        {
          v14 = a9 + 1; /*0xffd00235*/
        }
        else
        {
          IioTailFunc660(__return_address_1, n2, v19, 8, 8); /*0xffd00221*/
          v14 = a9; /*0xffd00226*/
        }
        v17 = v19; /*0xffd00242*/
        v15 = a8[6 * v14 + v13] & 0x3FFFF; /*0xffd00255*/
        *v11 = v15 | *v11 & 0xFFFC0000; /*0xffd00262*/
        v11[2] = v15 | v11[2] & 0xFFFC0000; /*0xffd0026e*/
        __return_address = &v18; /*0xffd00274*/
        IioTailX_FFD093D8(__return_address_1, n2, v17, *v11, v11[1], v11[2], v11[3]); /*0xffd00275*/
        v11 = (int *)v20; /*0xffd0027a*/
        v9 = v21; /*0xffd00281*/
      }
      ++n6; /*0xffd00285*/
      v11 += 4; /*0xffd00287*/
      ++v13; /*0xffd0028a*/
      LOBYTE(v19) = n6; /*0xffd0028b*/
      v20 = (unsigned int *)v11; /*0xffd0028f*/
    }
    while ( n6 < 6u ); /*0xffd00296*/
    result = MailBoxFuncD466((int)__return_address, __return_address_1, n2, v9, 4u); /*0xffd002a7*/
    v9 = v21; /*0xffd002ac*/
    ++n2_1; /*0xffd002b3*/
  }
  while ( n2_1 < 2u ); /*0xffd002b8*/
  return result; /*0xffd002be*/
}

// Function: IioTailFunc2C6 @ 0xffd002c6 (0x2b5 bytes)
// Index: 2128/2560

int __cdecl IioTailFunc2C6(unsigned __int8 *__return_address, _BYTE *a2, int *buf, int n2)
{
  _BYTE *v4; // ecx
  unsigned __int8 n6_1; // al
  int v6; // ebp
  int v7; // eax
  int v8; // eax
  int v9; // ebp
  unsigned __int8 n6_2; // bl
  int v11; // eax
  _BYTE *v12; // ebp
  int v14; // [esp+0h] [ebp-94h]
  int n6; // [esp+14h] [ebp-80h]
  _BYTE *v16; // [esp+18h] [ebp-7Ch]
  __int64 v17; // [esp+24h] [ebp-70h] BYREF
  _QWORD v18[7]; // [esp+2Ch] [ebp-68h] BYREF
  int n2_1[12]; // [esp+64h] [ebp-30h] BYREF

  v18[0] = 0; /*0xffd002e1*/
  v17 = 0; /*0xffd002e9*/
  IioFuncFD15((int)buf); /*0xffd002f1*/
  if ( *((_BYTE *)buf + 24780) )
  {
    v14 = *((unsigned __int8 *)buf + 24798); /*0xffd00313*/
    *((_BYTE *)buf + 24769) = 2; /*0xffd0031e*/
    DebugPrint((int)__return_address, 3, n2, 255, 255, 255, 255, 255, "Test Pattern2 Parameter = %d\n", v14); /*0xffd00334*/
    v4 = &a2[888 * (unsigned __int8)n2 + 8608]; /*0xffd00356*/
    n6_1 = 0; /*0xffd00358*/
    LOBYTE(n6) = 0; /*0xffd00365*/
    v16 = v4; /*0xffd00369*/
    do /*0xffd003a8*/
    {
      if ( *v4 ) /*0xffd0036d*/
      {
        IioFunc8144(__return_address, (int)a2, n2, n6, (int)n2_1, *((_BYTE *)buf + 24798)); /*0xffd00386*/
        n6_1 = n6; /*0xffd0038b*/
        v4 = v16; /*0xffd00392*/
      }
      ++n6_1; /*0xffd00396*/
      v4 += 148; /*0xffd00398*/
      LOBYTE(n6) = n6_1; /*0xffd0039e*/
      v16 = v4; /*0xffd003a2*/
    }
    while ( n6_1 < 6u ); /*0xffd003a8*/
    IioFuncF5DB(__return_address, (int)a2, (int)buf, n2, 2); /*0xffd003b0*/
    DebugPrint( /*0xffd003cc*/
      (int)__return_address,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "Running Pattern2 for socket %d\n",
      (unsigned __int8)n2);
    DdrTrainFunc15A1(__return_address, n2, 0); /*0xffd003dc*/
    KtiFunc8C4((int)__return_address, 0xAu); /*0xffd003e7*/
    KtiFuncF4E(v18); /*0xffd003f1*/
    v6 = 0; /*0xffd003fd*/
    LOBYTE(n6) = 0; /*0xffd00401*/
    do /*0xffd0046a*/
    {
      v7 = MiscConfigCheck(__return_address, n2, n6, 184566948); /*0xffd00418*/
      *(_DWORD *)((char *)&v18[1] + v6) = v7; /*0xffd0041d*/
      MiscIoCheck(__return_address, n2, n6, 0xB0044A4u, v7 & 0x7FFFFFFF); /*0xffd0042f*/
      v8 = MiscConfigCheck(__return_address, n2, n6, 184567556); /*0xffd0043c*/
      *(_DWORD *)((char *)&v18[4] + v6) = v8; /*0xffd00441*/
      MiscIoCheck(__return_address, n2, n6, 0xB004704u, v8 & 0xFDFFFFFF); /*0xffd00453*/
      v6 += 4; /*0xffd0045c*/
      LOBYTE(n6) = n6 + 1; /*0xffd00464*/
    }
    while ( (unsigned __int8)n6 < 6u ); /*0xffd0046a*/
    IioFuncDF60(__return_address, (int)a2, (int)buf, n2); /*0xffd00484*/
    LOBYTE(n6) = 0; /*0xffd0048e*/
    v9 = 0; /*0xffd00492*/
    do /*0xffd004d5*/
    {
      MiscIoCheck(__return_address, n2, n6, 0xB0044A4u, *(_DWORD *)((char *)&v18[1] + v9)); /*0xffd004aa*/
      MiscIoCheck(__return_address, n2, n6, 0xB004704u, *(_DWORD *)((char *)&v18[4] + v9)); /*0xffd004be*/
      v9 += 4; /*0xffd004c7*/
      LOBYTE(n6) = n6 + 1; /*0xffd004cf*/
    }
    while ( (unsigned __int8)n6 < 6u ); /*0xffd004d5*/
    KtiFuncF4E(&v17); /*0xffd004dc*/
    n6_2 = 0; /*0xffd004e8*/
    DebugPrint((int)__return_address, 3, 255, 255, 255, 255, 255, 255, "\n"); /*0xffd004f6*/
    v11 = KtiFuncF75((int)__return_address, v18[0], SHIDWORD(v18[0]), v17, SHIDWORD(v17), 1u); /*0xffd0050e*/
    DebugPrint((int)__return_address, 3, n2, 255, 255, 255, 255, 255, "Pattern2 Finished. Total Test Time : %ds\n", v11);
    v12 = &a2[888 * (unsigned __int8)n2 + 8608]; /*0xffd0052d*/
    LOBYTE(n6) = 0; /*0xffd00539*/
    do /*0xffd0056c*/
    {
      if ( *v12 ) /*0xffd0053d*/
        IioFuncCA55(__return_address, (int)a2, n2, n6, (int)n2_1); /*0xffd00555*/
      ++n6_2; /*0xffd0055d*/
      v12 += 148; /*0xffd0055f*/
      LOBYTE(n6) = n6_2; /*0xffd00565*/
    }
    while ( n6_2 < 6u ); /*0xffd0056c*/
  }
  return 0; /*0xffd0056f*/
}

// Function: IioTailFunc57B @ 0xffd0057b (0xe5 bytes)
// Index: 2129/2560

char __cdecl IioTailFunc57B(
        unsigned __int8 *__return_address,
        int buf,
        unsigned __int8 n2,
        unsigned __int8 n6,
        unsigned __int8 n2a,
        char a6,
        char a7,
        int a8,
        int a9,
        char a10,
        unsigned __int8 n99,
        char a12,
        char n0x55)
{
  int v13; // edi
  int v14; // eax
  unsigned __int8 n31; // cl

  v13 = 516 * (n2a + 2 * (n6 + 6 * n2)); /*0xffd005c2*/
  *(_BYTE *)(v13 + buf) = 1; /*0xffd005ce*/
  LOBYTE(v14) = IioFunc8933(buf, n2, n6, n2a, a6, a7, a8, a9, a10, n99, a12, n0x55); /*0xffd005d2*/
  if ( !(_BYTE)v14 ) /*0xffd005dc*/
  {
    n31 = 0; /*0xffd005e4*/
    while ( 1 ) /*0xffd005ed*/
    {
      v14 = v13 + 16 * n31; /*0xffd005ed*/
      if ( *(_BYTE *)(v14 + buf + 4) == 0xFF ) /*0xffd005f4*/
        break; /*0xffd005f4*/
      if ( n31 == 31 ) /*0xffd005f9*/
        *(_BYTE *)(v13 + buf + 1) = 1; /*0xffd005fb*/
      if ( (unsigned __int8)n0x55 > 0x55u ) /*0xffd00602*/
        *(_BYTE *)(v13 + buf + 2) = 1; /*0xffd00604*/
      if ( ++n31 >= 0x20u ) /*0xffd0060d*/
        return v14; /*0xffd0060d*/
    }
    v14 = v13 + 16 * n31; /*0xffd0061b*/
    *(_BYTE *)(v14 + buf + 4) = a6; /*0xffd0061d*/
    *(_BYTE *)(v14 + buf + 5) = a7; /*0xffd00625*/
    *(_DWORD *)(v14 + buf + 8) = a8; /*0xffd0062d*/
    *(_BYTE *)(v14 + buf + 14) = a10; /*0xffd00635*/
    *(_WORD *)(v14 + buf + 12) = a9; /*0xffd0063d*/
    *(_BYTE *)(v14 + buf + 15) = n99; /*0xffd00642*/
    *(_BYTE *)(v14 + buf + 17) = 0; /*0xffd00646*/
    *(_BYTE *)(v14 + buf + 16) = 1 << *(_BYTE *)(buf + 24769); /*0xffd00653*/
    *(_BYTE *)(v14 + buf + 18) = n0x55; /*0xffd00657*/
  }
  return v14; /*0xffd0065b*/
}

// Function: IioTailFunc660 @ 0xffd00660 (0x4f bytes)
// Index: 2130/2560

int __cdecl IioTailFunc660(int a1, int a2, unsigned __int8 a3, char a4, char a5)
{
  int v5; // eax

  v5 = MailBoxFunc8E6B(a1, a2, a3, 117459720, 4); /*0xffd00675*/
  return MailBoxFunc902D(a1, a2, a3, 117459720, 4, ((a4 & 0xF | (16 * (a5 & 0xF))) << 15) | v5 & 0xFF807FFF); /*0xffd006ac*/
}

// Function: IioTailFunc6AF @ 0xffd006af (0x95 bytes)
// Index: 2131/2560

char __cdecl IioTailFunc6AF(
        unsigned __int8 *__return_address,
        int n2,
        int n6,
        int n2_1,
        unsigned __int8 a5,
        unsigned __int16 a6,
        unsigned __int16 a7,
        unsigned __int16 a8)
{
  RmtFunc349(__return_address, n2, n6, n2_1, a5, a6 | 0x80, 0); /*0xffd006d8*/
  RmtFunc349(__return_address, n2, n6, n2_1, a5, a7 | 0x80, 0); /*0xffd006f2*/
  RmtFunc349(__return_address, n2, n6, n2_1, a5, a8 | 0x80, 0); /*0xffd0070c*/
  RmtFunc349(__return_address, n2, n6, n2_1, a5, 0x80u, 0); /*0xffd00723*/
  return RmtFunc349(__return_address, n2, n6, n2_1, a5, 0x80u, 0); /*0xffd0073f*/
}

// Function: IioTailFunc744 @ 0xffd00744 (0x85 bytes)
// Index: 2132/2560

int __cdecl IioTailFunc744(int n67453084, unsigned int a2, int n2, int __return_address, char a5)
{
  int v6; // [esp+0h] [ebp-8h] BYREF
  int v7; // [esp+4h] [ebp-4h] BYREF

  n67453084 = 67453084; /*0xffd0074c*/
  AutoGenFunc3C4((int)&n67453084, (int)&v7); /*0xffd00758*/
  n67453084 = 67453088; /*0xffd00760*/
  AutoGenFunc3C4((int)&n67453084, (int)&v6); /*0xffd0076c*/
  if ( a5 ) /*0xffd0077b*/
  {
    if ( a5 == 1 ) /*0xffd00780*/
    {
      v7 |= 0x100000u; /*0xffd00787*/
      v6 |= 0x100000u; /*0xffd0078a*/
    }
  }
  else
  {
    v7 &= ~0x100000u; /*0xffd00794*/
    v6 &= ~0x100000u; /*0xffd00797*/
  }
  n67453084 = 67453084; /*0xffd0079d*/
  AutoGenFunc3DB((int)&n67453084, (int)&v7); /*0xffd007a9*/
  n67453084 = 67453088; /*0xffd007b1*/
  return AutoGenFunc3DB((int)&n67453084, (int)&v6); /*0xffd007c5*/
}

// Function: PrepareSkuing @ 0xffd007c9 (0x80 bytes)
// Index: 2133/2560

int __cdecl PrepareSkuing(int __return_address)
{
  int __return_address_1; // edx
  int n4; // esi
  int v3; // ebx
  int v4; // ebp
  int result; // eax
  int n4_1; // [esp+10h] [ebp-14h]

  __return_address_1 = __return_address; /*0xffd007cc*/
  n4 = 4; /*0xffd007e2*/
  v3 = *(unsigned __int8 *)(__return_address + 453660) << 8; /*0xffd007e3*/
  v4 = 0; /*0xffd007e6*/
  n4_1 = 4; /*0xffd007f4*/
  do /*0xffd0083f*/
  {
    result = 1 << v4; /*0xffd007fd*/
    if ( ((1 << v4) & *(_DWORD *)(__return_address_1 + 246468)) != 0 ) /*0xffd00805*/
    {
      v3 = (v4 << 8) | v3 & 0xFFFF00FF; /*0xffd0081d*/
      result = IioTailFunc744(0, v3, 2, __return_address, 0); /*0xffd00827*/
      __return_address_1 = __return_address; /*0xffd0082c*/
      n4 = n4_1; /*0xffd00833*/
    }
    ++v4; /*0xffd00837*/
    n4_1 = --n4; /*0xffd0083b*/
  }
  while ( n4 ); /*0xffd0083f*/
  return result; /*0xffd00841*/
}

// Function: IioTailFunc849 @ 0xffd00849 (0x2d bytes)
// Index: 2134/2560

int __cdecl IioTailFunc849(int __return_address)
{
  *(_DWORD *)__return_address = 0x1000000; /*0xffd0084f*/
  *(_DWORD *)(__return_address + 4) = 0; /*0xffd00855*/
  *(_DWORD *)(__return_address + 105) = 0x1000000; /*0xffd00858*/
  *(_DWORD *)(__return_address + 88) = 1; /*0xffd0085f*/
  *(_BYTE *)(__return_address + 9) = 0; /*0xffd00866*/
  *(_BYTE *)(__return_address + 92) = 0; /*0xffd00869*/
  *(_WORD *)(__return_address + 8478) = 2; /*0xffd0086c*/
  return __return_address; /*0xffd00875*/
}

// Function: IIOFunc0876 @ 0xffd00876 (0x402 bytes)
// Index: 2135/2560

unsigned int __cdecl IIOFunc0876(int __return_address)
{
  char v1; // al
  int v2; // eax
  int v3; // eax
  int n4; // ebx
  int v5; // eax
  int v6; // ecx
  _BYTE *v7; // eax
  int n6; // esi
  unsigned int result; // eax

  *(_DWORD *)(__return_address + 771) = 0; /*0xffd00884*/
  v1 = *(_BYTE *)(__return_address + 157); /*0xffd0088a*/
  *(_BYTE *)(__return_address + 1408) |= 1u; /*0xffd00890*/
  *(_DWORD *)(__return_address + 1388) |= 0x120000u; /*0xffd00898*/
  *(_BYTE *)(__return_address + 157) = v1 & 0xF4 | 8; /*0xffd008a4*/
  *(_WORD *)(__return_address + 254) = -24533; /*0xffd008af*/
  *(_WORD *)(__return_address + 241) = 1260; /*0xffd008bb*/
  *(_WORD *)(__return_address + 244) = 15600; /*0xffd008c7*/
  *(_WORD *)(__return_address + 267) = 1024; /*0xffd008d3*/
  v2 = *(_DWORD *)(__return_address + 134) & 0x5F23E3F7; /*0xffd008e0*/
  *(_DWORD *)(__return_address + 1006) = 0x20000; /*0xffd008e5*/
  *(_BYTE *)(__return_address + 1018) = 2; /*0xffd008f4*/
  *(_WORD *)(__return_address + 145) = 6; /*0xffd00900*/
  *(_DWORD *)(__return_address + 750) = 0; /*0xffd00909*/
  *(_DWORD *)(__return_address + 754) = 0; /*0xffd0090f*/
  *(_DWORD *)(__return_address + 758) = 0; /*0xffd00915*/
  *(_BYTE *)(__return_address + 762) = 0; /*0xffd0091b*/
  *(_BYTE *)(__return_address + 1013) = 2; /*0xffd00921*/
  *(_WORD *)(__return_address + 974) = 92; /*0xffd00928*/
  *(_BYTE *)(__return_address + 159) = 2; /*0xffd00931*/
  *(_BYTE *)(__return_address + 160) = 1; /*0xffd00938*/
  *(_BYTE *)(__return_address + 1012) = 1; /*0xffd0093e*/
  *(_WORD *)(__return_address + 161) = 2560; /*0xffd00944*/
  *(_BYTE *)(__return_address + 163) = 0; /*0xffd0094d*/
  *(_DWORD *)(__return_address + 233) = 0; /*0xffd00953*/
  *(_BYTE *)(__return_address + 237) = 1; /*0xffd00959*/
  *(_BYTE *)(__return_address + 238) = 1; /*0xffd0095f*/
  *(_BYTE *)(__return_address + 239) = 0; /*0xffd00965*/
  *(_DWORD *)(__return_address + 250) = 0; /*0xffd0096b*/
  *(_BYTE *)(__return_address + 240) = 1; /*0xffd00971*/
  *(_BYTE *)(__return_address + 243) = 10; /*0xffd00977*/
  *(_DWORD *)(__return_address + 246) = 100000; /*0xffd0097e*/
  *(_WORD *)(__return_address + 231) = 1; /*0xffd00988*/
  *(_BYTE *)(__return_address + 973) = 0; /*0xffd0098f*/
  *(_DWORD *)(__return_address + 130) = 1375735106; /*0xffd00995*/
  *(_DWORD *)(__return_address + 134) = v2 | 0x204C1C00; /*0xffd0099b*/
  *(_BYTE *)(__return_address + 144) = 0; /*0xffd009a1*/
  *(_WORD *)(__return_address + 1484) = 0; /*0xffd009a7*/
  if ( *(_BYTE *)(__return_address + 1545) == 1 ) /*0xffd009b4*/
  {
    *(_BYTE *)(__return_address + 1010) = 1; /*0xffd009b6*/
    *(_BYTE *)(__return_address + 1387) = 1; /*0xffd009bc*/
    *(_DWORD *)(__return_address + 130) = 1375751490; /*0xffd009c2*/
  }
  else
  {
    *(_BYTE *)(__return_address + 1010) = 2; /*0xffd009ce*/
    *(_BYTE *)(__return_address + 1387) = 2; /*0xffd009d5*/
    *(_DWORD *)(__return_address + 130) = 1375735106; /*0xffd009dc*/
  }
  *(_BYTE *)(__return_address + 1439) = 0; /*0xffd009e2*/
  memset((void *)(__return_address + 1440), 0, 0x18u); /*0xffd009f3*/
  *(_DWORD *)(__return_address + 1401) = 0x1000000; /*0xffd009f5*/
  *(_WORD *)(__return_address + 1437) = 15000; /*0xffd00a04*/
  *(_DWORD *)(__return_address + 1392) = 16842752; /*0xffd00a10*/
  *(_BYTE *)(__return_address + 1396) = 0; /*0xffd00a1a*/
  *(_BYTE *)(__return_address + 1405) = 1; /*0xffd00a20*/
  *(_WORD *)(__return_address + 1384) = 256; /*0xffd00a27*/
  *(_WORD *)(__return_address + 1366) = 1; /*0xffd00a30*/
  *(_DWORD *)(__return_address + 1397) = 16777473; /*0xffd00a39*/
  *(_DWORD *)(__return_address + 1368) = 67372036; /*0xffd00a43*/
  *(_DWORD *)(__return_address + 1372) = 67372036; /*0xffd00a49*/
  v3 = *(_DWORD *)(__return_address + 134); /*0xffd00a4f*/
  *(_BYTE *)(__return_address + 1364) = 2; /*0xffd00a55*/
  *(_WORD *)(__return_address + 148) = 515; /*0xffd00a61*/
  *(_DWORD *)(__return_address + 134) = v3 & 0xBFFFBC9D | 0x40004262; /*0xffd00a6f*/
  *(_DWORD *)(__return_address + 171) = 0x1000000; /*0xffd00a77*/
  *(_WORD *)(__return_address + 175) = 257; /*0xffd00a81*/
  *(_DWORD *)(__return_address + 178) = 0x1000000; /*0xffd00a8a*/
  *(_DWORD *)(__return_address + 188) = 33620225; /*0xffd00a94*/
  *(_BYTE *)(__return_address + 177) = 16; /*0xffd00a9e*/
  *(_DWORD *)(__return_address + 182) = 16843009; /*0xffd00aa5*/
  *(_BYTE *)(__return_address + 186) = 1; /*0xffd00aaf*/
  n4 = 4; /*0xffd00ab8*/
  *(_BYTE *)(__return_address + 1011) = 4; /*0xffd00ab9*/
  *(_DWORD *)(__return_address + 130) |= 0x80u; /*0xffd00ac2*/
  *(_WORD *)(__return_address + 193) = 1; /*0xffd00ac8*/
  *(_BYTE *)(__return_address + 195) = 0; /*0xffd00ad1*/
  *(_DWORD *)(__return_address + 134) |= 0x1E018004u; /*0xffd00ad7*/
  *(_BYTE *)(__return_address + 169) = 1; /*0xffd00ae1*/
  *(_BYTE *)(__return_address + 269) = 0; /*0xffd00ae8*/
  v5 = *(_DWORD *)(__return_address + 1388); /*0xffd00aee*/
  *(_DWORD *)(__return_address + 134) |= 0x80u; /*0xffd00af4*/
  *(_DWORD *)(__return_address + 130) &= ~0x1000u; /*0xffd00afd*/
  *(_DWORD *)(__return_address + 134) &= ~0x2000u; /*0xffd00b0b*/
  *(_DWORD *)(__return_address + 1388) = v5 & 0xFFFFFFFA | 4; /*0xffd00b15*/
  *(_BYTE *)(__return_address + 166) = 0; /*0xffd00b20*/
  *(_DWORD *)(__return_address + 1014) = 286294015; /*0xffd00b26*/
  *(_BYTE *)(__return_address + 226) = 1; /*0xffd00b30*/
  *(_WORD *)(__return_address + 228) = 0; /*0xffd00b37*/
  *(_BYTE *)(__return_address + 230) = 0; /*0xffd00b3e*/
  *(_BYTE *)(__return_address + 1479) = 0; /*0xffd00b44*/
  *(_BYTE *)(__return_address + 1482) = 0; /*0xffd00b4a*/
  *(_DWORD *)(__return_address + 222) = 24; /*0xffd00b50*/
  *(_BYTE *)(__return_address + 997) = 0; /*0xffd00b5a*/
  v6 = __return_address + 275; /*0xffd00b60*/
  *(_DWORD *)(__return_address + 214) = 0x7FFF; /*0xffd00b66*/
  *(_DWORD *)(__return_address + 218) = 0x7FFF; /*0xffd00b6c*/
  do /*0xffd00ba0*/
  {
    *(_WORD *)(v6 - 1) = 1; /*0xffd00b74*/
    v7 = (_BYTE *)(v6 + 4); /*0xffd00b7a*/
    n6 = 6; /*0xffd00b7d*/
    do /*0xffd00b98*/
    {
      *(v7 - 2) = 1; /*0xffd00b7e*/
      *v7 = 2; /*0xffd00b87*/
      v7 += 19; /*0xffd00b8a*/
      *((_WORD *)v7 - 4) = -1; /*0xffd00b8d*/
      *(v7 - 17) = -1; /*0xffd00b91*/
      --n6; /*0xffd00b95*/
    }
    while ( n6 ); /*0xffd00b98*/
    v6 += 119; /*0xffd00b9a*/
    --n4; /*0xffd00b9d*/
  }
  while ( n4 ); /*0xffd00ba0*/
  *(_BYTE *)(__return_address + 1429) = 0; /*0xffd00ba4*/
  *(_BYTE *)(__return_address + 1427) = 1; /*0xffd00baa*/
  *(_BYTE *)(__return_address + 1043) = 2; /*0xffd00bb1*/
  *(_DWORD *)(__return_address + 998) = -1; /*0xffd00bb8*/
  *(_DWORD *)(__return_address + 1002) = -1; /*0xffd00bbf*/
  *(_BYTE *)(__return_address + 1566) = 1; /*0xffd00bc6*/
  *(_DWORD *)(__return_address + 1388) &= ~8u; /*0xffd00bcd*/
  *(_DWORD *)(__return_address + 138) &= ~2u; /*0xffd00bd4*/
  *(_DWORD *)(__return_address + 1388) = *(_DWORD *)(__return_address + 1388) & 0xFFFFE3FF | 0x1000; /*0xffd00beb*/
  result = *(_DWORD *)(__return_address + 138) & 0xFFFFDDBE | 0x2201; /*0xffd00bfa*/
  *(_DWORD *)(__return_address + 138) = result; /*0xffd00bff*/
  *(_BYTE *)(__return_address + 1464) = 0; /*0xffd00c05*/
  *(_WORD *)(__return_address + 1466) = 256; /*0xffd00c0b*/
  *(_WORD *)(__return_address + 1477) = 256; /*0xffd00c14*/
  *(_BYTE *)(__return_address + 1468) = 0; /*0xffd00c1d*/
  *(_BYTE *)(__return_address + 1480) = 0; /*0xffd00c23*/
  *(_BYTE *)(__return_address + 1483) = 1; /*0xffd00c29*/
  *(_WORD *)(__return_address + 1435) = 257; /*0xffd00c30*/
  *(_BYTE *)(__return_address + 1365) = 1; /*0xffd00c39*/
  *(_BYTE *)(__return_address + 143) = 0; /*0xffd00c40*/
  *(_DWORD *)(__return_address + 134) &= ~1u; /*0xffd00c46*/
  *(_DWORD *)(__return_address + 1388) &= 0xFFFFFFCF; /*0xffd00c4d*/
  *(_WORD *)(__return_address + 259) = 1; /*0xffd00c54*/
  *(_BYTE *)(__return_address + 263) = 2; /*0xffd00c5e*/
  *(_WORD *)(__return_address + 1022) = 256; /*0xffd00c66*/
  *(_BYTE *)(__return_address + 1024) = 1; /*0xffd00c6f*/
  return result; /*0xffd00c5d*/
}

// Function: IioTailFuncC78 @ 0xffd00c78 (0xcc bytes)
// Index: 2136/2560

int __cdecl IioTailFuncC78(int __return_address, int a2)
{
  bool v2; // zf
  int n760; // eax

  *(_DWORD *)(a2 + 1489) = 7; /*0xffd00c89*/
  *(_WORD *)(a2 + 1514) = 128; /*0xffd00c93*/
  *(_DWORD *)(a2 + 1524) = 0x80000000; /*0xffd00c9a*/
  *(_DWORD *)(a2 + 1528) = 0x10000000; /*0xffd00ca4*/
  *(_DWORD *)(a2 + 1532) = -1879048192; /*0xffd00cae*/
  *(_DWORD *)(a2 + 1536) = 1811939328; /*0xffd00cb8*/
  *(_DWORD *)(a2 + 1540) = 14336; /*0xffd00cc2*/
  *(_DWORD *)(a2 + 1557) = 288; /*0xffd00ccc*/
  *(_DWORD *)(a2 + 1510) = 0x40000; /*0xffd00cd6*/
  *(_WORD *)(a2 + 1561) = 0; /*0xffd00ce0*/
  *(_BYTE *)(a2 + 1545) = 1; /*0xffd00ce7*/
  *(_BYTE *)(a2 + 1563) = 1; /*0xffd00cee*/
  *(_BYTE *)(a2 + 1547) = 0; /*0xffd00cf5*/
  *(_DWORD *)(a2 + 1520) = 0; /*0xffd00cfb*/
  *(_BYTE *)(a2 + 1552) = 0; /*0xffd00d01*/
  AutoGenFunc804(0x72u, 0x5Cu); /*0xffd00d07*/
  v2 = AutoGenFunc7FD(0x73u) == 33; /*0xffd00d16*/
  n760 = 760; /*0xffd00d18*/
  if ( !v2 ) /*0xffd00d1d*/
    n760 = 1016; /*0xffd00d1f*/
  *(_BYTE *)(a2 + 1556) = 0; /*0xffd00d24*/
  *(_BYTE *)(a2 + 1569) = 0; /*0xffd00d2a*/
  *(_WORD *)(a2 + 1548) = n760; /*0xffd00d30*/
  *(_DWORD *)(a2 + 1494) = 2; /*0xffd00d37*/
  return n760; /*0xffd00d41*/
}

// Function: IioTailFuncD44 @ 0xffd00d44 (0x23 bytes)
// Index: 2137/2560

unsigned int __cdecl IioTailFuncD44(int __return_address)
{
  IioTailFuncC78(__return_address, __return_address); /*0xffd00d4b*/
  KtiFuncCAF9(__return_address); /*0xffd00d51*/
  IioTailX_FFD0BEBD(__return_address); /*0xffd00d57*/
  return j_IIOFunc0876(__return_address); /*0xffd00d65*/
}

// Function: IioTailFuncD67 @ 0xffd00d67 (0x23 bytes)
// Index: 2138/2560

int __cdecl IioTailFuncD67(int __return_address)
{
  int result; // eax
  int n8; // edx

  result = 0; /*0xffd00d6b*/
  n8 = *(_DWORD *)(__return_address + 9405); /*0xffd00d6d*/
  if ( (n8 == 8 || n8 == 9) && (*(_BYTE *)(__return_address + 130) & 2) != 0 ) /*0xffd00d84*/
    return 1; /*0xffd00d88*/
  return result; /*0xffd00d89*/
}

// Function: IioTailFuncD8A @ 0xffd00d8a (0xa bytes)
// Index: 2139/2560

int __cdecl IioTailFuncD8A(int __return_address, int n4, _DWORD *a3)
{
  *a3 = 0; /*0xffd00d8e*/
  return 0; /*0xffd00d93*/
}

// Function: IioTailFuncD94 @ 0xffd00d94 (0x16 bytes)
// Index: 2140/2560

BOOL __cdecl IioTailFuncD94(int __return_address)
{
  return *(_DWORD *)(__return_address + 257323) != *(_DWORD *)(__return_address + 246468); /*0xffd00da9*/
}

// Function: IioTailFuncDAA @ 0xffd00daa (0x9b bytes)
// Index: 2141/2560

int __cdecl IioTailFuncDAA(int __return_address, int n4)
{
  int v2; // ebx
  unsigned int v3; // esi

  v2 = 0; /*0xffd00db0*/
  if ( !*(_DWORD *)(__return_address + 246404) && (*(_DWORD *)(__return_address + 130) & 0x40000002) != 0 ) /*0xffd00dc8*/
  {
    if ( *(_BYTE *)(__return_address + 243528) ) /*0xffd00dca*/
    {
      if ( *(_BYTE *)(__return_address + 243534) != 1 ) /*0xffd00dd9*/
      {
        *(_BYTE *)(__return_address + 243534) = 1; /*0xffd00dde*/
        v3 = (unsigned __int16)RmtFuncA689((_BYTE *)__return_address); /*0xffd00dea*/
        DebugPrint( /*0xffd00e0c*/
          __return_address,
          2,
          n4,
          255,
          255,
          255,
          255,
          255,
          "Current Linear Date = %u days - Last Boot Date = %u days\n",
          v3,
          *(unsigned __int16 *)(__return_address + 257321));
        if ( v3 > (unsigned int)*(unsigned __int16 *)(__return_address + 257321) + 90 ) /*0xffd00e20*/
        {
          DebugPrint(__return_address, 3, n4, 255, 255, 255, 255, 255, "Training Data older than %u days\n", 90); /*0xffd00e35*/
          return 1; /*0xffd00e3d*/
        }
      }
    }
  }
  return v2; /*0xffd00e40*/
}

// Function: IioTailFuncE45 @ 0xffd00e45 (0x4 bytes)
// Index: 2142/2560

int IioTailFuncE45()
{
  return 1; /*0xffd00e48*/
}

// Function: IioTailFuncE49 @ 0xffd00e49 (0x1a bytes)
// Index: 2143/2560

int __cdecl IioTailFuncE49(int __return_address, unsigned __int8 n4)
{
  return (*(_DWORD *)(28 * n4 + __return_address + 255256) >> 9) & 1; /*0xffd00e62*/
}

// Function: IioTailFuncE63 @ 0xffd00e63 (0xdf bytes)
// Index: 2144/2560

int __cdecl IioTailFuncE63(int __return_address, int n4)
{
  int n305419896; // ebx
  int v3; // edi
  int v4; // edx

  n305419896 = 0; /*0xffd00e6d*/
  v3 = 0; /*0xffd00e76*/
  LogDebugString((_BYTE *)__return_address, (int)"Get socket PPIN\n"); /*0xffd00e78*/
  if ( (*(_BYTE *)(__return_address + 246408) & 4) != 0 ) /*0xffd00e86*/
  {
    LogDebugString((_BYTE *)__return_address, (int)"Running in Simics\n"); /*0xffd00f18*/
    v3 = -1; /*0xffd00f1f*/
    n305419896 = 305419896; /*0xffd00f22*/
    goto LABEL_9; /*0xffd00f22*/
  }
  if ( ((1 << n4) & *(_DWORD *)(__return_address + 246468)) == 0 ) /*0xffd00e9a*/
  {
LABEL_9:
    LogDebugString((_BYTE *)__return_address, (int)"PPIN Hi = 0x%08X, PPIN Lo = 0x%08X\n", v3, n305419896); /*0xffd00f27*/
    return n305419896; /*0xffd00f2f*/
  }
  if ( (KtiFunc2C7D(__return_address, n4, 0xCEu) & 0x800000) != 0 ) /*0xffd00eb6*/
  {
    if ( (KtiFunc2C7D(__return_address, n4, 0x4Eu) & 1) != 0 ) /*0xffd00ed7*/
    {
      LogDebugString((_BYTE *)__return_address, (int)"PPIN Locked\n"); /*0xffd00ede*/
      return n305419896; /*0xffd00ede*/
    }
    KtiFunc35EC(__return_address, n4, 0x4Eu, 2u); /*0xffd00eea*/
    n305419896 = KtiFunc2C7D(__return_address, n4, 0x4Fu); /*0xffd00f03*/
    v3 = v4; /*0xffd00f05*/
    KtiFunc35EC(__return_address, n4, 0x4Eu, 0); /*0xffd00f08*/
    goto LABEL_9; /*0xffd00f10*/
  }
  LogDebugString((_BYTE *)__return_address, (int)"Socket not PPIN Capable\n"); /*0xffd00ebe*/
  return n305419896; /*0xffd00f3b*/
}

// Function: IioTailFuncF42 @ 0xffd00f42 (0x7c2 bytes)
// Index: 2145/2560

int __cdecl IioTailFuncF42(int __return_address, unsigned __int8 n4)
{
  int v3; // esi
  int n8; // ebx

  LogDebugString(
    (_BYTE *)__return_address,
    (int)"  lowGap:          %02X\n",
    *(unsigned __int8 *)(__return_address + 1557));
  LogDebugString(
    (_BYTE *)__return_address,
    (int)"  highGap:         %02X\n",
    *(unsigned __int8 *)(__return_address + 1558));
  LogDebugString(
    (_BYTE *)__return_address,
    (int)"  mmiohSize:       %08X\n",
    *(unsigned __int16 *)(__return_address + 1559));
  LogDebugString(
    (_BYTE *)__return_address,
    (int)"  isocEn:          %02X\n",
    *(unsigned __int8 *)(__return_address + 1561));
  LogDebugString(
    (_BYTE *)__return_address,
    (int)"  dcaEn:           %02X\n",
    *(unsigned __int8 *)(__return_address + 1563));
  LogDebugString((_BYTE *)__return_address, (int)"  options (Chip):  %08X\n", *(_DWORD *)(__return_address + 130));
  LogDebugString((_BYTE *)__return_address, (int)"      SCRAMBLE_EN_DDRT         "... [15375 chars total]

// Function: IioTailFunc1704 @ 0xffd01704 (0x202 bytes)
// Index: 2146/2560

int __cdecl IioTailFunc1704(int __return_address)
{
  int v1; // edx

  v1 = 0; /*0xffd01708*/
  if ( *(_BYTE *)(__return_address + 258209) != *(_BYTE *)(__return_address + 1009) /*0xffd018fe*/
    || *(_DWORD *)(__return_address + 258198) != *(_DWORD *)(__return_address + 998)
    || *(_DWORD *)(__return_address + 258202) != *(_DWORD *)(__return_address + 1002)
    || *(_BYTE *)(__return_address + 258210) != *(_BYTE *)(__return_address + 1010)
    || *(_BYTE *)(__return_address + 258211) != *(_BYTE *)(__return_address + 1011)
    || *(_BYTE *)(__return_address + 258606) != *(_BYTE *)(__return_address + 1406)
    || *(_BYTE *)(__return_address + 257363) != *(_BYTE *)(__return_address + 163)
    || *(_DWORD *)(__return_address + 258169) != *(_DWORD *)(__return_address + 969)
    || *(_WORD *)(__return_address + 258214) != *(_WORD *)(__return_address + 1014)
    || *(_BYTE *)(__return_address + 257426) != *(_BYTE *)(__return_address + 226)
    || *(_BYTE *)(__return_address + 257372) != *(_BYTE *)(__return_address + 172)
    || *(_BYTE *)(__return_address + 257373) != *(_BYTE *)(__return_address + 173)
    || *(_BYTE *)(__return_address + 257374) != *(_BYTE *)(__return_address + 174)
    || *(_BYTE *)(__return_address + 257375) != *(_BYTE *)(__return_address + 175)
    || *(_BYTE *)(__return_address + 257376) != *(_BYTE *)(__return_address + 176)
    || *(_BYTE *)(__return_address + 257377) != *(_BYTE *)(__return_address + 177)
    || *(_BYTE *)(__return_address + 257378) != *(_BYTE *)(__return_address + 178)
    || *(_BYTE *)(__return_address + 257379) != *(_BYTE *)(__return_address + 179)
    || *(_BYTE *)(__return_address + 257380) != *(_BYTE *)(__return_address + 180)
    || *(_BYTE *)(__return_address + 257381) != *(_BYTE *)(__return_address + 181)
    || *(_BYTE *)(__return_address + 257382) != *(_BYTE *)(__return_address + 182)
    || *(_BYTE *)(__return_address + 257383) != *(_BYTE *)(__return_address + 183)
    || *(_BYTE *)(__return_address + 257384) != *(_BYTE *)(__return_address + 184)
    || *(_BYTE *)(__return_address + 257385) != *(_BYTE *)(__return_address + 185)
    || *(_BYTE *)(__return_address + 257386) != *(_BYTE *)(__return_address + 186)
    || *(_BYTE *)(__return_address + 257388) != *(_BYTE *)(__return_address + 188)
    || *(_BYTE *)(__return_address + 257389) != *(_BYTE *)(__return_address + 189)
    || *(_BYTE *)(__return_address + 257390) != *(_BYTE *)(__return_address + 190)
    || *(_BYTE *)(__return_address + 257391) != *(_BYTE *)(__return_address + 191)
    || *(_BYTE *)(__return_address + 257428) != *(_BYTE *)(__return_address + 228) )
  {
    return 1; /*0xffd01902*/
  }
  return v1; /*0xffd01905*/
}

// Function: IioTailFunc1906 @ 0xffd01906 (0x22 bytes)
// Index: 2147/2560

BOOL __cdecl IioTailFunc1906(int __return_address, unsigned __int8 n4)
{
  return *(_BYTE *)(119 * n4 + __return_address + 257475) != *(_BYTE *)(119 * n4 + __return_address + 275); /*0xffd01923*/
}

// Function: IioTailFunc1928 @ 0xffd01928 (0x23 bytes)
// Index: 2148/2560

char __cdecl IioTailFunc1928(int a1, unsigned __int8 a2)
{
  char result; // al

  result = *(_BYTE *)(119 * a2 + a1 + 274); /*0xffd0193b*/
  *(_BYTE *)(48704 * a2 + a1 + 258689) = result; /*0xffd01942*/
  return result; /*0xffd01949*/
}

// Function: IioTailFunc194B @ 0xffd0194b (0x33 bytes)
// Index: 2149/2560

char __cdecl IioTailFunc194B(int __return_address)
{
  unsigned int v1; // eax

  KtiFuncE78(__return_address, 0, 3u); /*0xffd01955*/
  LOBYTE(v1) = KtiFuncE78(__return_address, 0, 9u); /*0xffd0195f*/
  if ( (_BYTE)v1 ) /*0xffd01969*/
  {
    v1 = *(_DWORD *)(__return_address + 1002) & 0xFEFFFFFF; /*0xffd01971*/
    *(_DWORD *)(__return_address + 628656) = v1; /*0xffd01976*/
  }
  return v1; /*0xffd0197c*/
}

// Function: IioTailFn_FFD0197E @ 0xffd0197e (0x2d bytes)
// Index: 2150/2560

int __cdecl IioTailFn_FFD0197E(int __return_address, _DWORD *i)
{
  int result; // eax

  result = IioTailCmdInitCfg(i); /*0xffd01982*/
  if ( result ) /*0xffd0198a*/
    return DebugPrint(__return_address, 3, 255, 255, 255, 255, 255, 255, "Error running EV content.\n"); /*0xffd019a2*/
  return result; /*0xffd019aa*/
}

// Function: IioTailFn_FFD019AB @ 0xffd019ab (0x38 bytes)
// Index: 2151/2560

int __cdecl IioTailFn_FFD019AB(int __return_address, _DWORD *i, _DWORD *a3, int a4, int a5, int a6, int a7, int a8)
{
  int result; // eax

  i[4] = 0; /*0xffd019bb*/
  i[2] = a4; /*0xffd019bf*/
  i[3] = a5; /*0xffd019c5*/
  i[5] = a7; /*0xffd019cb*/
  i[6] = a8; /*0xffd019d1*/
  i[1] = a3; /*0xffd019d4*/
  a3[1] = __return_address; /*0xffd019d7*/
  result = i[3]; /*0xffd019da*/
  *(_DWORD *)(result + 4) = __return_address; /*0xffd019de*/
  return result; /*0xffd019dd*/
}

// Function: IioTailFn_FFD019E3 @ 0xffd019e3 (0x55 bytes)
// Index: 2152/2560

_BYTE *__cdecl IioTailFn_FFD019E3(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        unsigned __int8 a3,
        unsigned __int8 a4,
        _BYTE *a5)
{
  unsigned int v5; // eax
  int n2; // ecx
  _BYTE *n25165824; // eax

  v5 = MiscConfigCheck(a1, a2, a3, 4 * a4 + 117457024); /*0xffd019fb*/
  n2 = (v5 >> 23) & 3; /*0xffd01a08*/
  if ( n2 == 1 ) /*0xffd01a0e*/
  {
    *a5 = 2; /*0xffd01a13*/
    return a5; /*0xffd01a10*/
  }
  else if ( n2 == 2 ) /*0xffd01a1b*/
  {
    *a5 = 4; /*0xffd01a20*/
    return a5; /*0xffd01a1d*/
  }
  else
  {
    n25165824 = (_BYTE *)(v5 & 0x1800000); /*0xffd01a2a*/
    if ( n25165824 == (_BYTE *)25165824 ) /*0xffd01a2e*/
    {
      *a5 = 8; /*0xffd01a33*/
      return a5; /*0xffd01a30*/
    }
  }
  return n25165824; /*0xffd01a16*/
}

// Function: IioTailFn_FFD01A38 @ 0xffd01a38 (0x20 bytes)
// Index: 2153/2560

int __cdecl IioTailFn_FFD01A38(unsigned __int8 *a1, unsigned __int8 a2, unsigned __int8 a3, _BYTE *a4)
{
  int result; // eax

  result = MiscConfigCheck(a1, a2, a3, 184567144); /*0xffd01a49*/
  *a4 = result; /*0xffd01a55*/
  return result; /*0xffd01a57*/
}

// Function: IioTailFn_FFD01A58 @ 0xffd01a58 (0x22 bytes)
// Index: 2154/2560

char __cdecl IioTailFn_FFD01A58(unsigned __int8 *a1, unsigned __int8 a2, unsigned __int8 a3, _BYTE *a4)
{
  char result; // al

  result = MiscConfigCheck(a1, a2, a3, 184567168) & 0x3F; /*0xffd01a72*/
  *a4 = result; /*0xffd01a77*/
  return result; /*0xffd01a79*/
}

// Function: IioTailFn_FFD01A7A @ 0xffd01a7a (0x27 bytes)
// Index: 2155/2560

int __cdecl IioTailFn_FFD01A7A(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        unsigned __int8 a3,
        unsigned __int8 a4,
        int *a5)
{
  int result; // eax

  result = MiscConfigCheck(a1, a2, a3, 4 * a4 + 184632644); /*0xffd01a92*/
  *a5 = result; /*0xffd01a9d*/
  return result; /*0xffd01a9f*/
}

// Function: IioTailFn_FFD01AA1 @ 0xffd01aa1 (0x27 bytes)
// Index: 2156/2560

int __cdecl IioTailFn_FFD01AA1(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        unsigned __int8 a3,
        unsigned __int8 a4,
        int *a5)
{
  int result; // eax

  result = MiscConfigCheck(a1, a2, a3, 4 * a4 + 184632632); /*0xffd01ab9*/
  *a5 = result; /*0xffd01ac4*/
  return result; /*0xffd01ac6*/
}

// Function: IioTailFn_FFD01AC8 @ 0xffd01ac8 (0x5c bytes)
// Index: 2157/2560

char __cdecl IioTailFn_FFD01AC8(unsigned __int8 *a1, unsigned __int8 a2, unsigned __int8 a3, int a4)
{
  int v4; // eax
  unsigned int v5; // eax
  int v6; // ecx

  v4 = MiscConfigCheck(a1, a2, a3, 184567152); /*0xffd01ada*/
  *(_DWORD *)(a4 + 2) = v4 & 0x1FFFFF; /*0xffd01afa*/
  *(_BYTE *)a4 = HIBYTE(v4) & 7; /*0xffd01b00*/
  v5 = MiscConfigCheck(a1, a2, a3, 184567156); /*0xffd01b02*/
  v6 = (v5 >> 2) & 0xFFF; /*0xffd01b0f*/
  *(_WORD *)(a4 + 6) = v6; /*0xffd01b1a*/
  *(_BYTE *)(a4 + 1) = HIBYTE(v5) & 0xF; /*0xffd01b1e*/
  return HIBYTE(v5) & 0xF; /*0xffd01b21*/
}

// Function: IioTailFn_FFD01B24 @ 0xffd01b24 (0x51 bytes)
// Index: 2158/2560

char __cdecl IioTailFn_FFD01B24(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        unsigned __int8 a3,
        unsigned __int8 a4,
        int *a5,
        _BYTE *a6)
{
  char result; // al

  *a5 = MiscConfigCheck(a1, a2, a3, 8 * a4 + 184567244) & 0x7FFFFF; /*0xffd01b55*/
  result = ((MiscConfigCheck(a1, a2, a3, 184567160) & 0x1FFu) >> a4) & 1; /*0xffd01b6e*/
  *a6 = result; /*0xffd01b71*/
  return result; /*0xffd01b70*/
}

// Function: IioTailFn_FFD01B75 @ 0xffd01b75 (0x142 bytes)
// Index: 2159/2560

unsigned int __usercall IioTailFn_FFD01B75@<eax>(
        unsigned int n4@<eax>,
        unsigned __int8 *a2,
        unsigned __int8 a3,
        unsigned __int8 a4,
        char a5,
        _BYTE *a6)
{
  unsigned __int8 n4_6; // bl
  unsigned __int8 n2; // cl
  unsigned __int8 n4_2; // dl
  unsigned int v9; // edi
  unsigned int v10; // ebp
  unsigned __int8 n3; // bl
  int v12; // edi
  char n4_4; // cl
  char v15; // si
  unsigned int v16; // eax
  char v17; // cl
  unsigned __int8 n2_1; // [esp+13h] [ebp-5h]
  unsigned __int8 n4_3; // [esp+14h] [ebp-4h]
  char n4_5; // [esp+15h] [ebp-3h]
  char v21; // [esp+16h] [ebp-2h]
  char n4_1; // [esp+17h] [ebp-1h]
  unsigned int v23; // [esp+28h] [ebp+10h]
  char n9; // [esp+28h] [ebp+10h]

  n4_6 = 0; /*0xffd01b78*/
  BYTE1(n4) = (a5 & 0x55) != 0; /*0xffd01b80*/
  n4_5 = 0; /*0xffd01b83*/
  n2 = 0; /*0xffd01b8c*/
  LOBYTE(n4) = (a5 & 0xAA) != 0; /*0xffd01b8f*/
  n2_1 = 0; /*0xffd01b92*/
  v21 = BYTE1(n4); /*0xffd01b96*/
  n4_2 = 0; /*0xffd01b9a*/
  n4_3 = 0; /*0xffd01b9c*/
  n4_1 = n4; /*0xffd01ba0*/
  if ( BYTE1(n4) == 1 ) /*0xffd01ba8*/
  {
    if ( (_BYTE)n4 == 1 ) /*0xffd01bac*/
    {
      n2_1 = 0; /*0xffd01bb2*/
      n4_2 = 4; /*0xffd01bb6*/
LABEL_8:
      n4_3 = n4_2; /*0xffd01bc6*/
      goto LABEL_9; /*0xffd01bc6*/
    }
    n4_2 = 2; /*0xffd01bae*/
LABEL_7:
    n2_1 = n2; /*0xffd01bc2*/
    goto LABEL_8; /*0xffd01bc2*/
  }
  if ( (_BYTE)n4 == 1 ) /*0xffd01bbc*/
  {
    n2 = 2; /*0xffd01bbe*/
    n4_2 = 4; /*0xffd01bc0*/
    goto LABEL_7; /*0xffd01bc0*/
  }
LABEL_9:
  v9 = 0; /*0xffd01bca*/
  v23 = 0; /*0xffd01bd0*/
  v10 = 0; /*0xffd01bd4*/
  if ( n2 < n4_2 ) /*0xffd01bd8*/
  {
    n3 = n2_1; /*0xffd01bda*/
    v12 = 4 * n2_1 + 184567128; /*0xffd01be5*/
    do /*0xffd01c20*/
    {
      n4 = MiscConfigCheck(a2, a3, a4, v12); /*0xffd01bf6*/
      if ( !n3 || n3 == 2 ) /*0xffd01c05*/
      {
        v10 |= n4; /*0xffd01c17*/
      }
      else if ( n3 == 1 || n3 == 3 ) /*0xffd01c0f*/
      {
        v23 |= n4; /*0xffd01c11*/
      }
      ++n3; /*0xffd01c19*/
      v12 += 4; /*0xffd01c1b*/
    }
    while ( n3 < n4_3 ); /*0xffd01c20*/
    v9 = v23; /*0xffd01c22*/
    n4_6 = 0; /*0xffd01c26*/
  }
  if ( a2[257312] ) /*0xffd01c28*/
  {
    n9 = 9; /*0xffd01c3a*/
    n4 = MiscConfigCheck(a2, a3, a4, 184567312); /*0xffd01c44*/
    if ( v21 == 1 ) /*0xffd01c51*/
    {
      n4_4 = n4; /*0xffd01c53*/
      n4_5 = n4; /*0xffd01c55*/
    }
    else
    {
      n4_4 = 0; /*0xffd01c5b*/
    }
    if ( n4_1 == 1 ) /*0xffd01c64*/
    {
      n4 >>= 8; /*0xffd01c66*/
      n4_5 = n4 | n4_4; /*0xffd01c6b*/
    }
    LOBYTE(n4) = 9; /*0xffd01c6f*/
  }
  else
  {
    LOBYTE(n4) = 8; /*0xffd01c84*/
    n9 = 8; /*0xffd01c86*/
  }
  v15 = 0; /*0xffd01c77*/
  do /*0xffd01cae*/
  {
    if ( n4_6 < 4u ) /*0xffd01c7c*/
    {
      v16 = v10; /*0xffd01c7e*/
      v17 = v15; /*0xffd01c80*/
LABEL_32:
      n4 = v16 >> v17; /*0xffd01c96*/
      *a6 = n4; /*0xffd01c98*/
      LOBYTE(n4) = n9; /*0xffd01c9a*/
      goto LABEL_34; /*0xffd01c9e*/
    }
    if ( n4_6 < 8u ) /*0xffd01c8f*/
    {
      v17 = v15 - 32; /*0xffd01c91*/
      v16 = v9; /*0xffd01c94*/
      goto LABEL_32; /*0xffd01c94*/
    }
    *a6 = n4_5; /*0xffd01ca4*/
LABEL_34:
    ++n4_6; /*0xffd01ca6*/
    v15 += 8; /*0xffd01ca8*/
    ++a6; /*0xffd01cab*/
  }
  while ( n4_6 < (unsigned __int8)n4 ); /*0xffd01cae*/
  return n4; /*0xffd01cb0*/
}

// Function: IioTailFn_FFD01CB7 @ 0xffd01cb7 (0x221 bytes)
// Index: 2160/2560

char __cdecl IioTailFn_FFD01CB7(int a1, unsigned __int8 a2, int a3, char a4, int a5)
{
  unsigned int v5; // eax
  int v6; // ebx
  unsigned __int8 v7; // di
  int v8; // esi
  int v9; // ebp
  unsigned int v10; // eax
  int v11; // eax
  int v12; // eax
  unsigned int v13; // eax
  int v14; // eax
  unsigned int v15; // eax
  int v16; // eax
  int n117460408; // [esp-24h] [ebp-34h]

  LOBYTE(v5) = a4; /*0xffd01cb7*/
  switch ( a4 ) /*0xffd01cc1*/
  {
    case 0: /*0xffd01cc1*/
      v6 = a3; /*0xffd01cc7*/
      v7 = a2; /*0xffd01ccb*/
      v8 = a1; /*0xffd01ccf*/
      v9 = a5; /*0xffd01ce0*/
      *(_DWORD *)a5 = MailBoxFunc8E0B(a3, a1, a2, a3, 117459736); /*0xffd01cec*/
      *(_BYTE *)(a5 + 4) = MailBoxFunc8E0B(a3, a1, a2, a3, 117459752) & 0xF; /*0xffd01cfe*/
      *(_DWORD *)(a5 + 5) = MailBoxFunc8E0B(a3, a1, a2, a3, 117459756); /*0xffd01d0e*/
      v10 = MailBoxFunc8E0B(v6, a1, a2, v6, 117459804); /*0xffd01d11*/
      *(_DWORD *)(a5 + 15) = (v10 >> 3) & 0x3FFFF; /*0xffd01d29*/
      *(_BYTE *)(a5 + 10) = HIBYTE(v10) & 0xF; /*0xffd01d34*/
      v11 = MailBoxFunc8E0B(v6, a1, a2, v6, 117460360); /*0xffd01d37*/
      *(_DWORD *)(a5 + 11) = v11 & 0x3FFFF; /*0xffd01d4f*/
      *(_BYTE *)(a5 + 9) = HIBYTE(v11) & 7; /*0xffd01d54*/
      v12 = MailBoxFunc8E0B(v6, a1, a2, v6, 117459868); /*0xffd01d57*/
      n117460408 = 117460408; /*0xffd01d5c*/
LABEL_7:
      *(_DWORD *)(v9 + 23) = v12 & 0x3FFFF; /*0xffd01eb5*/
      v5 = ((unsigned int)MailBoxFunc8E0B(v6, v8, v7, v6, n117460408) >> 12) & 0x3FFFF; /*0xffd01ecb*/
      *(_DWORD *)(v9 + 19) = v5; /*0xffd01ed0*/
      return v5; /*0xffd01ed0*/
    case 1: /*0xffd01cc1*/
      v6 = a3; /*0xffd01d6e*/
      v7 = a2; /*0xffd01d72*/
      v8 = a1; /*0xffd01d76*/
      v9 = a5; /*0xffd01d87*/
      *(_DWORD *)a5 = MailBoxFunc8E0B(a3, a1, a2, a3, 117459740); /*0xffd01d93*/
      *(_BYTE *)(a5 + 4) = ((unsigned int)MailBoxFunc8E0B(a3, a1, a2, a3, 117459752) >> 6) & 0xF; /*0xffd01da8*/
      *(_DWORD *)(a5 + 5) = MailBoxFunc8E0B(a3, a1, a2, a3, 117459760); /*0xffd01db8*/
      v13 = MailBoxFunc8E0B(v6, a1, a2, v6, 117459808); /*0xffd01dbb*/
      *(_DWORD *)(a5 + 15) = (v13 >> 3) & 0x3FFFF; /*0xffd01dd3*/
      *(_BYTE *)(a5 + 10) = HIBYTE(v13) & 0xF; /*0xffd01dde*/
      v14 = MailBoxFunc8E0B(v6, a1, a2, v6, 117460364); /*0xffd01de1*/
      *(_DWORD *)(a5 + 11) = v14 & 0x3FFFF; /*0xffd01df9*/
      *(_BYTE *)(a5 + 9) = HIBYTE(v14) & 7; /*0xffd01dfe*/
      v12 = MailBoxFunc8E0B(v6, a1, a2, v6, 117459872); /*0xffd01e01*/
      n117460408 = 117460412; /*0xffd01e06*/
      goto LABEL_7; /*0xffd01e0b*/
    case 2: /*0xffd01cc1*/
      v6 = a3; /*0xffd01e18*/
      v7 = a2; /*0xffd01e1c*/
      v8 = a1; /*0xffd01e20*/
      v9 = a5; /*0xffd01e31*/
      *(_DWORD *)a5 = MailBoxFunc8E0B(a3, a1, a2, a3, 117459744); /*0xffd01e3d*/
      *(_BYTE *)(a5 + 4) = ((unsigned int)MailBoxFunc8E0B(a3, a1, a2, a3, 117459752) >> 12) & 0xF; /*0xffd01e52*/
      *(_DWORD *)(a5 + 5) = MailBoxFunc8E0B(a3, a1, a2, a3, 117459764); /*0xffd01e62*/
      v15 = MailBoxFunc8E0B(v6, a1, a2, v6, 117459812); /*0xffd01e65*/
      *(_DWORD *)(a5 + 15) = (v15 >> 3) & 0x3FFFF; /*0xffd01e7d*/
      *(_BYTE *)(a5 + 10) = HIBYTE(v15) & 0xF; /*0xffd01e88*/
      v16 = MailBoxFunc8E0B(v6, a1, a2, v6, 117460368); /*0xffd01e8b*/
      *(_DWORD *)(a5 + 11) = v16 & 0x3FFFF; /*0xffd01ea3*/
      *(_BYTE *)(a5 + 9) = HIBYTE(v16) & 7; /*0xffd01ea8*/
      v12 = MailBoxFunc8E0B(v6, a1, a2, v6, 117459876); /*0xffd01eab*/
      n117460408 = 117460416; /*0xffd01eb0*/
      goto LABEL_7; /*0xffd01eb0*/
  }
  return v5; /*0xffd01ed3*/
}

// Function: IioTailFn_FFD01ED8 @ 0xffd01ed8 (0x60 bytes)
// Index: 2161/2560

int __usercall IioTailFn_FFD01ED8@<eax>(
        int a1@<ebx>,
        int a2,
        unsigned __int8 a3,
        unsigned __int8 a4,
        char a5,
        _BYTE *a6)
{
  int result; // eax

  result = MailBoxFunc8E0B(a1, a2, a3, a4, 117459716); /*0xffd01ee9*/
  *a6 = 0; /*0xffd01ef7*/
  if ( (a5 & 1) != 0 && (result & 0x10000) != 0 ) /*0xffd01f04*/
    *a6 = 1; /*0xffd01f06*/
  if ( (a5 & 2) != 0 && (result & 0x20000) != 0 ) /*0xffd01f13*/
    *a6 |= 2u; /*0xffd01f15*/
  if ( (a5 & 4) != 0 && (result & 0x40000) != 0 ) /*0xffd01f22*/
    *a6 |= 4u; /*0xffd01f24*/
  if ( (a5 & 8) != 0 && (result & 0x80000) != 0 ) /*0xffd01f31*/
    *a6 |= 8u; /*0xffd01f33*/
  return result; /*0xffd01f36*/
}

// Function: IioTailFn_FFD01F38 @ 0xffd01f38 (0x110 bytes)
// Index: 2162/2560

int __cdecl IioTailFn_FFD01F38(unsigned __int8 *a1, int a2, int a3, int a4, char a5)
{
  int v5; // edi
  int v6; // esi
  int v7; // eax
  int v8; // edi
  unsigned int v9; // esi
  char v11; // [esp+13h] [ebp-5h]
  int v12; // [esp+14h] [ebp-4h]
  int v13; // [esp+14h] [ebp-4h]

  v11 = DdrTrainFunc459C(a3, a4); /*0xffd01f5c*/
  v5 = MailBoxFunc8E0B(a2, (int)a1, a2, a3, 117459712); /*0xffd01f70*/
  v12 = MailBoxFunc8E0B(a2, (int)a1, a2, a3, 117459068); /*0xffd01f82*/
  v6 = MiscConfigCheck(a1, a2, a4, 117525076); /*0xffd01f90*/
  if ( a5 ) /*0xffd01f97*/
  {
    v7 = ~(1 << v11) & 7; /*0xffd01faa*/
    v13 = ((v7 << 25) | 0xF1FFFFFF) & v12; /*0xffd01fb8*/
    v8 = ((v7 << 15) | 0xFFFC7FFF) & v5; /*0xffd01fc1*/
    v9 = v6 & 0xFFFF3FFF | 0x8000; /*0xffd01fc3*/
  }
  else
  {
    v8 = (v5 ^ (v5 | (1 << v11 << 15))) & 0x38000 ^ v5; /*0xffd01feb*/
    v9 = v6 & 0xFFFF3FFF | 0x4000; /*0xffd01ffd*/
    v13 = (v12 ^ (v12 | (1 << v11 << 25))) & 0xE000000 ^ v12; /*0xffd02003*/
  }
  MailBoxFunc8FC5((int)a1, a2, a3, 117459712, v8); /*0xffd02013*/
  MailBoxFunc8FC5((int)a1, a2, a3, 117459068, v13); /*0xffd02028*/
  return MiscIoCheck(a1, a2, a4, 0x7014A54u, v9); /*0xffd02041*/
}

// Function: IioTailFn_FFD02048 @ 0xffd02048 (0x3c bytes)
// Index: 2163/2560

int __cdecl IioTailFn_FFD02048(unsigned __int8 *a1, unsigned __int8 a2, int a3, unsigned __int8 a4)
{
  int v4; // eax

  v4 = MiscConfigCheck(a1, a2, a3, 184567112); /*0xffd0205b*/
  return MiscIoCheck(a1, a2, a3, 0xB004548u, (a4 << 24) | v4 & 0xFFFFFF); /*0xffd02081*/
}

// Function: IioTailFn_FFD02084 @ 0xffd02084 (0x6f bytes)
// Index: 2164/2560

int __cdecl IioTailFn_FFD02084(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        char a4,
        char a5,
        char a6,
        char a7,
        char a8)
{
  int v8; // eax

  v8 = MiscConfigCheck(a1, a2, a3, 184567040); /*0xffd02097*/
  return MiscIoCheck(
           a1,
           a2,
           a3,
           0xB004500u,
           (a8 != 0 ? 0x10 : 0)
         | (a7 != 0 ? 8 : 0)
         | (a6 != 0 ? 4 : 0)
         | (a5 != 0)
         | (a4 != 0 ? 2 : 0)
         | v8 & 0xFFFFFFE0);
}

// Function: IioTailFn_FFD020F3 @ 0xffd020f3 (0x6a bytes)
// Index: 2165/2560

int __cdecl IioTailFn_FFD020F3(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        unsigned __int8 a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        unsigned __int16 a7,
        char a8,
        char a9)
{
  char v9; // al

  v9 = MiscConfigCheck(a1, a2, a3, 4 * a4 + 184567068); /*0xffd0210c*/
  return MiscIoCheck(
           a1,
           a2,
           a3,
           4 * a4 + 184567068,
           a8 & 1 | (a9 != 0 ? 2 : 0) | ((a5 | (((a7 << 8) | a6) << 8)) << 8) | v9 & 0xFC);
}

// Function: IioTailFn_FFD0215D @ 0xffd0215d (0x80 bytes)
// Index: 2166/2560

int __cdecl IioTailFn_FFD0215D(unsigned __int8 *a1, unsigned __int8 a2, int a3, char a4, __int16 a5)
{
  int v5; // eax
  int v6; // ecx

  v5 = MiscConfigCheck(a1, a2, a3, 184567048); /*0xffd02170*/
  switch ( a4 ) /*0xffd0217f*/
  {
    case 0: /*0xffd0217f*/
      v6 = ((unsigned __int8)a5 ^ (unsigned __int8)v5) & 3; /*0xffd021c2*/
      goto LABEL_9; /*0xffd021c2*/
    case 1: /*0xffd0217f*/
      v6 = ((unsigned __int8)v5 ^ (unsigned __int8)(16 * a5)) & 0x30; /*0xffd021b8*/
      goto LABEL_9; /*0xffd021bb*/
    case 2: /*0xffd0217f*/
      v6 = ((unsigned __int16)v5 ^ (unsigned __int16)(a5 << 8)) & 0x300; /*0xffd021a8*/
      goto LABEL_9; /*0xffd021ae*/
    case 3: /*0xffd0217f*/
      v6 = ((unsigned __int16)v5 ^ (unsigned __int16)(a5 << 12)) & 0x3000; /*0xffd02198*/
LABEL_9:
      v5 ^= v6; /*0xffd021c5*/
      break;
  }
  return MiscIoCheck(a1, a2, a3, 0xB004508u, v5); /*0xffd021da*/
}

// Function: IioTailFn_FFD021DD @ 0xffd021dd (0x3f bytes)
// Index: 2167/2560

int __cdecl IioTailFn_FFD021DD(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        unsigned __int8 a4,
        unsigned __int16 a5)
{
  int v5; // eax

  v5 = MiscConfigCheck(a1, a2, a3, 4 * a4 + 184567052); /*0xffd021f6*/
  return MiscIoCheck(a1, a2, a3, 4 * a4 + 184567052, a5 | v5 & 0xFFFF0000); /*0xffd02219*/
}

// Function: IioTailFn_FFD0221C @ 0xffd0221c (0x3c bytes)
// Index: 2168/2560

int __cdecl IioTailFn_FFD0221C(unsigned __int8 *a1, unsigned __int8 a2, int a3, unsigned __int8 a4)
{
  int v4; // eax

  v4 = MiscConfigCheck(a1, a2, a3, 184567112); /*0xffd0222f*/
  return MiscIoCheck(a1, a2, a3, 0xB004548u, (a4 << 16) | v4 & 0xFF00FFFF); /*0xffd02255*/
}

// Function: IioTailFn_FFD02258 @ 0xffd02258 (0xf3 bytes)
// Index: 2169/2560

int __cdecl IioTailFn_FFD02258(unsigned __int8 *a1, unsigned __int8 a2, int a3, unsigned __int8 a4, char *p_n2, int a6)
{
  int v6; // esi
  _BYTE *v8; // ebx
  int v9; // ebp
  unsigned __int8 n4; // cl
  char *v11; // edi
  int n8; // ebp
  char v13; // al
  _DWORD v15[2]; // [esp+4h] [ebp-8h] BYREF

  v15[0] = -1; /*0xffd02264*/
  v15[1] = -1; /*0xffd02270*/
  v6 = MiscConfigCheck(a1, a2, a3, 184567108); /*0xffd02281*/
  if ( a4 ) /*0xffd0228c*/
  {
    v8 = v15; /*0xffd02299*/
    v9 = a4; /*0xffd0229d*/
    do /*0xffd022cc*/
    {
      if ( (unsigned __int8)*p_n2 < 2u ) /*0xffd022a4*/
      {
        n4 = p_n2[1]; /*0xffd022a6*/
        if ( n4 < 4u ) /*0xffd022ac*/
          IioFunc7517((int)a1, a2, a3, *p_n2, n4, v8); /*0xffd022bd*/
      }
      ++v8; /*0xffd022c5*/
      p_n2 += 2; /*0xffd022c6*/
      --v9; /*0xffd022c9*/
    }
    while ( v9 ); /*0xffd022cc*/
    v11 = (char *)v15; /*0xffd022d2*/
    n8 = 8; /*0xffd022dc*/
    do /*0xffd02320*/
    {
      v13 = *v11; /*0xffd022dd*/
      if ( *v11 != -1 ) /*0xffd022e1*/
      {
        v6 = (((unsigned __int8)~(1 << v13) << 15) | 0xFF807FFF) & ((unsigned __int8)(v6 ^ (v6 | (1 << v13))) ^ v6); /*0xffd02302*/
        if ( (v11[a6 - (_DWORD)v15] & 1) != 0 ) /*0xffd02308*/
          v6 ^= (v6 ^ (v6 | (0x8000 << v13))) & 0x7F8000; /*0xffd0231a*/
      }
      ++v11; /*0xffd0231c*/
      --n8; /*0xffd0231d*/
    }
    while ( n8 ); /*0xffd02320*/
  }
  else
  {
    v6 &= 0xFFFFFF00; /*0xffd02327*/
  }
  return MiscIoCheck(a1, a2, a3, 0xB004544u, v6); /*0xffd02347*/
}

// Function: IioTailFunc234B @ 0xffd0234b (0x43 bytes)
// Index: 2170/2560

int __usercall IioTailFunc234B@<eax>(int a1@<ebx>, int a2, unsigned __int8 a3, unsigned __int8 a4, char a5)
{
  int v5; // eax

  v5 = MailBoxFunc8E0B(a1, a2, a3, a4, 117459712); /*0xffd0235e*/
  return MailBoxFunc8FC5(a2, a3, a4, 117459712, (a5 != 0 ? 0x2000 : 0) | v5 & 0xFFFFDFFF);
}

// Function: IioTailFn_FFD0238E @ 0xffd0238e (0x40 bytes)
// Index: 2171/2560

int __cdecl IioTailFn_FFD0238E(unsigned __int8 *a1, unsigned __int8 a2, int a3, int a4)
{
  int v4; // eax

  v4 = MiscConfigCheck(a1, a2, a3, 184632628); /*0xffd023a1*/
  return MiscIoCheck(a1, a2, a3, 0xB014534u, ((a4 != 0) << 15) | v4 & 0xFFFF7FFF); /*0xffd023cb*/
}

// Function: IioTailFn_FFD023CE @ 0xffd023ce (0x55 bytes)
// Index: 2172/2560

int __cdecl IioTailFn_FFD023CE(unsigned __int8 *a1, unsigned __int8 a2, int a3, char a4, char a5, char a6)
{
  int v6; // eax

  v6 = MiscConfigCheck(a1, a2, a3, 184567172); /*0xffd023e1*/
  return MiscIoCheck(a1, a2, a3, 0xB004584u, (a4 != 0) | ((a5 & 0x3F | ((a6 & 0x3F) << 8)) << 8) | v6 & 0xFFC0C0FE); /*0xffd02420*/
}

// Function: IioTailFn_FFD02423 @ 0xffd02423 (0x64 bytes)
// Index: 2173/2560

int __cdecl IioTailFn_FFD02423(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        int a4,
        char a5,
        char a6,
        int a7,
        char a8)
{
  int v8; // eax

  v8 = MiscConfigCheck(a1, a2, a4, 184566944); /*0xffd02436*/
  return MiscIoCheck(
           a1,
           a2,
           a4,
           0xB0044A0u,
           a8 & 0x1F | (a7 != 1 ? 0 : 32) | ((a5 & 0x3F | ((a6 & 0x3F) << 8)) << 8) | v8 & 0xFFC0C0C0);
}

// Function: IioTailFunc2487 @ 0xffd02487 (0xa0 bytes)
// Index: 2174/2560

int __cdecl IioTailFunc2487(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        int a4,
        char a5,
        char a6,
        int a7,
        int a8,
        unsigned __int8 a9)
{
  int v9; // eax

  MiscIoCheck(a1, a2, a3, 0xB014528u, a7); /*0xffd0249d*/
  MiscIoCheck(a1, a2, a3, 0xB01452Cu, a8); /*0xffd024b7*/
  v9 = MiscConfigCheck(a1, a2, a3, 184632612); /*0xffd024ce*/
  return MiscIoCheck(
           a1,
           a2,
           a3,
           0xB014524u,
           ((a6 & 0xF | (a5 != 0 ? 0x10 : 0) | (a4 != 0 ? 0x4000 : 0)) << 16) | a9 | v9 & 0xBFE0FF00);
}

// Function: IioTailFn_FFD02527 @ 0xffd02527 (0x4b bytes)
// Index: 2175/2560

int __cdecl IioTailFn_FFD02527(unsigned __int8 *a1, unsigned __int8 a2, int a3, char a4, char a5)
{
  int v5; // eax

  v5 = MiscConfigCheck(a1, a2, a3, 184632628); /*0xffd0253a*/
  return MiscIoCheck(a1, a2, a3, 0xB014534u, ((a5 & 0x3F | ((a4 & 7) << 8)) << 16) | v5 & 0xF8C0FFFF); /*0xffd0256f*/
}

// Function: IioTailFn_FFD02572 @ 0xffd02572 (0x64 bytes)
// Index: 2176/2560

int __cdecl IioTailFn_FFD02572(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        int a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        unsigned __int16 a7,
        char a8,
        char a9)
{
  char v9; // al

  v9 = MiscConfigCheck(a1, a2, a3, 184632576); /*0xffd02585*/
  return MiscIoCheck(
           a1,
           a2,
           a3,
           0xB014500u,
           a8 & 1 | (a9 != 0 ? 2 : 0) | ((a5 | (((a7 << 8) | a6) << 8)) << 8) | v9 & 0xFC);
}

// Function: IioTailFn_FFD025D6 @ 0xffd025d6 (0x6b bytes)
// Index: 2177/2560

int __cdecl IioTailFn_FFD025D6(unsigned __int8 *a1, unsigned __int8 a2, int a3, char a4, unsigned __int8 a5)
{
  int v5; // eax
  int v6; // ecx

  v5 = MiscConfigCheck(a1, a2, a3, 184632628); /*0xffd025e9*/
  switch ( a4 ) /*0xffd025f8*/
  {
    case 0: /*0xffd025f8*/
      v6 = (a5 ^ (unsigned __int8)v5) & 3; /*0xffd02626*/
      goto LABEL_7; /*0xffd02626*/
    case 1: /*0xffd025f8*/
      v6 = ((unsigned __int8)v5 ^ (unsigned __int8)(8 * a5)) & 0x18; /*0xffd0261c*/
      goto LABEL_7; /*0xffd0261f*/
    case 2: /*0xffd025f8*/
      v6 = ((unsigned __int8)v5 ^ (unsigned __int8)(a5 << 6)) & 0xC0; /*0xffd0260c*/
LABEL_7:
      v5 ^= v6; /*0xffd02629*/
      break;
  }
  return MiscIoCheck(a1, a2, a3, 0xB014534u, v5); /*0xffd0263e*/
}

// Function: IioTailFn_FFD02641 @ 0xffd02641 (0x25 bytes)
// Index: 2178/2560

int __cdecl IioTailFn_FFD02641(unsigned __int8 *a1, unsigned __int8 a2, int a3, unsigned __int8 a4, int a5)
{
  return MiscIoCheck(a1, a2, a3, 4 * a4 + 184632600, a5); /*0xffd02664*/
}

// Function: IioTailFn_FFD02666 @ 0xffd02666 (0x25 bytes)
// Index: 2179/2560

int __cdecl IioTailFn_FFD02666(unsigned __int8 *a1, unsigned __int8 a2, int a3, unsigned __int8 a4, int a5)
{
  return MiscIoCheck(a1, a2, a3, 4 * a4 + 184632588, a5); /*0xffd02689*/
}

// Function: IioTailFn_FFD0268B @ 0xffd0268b (0x87 bytes)
// Index: 2180/2560

int __cdecl IioTailFn_FFD0268B(int a1, unsigned __int8 a2, unsigned __int8 a3, unsigned __int8 n3, unsigned __int16 a5)
{
  int v5; // eax
  int v6; // ecx
  unsigned __int16 v8; // ax

  if ( n3 >= 3u ) /*0xffd02696*/
  {
    v8 = MailBoxFunc8E0B(n3, a1, a2, a3, 117460324); /*0xffd026ea*/
    return MailBoxFunc8FC5(a1, a2, a3, 117460324, v8 | (a5 << 16)); /*0xffd02706*/
  }
  else
  {
    v5 = MailBoxFunc8E0B(n3, a1, a2, a3, 117459948); /*0xffd026a7*/
    v6 = a5; /*0xffd026ac*/
    if ( n3 ) /*0xffd026b5*/
    {
      v6 = a5 << 16; /*0xffd026be*/
      v5 = (unsigned __int16)v5; /*0xffd026c1*/
    }
    else
    {
      v5 &= 0xFFFF0000; /*0xffd026b7*/
    }
    return MailBoxFunc8FC5(a1, a2, a3, 117459948, v6 | v5); /*0xffd026d1*/
  }
}

// Function: IioTailFn_FFD02712 @ 0xffd02712 (0x5e bytes)
// Index: 2181/2560

int __cdecl IioTailFn_FFD02712(
        int a1,
        unsigned __int8 a2,
        int a3,
        unsigned __int8 a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        unsigned __int16 a7,
        char a8,
        char a9)
{
  unsigned __int8 v9; // al

  v9 = DdrTrainFunc459C(a3, a4); /*0xffd0274b*/
  return MailBoxFunc8FC5(
           a1,
           a2,
           a3,
           4 * v9 + 117459968,
           a8 & 1 | (a9 != 0 ? 2 : 0) | ((a5 | (((a7 << 8) | a6) << 8)) << 8));
}

// Function: IioTailFn_FFD02770 @ 0xffd02770 (0x34 bytes)
// Index: 2182/2560

int __cdecl IioTailFn_FFD02770(unsigned __int8 *a1, unsigned __int8 a2, int a3, unsigned __int8 a4, char a5, char a6)
{
  return MiscIoCheck(a1, a2, a3, 8 * a4 + 184567240, a6 & 0x7F | ((a5 & 3) << 7)); /*0xffd027a2*/
}

// Function: IioTailFn_FFD027A4 @ 0xffd027a4 (0x55 bytes)
// Index: 2183/2560

int __usercall IioTailFn_FFD027A4@<eax>(
        int a1@<ebx>,
        int a2,
        unsigned __int8 a3,
        unsigned __int8 a4,
        char a5,
        char a6,
        char a7)
{
  int v7; // eax

  v7 = MailBoxFunc8E0B(a1, a2, a3, a4, 117459712); /*0xffd027b7*/
  return MailBoxFunc8FC5(a2, a3, a4, 117459712, (a7 != 0 ? 2 : 0) | (a6 != 0) | (a5 != 0 ? 4 : 0) | v7 & 0xFFFFFFF8);
}

// Function: IioTailFunc27F9 @ 0xffd027f9 (0x4a bytes)
// Index: 2184/2560

int __cdecl IioTailFunc27F9(unsigned __int8 *a1, unsigned __int8 a2, int a3, int a4, int a5, int a6)
{
  MiscIoCheck(a1, a2, a3, 0xB00454Cu, a4); /*0xffd0280d*/
  MiscIoCheck(a1, a2, a3, 0xB004550u, a5); /*0xffd02823*/
  return MiscIoCheck(a1, a2, a3, 0xB004554u, a6); /*0xffd02841*/
}

// Function: IioTailFn_FFD02843 @ 0xffd02843 (0x7d bytes)
// Index: 2185/2560

int __usercall IioTailFn_FFD02843@<eax>(
        int a1@<ebx>,
        int a2,
        unsigned __int8 a3,
        int a4,
        unsigned __int8 a5,
        char a6,
        char a7,
        char a8)
{
  unsigned __int8 v8; // al
  unsigned __int8 v9; // al
  unsigned int v11; // [esp-4h] [ebp-4h]

  v8 = DdrTrainFunc459C(a4, a5); /*0xffd0284c*/
  v11 = (a8 != 0 ? 2 : 0)
      | (a7 != 0)
      | (a6 != 0 ? 4 : 0)
      | MailBoxFunc8E0B(a1, a2, a3, a4, 4 * v8 + 117459720) & 0xFFFFFFF8;
  v9 = DdrTrainFunc459C(a4, a5); /*0xffd0289b*/
  return MailBoxFunc8FC5(a2, a3, a4, 4 * v9 + 117459720, v11); /*0xffd028be*/
}

// Function: IioTailFn_FFD028C0 @ 0xffd028c0 (0x66 bytes)
// Index: 2186/2560

int __usercall IioTailFn_FFD028C0@<eax>(int a1@<ebx>, int a2, unsigned __int8 a3, int a4, unsigned __int8 a5, char a6)
{
  unsigned __int8 v6; // al
  unsigned __int8 v7; // al
  unsigned int v9; // [esp-4h] [ebp-4h]

  v6 = DdrTrainFunc459C(a4, a5); /*0xffd028c9*/
  v9 = ((a6 & 0x1F) << 10) | MailBoxFunc8E0B(a1, a2, a3, a4, 4 * v6 + 117459720) & 0xFFFF83FF; /*0xffd028fa*/
  v7 = DdrTrainFunc459C(a4, a5); /*0xffd02901*/
  return MailBoxFunc8FC5(a2, a3, a4, 4 * v7 + 117459720, v9); /*0xffd02924*/
}

// Function: IioTailFn_FFD02926 @ 0xffd02926 (0x68 bytes)
// Index: 2187/2560

int __usercall IioTailFn_FFD02926@<eax>(int a1@<ebx>, int a2, unsigned __int8 a3, int a4, unsigned __int8 a5, char a6)
{
  unsigned __int8 v6; // al
  unsigned __int8 v7; // al
  int v9; // [esp-4h] [ebp-4h]

  v6 = DdrTrainFunc459C(a4, a5); /*0xffd0292f*/
  v9 = ((a6 != 0) << 31) | MailBoxFunc8E0B(a1, a2, a3, a4, 4 * v6 + 117459720) & 0x7FFFFFFF; /*0xffd02962*/
  v7 = DdrTrainFunc459C(a4, a5); /*0xffd02969*/
  return MailBoxFunc8FC5(a2, a3, a4, 4 * v7 + 117459720, v9); /*0xffd0298c*/
}

// Function: IioTailFn_FFD0298E @ 0xffd0298e (0x15a bytes)
// Index: 2188/2560

int __cdecl IioTailFn_FFD0298E(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        char a4,
        unsigned __int8 a5,
        unsigned __int8 *a6,
        _BYTE *a7)
{
  char n2; // bh
  unsigned int v8; // eax
  _BYTE *v10; // edi
  int v11; // ebp
  unsigned __int8 n2_1; // dl
  unsigned __int8 n4; // bl
  char n5; // cl
  int CpuCount; // [esp+4h] [ebp-4h]

  n2 = 0; /*0xffd02994*/
  CpuCount = GetCpuCount((int)a1, a2, a3); /*0xffd029ac*/
  v8 = MiscConfigCheck(a1, a2, a3, 184567104); /*0xffd029b8*/
  if ( a5 ) /*0xffd029c6*/
  {
    v10 = a7; /*0xffd029d3*/
    v11 = a5; /*0xffd029d7*/
    do /*0xffd02aaa*/
    {
      n2_1 = *a6; /*0xffd029da*/
      if ( *a6 < 2u ) /*0xffd029df*/
      {
        n4 = a6[1]; /*0xffd029e5*/
        if ( n4 < 4u ) /*0xffd029eb*/
        {
          if ( *(_BYTE *)(1379 * n2_1 + CpuCount + 126) > 1u ) /*0xffd02a05*/
            n4 &= 1u; /*0xffd02a07*/
          n5 = n4 | (4 * n2_1); /*0xffd02a0d*/
          if ( n2_1 ) /*0xffd02a11*/
          {
            if ( n2_1 == 1 ) /*0xffd02a31*/
            {
              if ( n5 == 4 || n5 == 6 ) /*0xffd02a3b*/
              {
                n2 = 2; /*0xffd02a4b*/
              }
              else if ( n5 == 5 || n5 == 7 ) /*0xffd02a45*/
              {
                n2 = 3; /*0xffd02a47*/
              }
            }
            else if ( n2_1 == 2 ) /*0xffd02a52*/
            {
              if ( n5 == 8 ) /*0xffd02a57*/
              {
                n2 = 4; /*0xffd02a59*/
              }
              else if ( n5 == 9 ) /*0xffd02a60*/
              {
                n2 = 5; /*0xffd02a62*/
              }
            }
          }
          else if ( !n5 || n5 == 2 ) /*0xffd02a1a*/
          {
            n2 = 0; /*0xffd02a2a*/
          }
          else if ( n5 == 1 || n5 == 3 ) /*0xffd02a24*/
          {
            n2 = 1; /*0xffd02a26*/
          }
          v10 = a7; /*0xffd02a64*/
          v8 = (v8 /*0xffd02a85*/
              ^ ((unsigned __int8)v8
               ^ (unsigned __int8)(v8 | (1 << n2)))
              & 0x3F)
             & (((~(1 << n2) & 0x3F) << 15) | 0xFFE07FFF);
          if ( (*a7 & 1) != 0 ) /*0xffd02a8a*/
            v8 ^= (v8 ^ (v8 | (0x8000 << n2))) & 0x1F8000; /*0xffd02a9d*/
        }
      }
      a6 += 2; /*0xffd02a9f*/
      a7 = ++v10; /*0xffd02aa3*/
      --v11; /*0xffd02aa7*/
    }
    while ( v11 ); /*0xffd02aaa*/
  }
  else
  {
    v8 &= 0xFFFFFFC0; /*0xffd02ab5*/
  }
  return MiscIoCheck(a1, a2, a3, 0xB004540u, v8 & 0x7FFFFFFF | ((a4 != 0) << 31)); /*0xffd02ae5*/
}

// Function: IioTailFn_FFD02AE8 @ 0xffd02ae8 (0xd1 bytes)
// Index: 2189/2560

int __cdecl IioTailFn_FFD02AE8(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        char a4,
        unsigned __int8 a5,
        char *p_n2)
{
  int v6; // esi
  _BYTE *v8; // ebx
  int v9; // ebp
  unsigned __int8 n4; // cl
  _BYTE *v11; // edx
  int n8; // edi
  _DWORD v14[2]; // [esp+4h] [ebp-8h] BYREF

  v14[0] = -1; /*0xffd02af4*/
  v14[1] = -1; /*0xffd02b00*/
  v6 = MiscConfigCheck(a1, a2, a3, 184567096); /*0xffd02b11*/
  if ( a5 ) /*0xffd02b1c*/
  {
    v8 = v14; /*0xffd02b25*/
    v9 = a5; /*0xffd02b29*/
    do /*0xffd02b58*/
    {
      if ( (unsigned __int8)*p_n2 < 2u ) /*0xffd02b30*/
      {
        n4 = p_n2[1]; /*0xffd02b32*/
        if ( n4 < 4u ) /*0xffd02b38*/
          IioFunc7517((int)a1, a2, a3, *p_n2, n4, v8); /*0xffd02b49*/
      }
      ++v8; /*0xffd02b51*/
      p_n2 += 2; /*0xffd02b52*/
      --v9; /*0xffd02b55*/
    }
    while ( v9 ); /*0xffd02b58*/
    v11 = v14; /*0xffd02b5e*/
    n8 = 8; /*0xffd02b62*/
    do /*0xffd02b7c*/
    {
      if ( *v11 != 0xFF ) /*0xffd02b67*/
        v6 ^= (unsigned __int8)(v6 ^ (v6 | (1 << *v11))); /*0xffd02b76*/
      ++v11; /*0xffd02b78*/
      --n8; /*0xffd02b79*/
    }
    while ( n8 ); /*0xffd02b7c*/
  }
  else
  {
    v6 &= 0xFFFFFF00; /*0xffd02b81*/
  }
  return MiscIoCheck(a1, a2, a3, 0xB004538u, v6 & 0x7FFFFFFF | ((a4 != 0) << 31)); /*0xffd02bb5*/
}

// Function: IioTailFn_FFD02BB9 @ 0xffd02bb9 (0xb9 bytes)
// Index: 2190/2560

int __cdecl IioTailFn_FFD02BB9(unsigned __int8 *a1, unsigned __int8 a2, char a3, char a4, bool *a5)
{
  unsigned __int8 n3; // bl
  int SocketInfo; // edi
  int result; // eax
  int v8; // eax
  int v9; // eax
  char v10; // [esp+13h] [ebp-5h]
  int v11; // [esp+14h] [ebp-4h]
  unsigned __int8 n6; // [esp+24h] [ebp+Ch]

  n3 = 0; /*0xffd02bc3*/
  LOBYTE(v11) = 0; /*0xffd02bc9*/
  v10 = 0; /*0xffd02bcd*/
  SocketInfo = GetSocketInfo((int)a1, a2); /*0xffd02bdb*/
  if ( a3 == 1 ) /*0xffd02bdf*/
  {
    n3 = 3; /*0xffd02be1*/
    n6 = 6; /*0xffd02be3*/
    LOBYTE(v11) = 3; /*0xffd02be8*/
  }
  else
  {
    n6 = 3; /*0xffd02bee*/
  }
  do /*0xffd02c69*/
  {
    result = 7688 * n3; /*0xffd02bff*/
    if ( *(_BYTE *)(result + SocketInfo) ) /*0xffd02c05*/
    {
      v8 = MiscConfigCheck(a1, a2, v11, 184631776); /*0xffd02c18*/
      if ( a5 && !v10 ) /*0xffd02c29*/
        *a5 = (v8 & 4) != 0; /*0xffd02c33*/
      if ( a4 == 1 ) /*0xffd02c3a*/
        v9 = v8 | 7; /*0xffd02c3c*/
      else
        v9 = v8 & 0xFFFFFFF8; /*0xffd02c41*/
      result = MiscIoCheck(a1, a2, v11, 0xB0141E0u, v9); /*0xffd02c52*/
      v10 = 1; /*0xffd02c5a*/
    }
    LOBYTE(v11) = ++n3; /*0xffd02c61*/
  }
  while ( n3 < n6 ); /*0xffd02c69*/
  return result; /*0xffd02c6b*/
}

// Function: IioTailFn_FFD02C72 @ 0xffd02c72 (0x105 bytes)
// Index: 2191/2560

int __usercall IioTailFn_FFD02C72@<eax>(
        int a1@<ebx>,
        int a2,
        unsigned __int8 a3,
        int a4,
        unsigned __int8 a5,
        char a6,
        char a7,
        char a8,
        char a9,
        char a10,
        char a11,
        char a12,
        char a13,
        char a14,
        char a15,
        char a16,
        char a17,
        char a18)
{
  unsigned __int8 v18; // al
  int v19; // eax
  unsigned __int8 v20; // al
  int v22; // [esp-4h] [ebp-4h]

  v18 = DdrTrainFunc459C(a4, a5); /*0xffd02c7b*/
  v19 = MailBoxFunc8E0B(a1, a2, a3, a4, 4 * v18 + 117459820); /*0xffd02c94*/
  v20 = DdrTrainFunc459C(
          a4,
          a5,
          a18 & 3
        | (4
         * (a17 & 3
          | (4
           * (a16 & 3
            | (4
             * (a15 & 3
              | ((a14 & 0xF
                | (((a13 != 0)
                  | (a12 != 0 ? 2 : 0)
                  | (a11 != 0 ? 4 : 0)
                  | (a10 != 0 ? 8 : 0)
                  | (a9 != 0 ? 0x100 : 0)
                  | (a8 != 0 ? 0x200 : 0)
                  | (a7 != 0 ? 0x400 : 0)
                  | ((a6 != 0) << 11)) << 7)) << 7)))))))
        | v19 & 0xF0E1F00);
  return MailBoxFunc8FC5(a2, a3, a4, 4 * v20 + 117459820, v22); /*0xffd02d75*/
}

// Function: IioTailFn_FFD02D77 @ 0xffd02d77 (0xda bytes)
// Index: 2192/2560

int __cdecl IioTailFn_FFD02D77(
        int a1,
        unsigned __int8 a2,
        int a3,
        unsigned __int8 a4,
        char a5,
        char a6,
        int a7,
        char a8,
        char a9,
        char a10,
        int a11,
        char a12,
        __int16 a13,
        char a14,
        char a15,
        unsigned __int8 a16)
{
  unsigned __int8 v16; // al
  unsigned __int8 v17; // al

  v16 = DdrTrainFunc459C(a3, a4); /*0xffd02dc9*/
  MailBoxFunc8FC5( /*0xffd02de4*/
    a1,
    a2,
    a3,
    8 * v16 + 117459840,
    a7 & 0xFFF80000
  | a10 & 0xF
  | (16 * (a9 & 0x1F | (32 * (a8 & 1 | (2 * (a7 & 7 | (8 * (a6 & 0x1F | (32 * (a5 & 1)))))))))));
  v17 = DdrTrainFunc459C(a3, a4); /*0xffd02e2c*/
  return MailBoxFunc8FC5( /*0xffd02e4f*/
           a1,
           a2,
           a3,
           8 * v17 + 117459836,
           a16 | ((a15 & 0x1F | (32 * (a14 & 1 | (2 * (a13 & 0xFFF | (((32 * a11) | a12 & 0x1F) << 12)))))) << 8));
}

// Function: IioTailFn_FFD02E51 @ 0xffd02e51 (0xb7 bytes)
// Index: 2193/2560

int __usercall IioTailFn_FFD02E51@<eax>(
        int a1@<ebx>,
        int a2,
        unsigned __int8 a3,
        int a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        char a7,
        char a8,
        char a9,
        char a10,
        char a11,
        int a12,
        char a13,
        char a14)
{
  unsigned __int8 v14; // al
  unsigned __int8 v15; // al
  unsigned int v17; // [esp-4h] [ebp-4h]

  v14 = DdrTrainFunc459C(a4, a5); /*0xffd02e5a*/
  v17 = (16
       * (a14 & 1
        | (a13 != 0 ? 2 : 0)
        | (a11 != 0 ? 8 : 0)
        | (16 * (a10 & 3 | (4 * (a9 & 0x1F | (32 * (a7 & 0xF | (16 * (a8 & 0xF | (16 * a6)))))))))))
      | MailBoxFunc8E0B(a1, a2, a3, a4, 4 * v14 + 117459720) & 0x8000004F;
  v15 = DdrTrainFunc459C(a4, a5); /*0xffd02ee3*/
  return MailBoxFunc8FC5(a2, a3, a4, 4 * v15 + 117459720, v17); /*0xffd02f06*/
}

// Function: IioTailFn_FFD02F08 @ 0xffd02f08 (0x2df bytes)
// Index: 2194/2560

int __cdecl IioTailFn_FFD02F08(int a1, unsigned __int8 a2, int a3, unsigned __int8 a4, unsigned __int8 a5, char *p_n2)
{
  int SocketInfo; // esi
  unsigned __int8 *p_n2_1; // esi
  char *v9; // edi
  int v10; // edx
  unsigned __int8 n4; // cl
  unsigned __int8 v12; // al
  unsigned __int8 v13; // cl
  int result; // eax
  int v15; // edx
  unsigned __int8 *p_n2_2; // esi
  char *v17; // edi
  int v18; // eax
  int CpuCount_1; // ebx
  unsigned int v20; // eax
  int v21; // ecx
  char n16; // cl
  int n15; // ecx
  unsigned __int8 v24; // al
  int v25; // [esp-4h] [ebp-30h]
  int v26; // [esp-4h] [ebp-30h]
  int SocketInfo_1; // [esp+10h] [ebp-1Ch]
  int v28; // [esp+14h] [ebp-18h]
  int CpuCount; // [esp+18h] [ebp-14h]
  char v30; // [esp+1Ch] [ebp-10h] BYREF
  int v31; // [esp+1Dh] [ebp-Fh]
  __int16 v32; // [esp+21h] [ebp-Bh]
  char v33; // [esp+23h] [ebp-9h]
  char v34; // [esp+24h] [ebp-8h] BYREF
  int v35; // [esp+25h] [ebp-7h]
  __int16 v36; // [esp+29h] [ebp-3h]
  char v37; // [esp+2Bh] [ebp-1h]
  int v38; // [esp+40h] [ebp+14h]
  int v39; // [esp+40h] [ebp+14h]

  v30 = 0; /*0xffd02f19*/
  v31 = 0; /*0xffd02f22*/
  v34 = 0; /*0xffd02f23*/
  v32 = 0; /*0xffd02f29*/
  v33 = 0; /*0xffd02f2b*/
  v35 = 0; /*0xffd02f32*/
  v36 = 0; /*0xffd02f33*/
  v37 = 0; /*0xffd02f35*/
  SocketInfo = GetSocketInfo(a1, a2); /*0xffd02f3f*/
  SocketInfo_1 = SocketInfo; /*0xffd02f45*/
  CpuCount = GetCpuCount(a1, a2, a4); /*0xffd02f56*/
  if ( a5 ) /*0xffd02f5c*/
  {
    p_n2_1 = (unsigned __int8 *)p_n2; /*0xffd02f5e*/
    v9 = &v30; /*0xffd02f62*/
    v10 = a5; /*0xffd02f66*/
    v38 = a5; /*0xffd02f69*/
    do /*0xffd02f9e*/
    {
      if ( *p_n2_1 < 2u ) /*0xffd02f71*/
      {
        n4 = p_n2_1[1]; /*0xffd02f73*/
        if ( n4 < 4u ) /*0xffd02f79*/
        {
          IioFunc7517(a1, a2, a4, *p_n2_1, n4, v9); /*0xffd02f87*/
          v10 = v38; /*0xffd02f8c*/
        }
      }
      ++v9; /*0xffd02f93*/
      p_n2_1 += 2; /*0xffd02f94*/
      v38 = --v10; /*0xffd02f9a*/
    }
    while ( v10 ); /*0xffd02f9e*/
    SocketInfo = SocketInfo_1; /*0xffd02fa0*/
  }
  v25 = v30 & 7 /*0xffd03002*/
      | (16
       * (v31 & 7
        | (16
         * (BYTE1(v31) & 7
          | (16
           * (BYTE2(v31) & 7 | (16 * (HIBYTE(v31) & 7 | (16 * (v32 & 7 | (16 * (HIBYTE(v32) & 7 | (16 * (v33 & 7))))))))))))));
  v12 = DdrTrainFunc459C(a3, a4); /*0xffd0300b*/
  MailBoxFunc8FC5(a1, a2, a3, 4 * v12 + 117459884, v25); /*0xffd03026*/
  v13 = a4; /*0xffd0302b*/
  result = a4; /*0xffd03032*/
  v15 = 7688 * a4; /*0xffd03035*/
  v39 = v15; /*0xffd0303b*/
  if ( *(_BYTE *)(v15 + SocketInfo + 6262) ) /*0xffd0303f*/
  {
    if ( a5 ) /*0xffd0304f*/
    {
      p_n2_2 = (unsigned __int8 *)p_n2; /*0xffd03051*/
      v17 = &v34; /*0xffd03055*/
      v18 = a5; /*0xffd03059*/
      CpuCount_1 = CpuCount; /*0xffd0305c*/
      v28 = v18; /*0xffd03060*/
      while ( !ProcCommonFunc24FA(a1, a2, v13, *p_n2_2) || *(_BYTE *)(1379 * *p_n2_2 + CpuCount + 107) ) /*0xffd03088*/
      {
        v15 = v39; /*0xffd0308a*/
        if ( *(_BYTE *)(v39 + SocketInfo_1 + 6262) == 2 ) /*0xffd0309a*/
          goto LABEL_16; /*0xffd0309a*/
LABEL_17:
        v13 = a4; /*0xffd030a9*/
        p_n2_2 += 2; /*0xffd030ad*/
        ++v17; /*0xffd030b0*/
        if ( !--v28 ) /*0xffd030b6*/
        {
          SocketInfo = SocketInfo_1; /*0xffd030b8*/
          goto LABEL_20; /*0xffd030bf*/
        }
      }
      v15 = v39; /*0xffd0309e*/
LABEL_16:
      *v17 = p_n2_2[1] >> 1; /*0xffd030a2*/
      goto LABEL_17; /*0xffd030a7*/
    }
    CpuCount_1 = CpuCount; /*0xffd030c1*/
LABEL_20:
    v20 = v34 & 7 /*0xffd030c5*/
        | (8
         * (v35 & 7
          | (8
           * (BYTE1(v35) & 7
            | (8
             * (BYTE2(v35) & 7 | (8 * (HIBYTE(v35) & 7 | (8 * (v36 & 7 | (8 * (HIBYTE(v36) & 7 | (8 * (v37 & 7))))))))))))));
    v21 = 1379 * (unsigned __int8)*p_n2; /*0xffd03127*/
    if ( *(_WORD *)(a1 + 257315) == 12 ) /*0xffd03135*/
    {
      n16 = *(_BYTE *)(v21 + CpuCount_1 + 119); /*0xffd03137*/
      switch ( n16 ) /*0xffd03148*/
      {
        case 17: /*0xffd03148*/
          v20 = v34 & 7 /*0xffd0314f*/
              | (8
               * (v35 & 7
                | (8
                 * (BYTE1(v35) & 7
                  | (8
                   * (BYTE2(v35) & 7
                    | (8 * (HIBYTE(v35) & 7 | (8 * (v36 & 7 | (8 * (HIBYTE(v36) & 7 | (8 * (v37 & 7))))))))))))))
              & 0xF8FFFFFF
              | 0x4000000;
          break;
        case 16: /*0xffd03148*/
          v20 = v34 & 7 /*0xffd0315d*/
              | (8
               * (v35 & 7
                | (8
                 * (BYTE1(v35) & 7
                  | (8
                   * (BYTE2(v35) & 7
                    | (8 * (HIBYTE(v35) & 7 | (8 * (v36 & 7 | (8 * (HIBYTE(v36) & 7 | (8 * (v37 & 7))))))))))))))
              & 0xF8FFFFFF
              | 0x2000000;
          break;
        case 15: /*0xffd03148*/
          v20 = v34 & 7 /*0xffd0316b*/
              | (8
               * (v35 & 7
                | (8
                 * (BYTE1(v35) & 7
                  | (8
                   * (BYTE2(v35) & 7
                    | (8 * (HIBYTE(v35) & 7 | (8 * (v36 & 7 | (8 * (HIBYTE(v36) & 7 | (8 * (v37 & 7))))))))))))))
              & 0xF8FFFFFF
              | 0x1000000;
          break;
      }
      if ( *(_BYTE *)(v15 + SocketInfo + 6262) == 2 && n16 == 16 ) /*0xffd0317d*/
        v20 = v20 & 0xF8FFFFFF | 0x2000000; /*0xffd03181*/
    }
    else
    {
      n15 = *(unsigned __int8 *)(v21 + CpuCount_1 + 119) - (*(unsigned __int8 *)(v21 + CpuCount_1 + 126) >> 1); /*0xffd03191*/
      if ( n15 == 16 ) /*0xffd03196*/
      {
        v20 = v34 & 7 /*0xffd0319d*/
            | (8
             * (v35 & 7
              | (8
               * (BYTE1(v35) & 7
                | (8
                 * (BYTE2(v35) & 7
                  | (8 * (HIBYTE(v35) & 7 | (8 * (v36 & 7 | (8 * (HIBYTE(v36) & 7 | (8 * (v37 & 7))))))))))))))
            & 0xF8FFFFFF
            | 0x2000000;
      }
      else if ( n15 == 15 ) /*0xffd031a7*/
      {
        v20 = v34 & 7 /*0xffd031ae*/
            | (8
             * (v35 & 7
              | (8
               * (BYTE1(v35) & 7
                | (8
                 * (BYTE2(v35) & 7
                  | (8 * (HIBYTE(v35) & 7 | (8 * (v36 & 7 | (8 * (HIBYTE(v36) & 7 | (8 * (v37 & 7))))))))))))))
            & 0xF8FFFFFF
            | 0x1000000;
      }
    }
    v26 = v20; /*0xffd031b3*/
    v24 = DdrTrainFunc459C(a3, a4); /*0xffd031bc*/
    return MailBoxFunc8FC5(a1, a2, a3, 4 * v24 + 117460304, v26); /*0xffd031d7*/
  }
  return result; /*0xffd031df*/
}

// Function: IioTailFn_FFD031E7 @ 0xffd031e7 (0x2a2 bytes)
// Index: 2195/2560

int __cdecl IioTailFn_FFD031E7(int a1, unsigned __int8 a2, int a3, unsigned __int8 a4, unsigned __int8 n2, char *a6)
{
  __int16 n2_1; // bx
  char *v7; // esi
  unsigned __int8 v8; // al
  int v9; // eax
  unsigned __int8 v10; // al
  char *v11; // edi
  unsigned __int8 v12; // al
  int v13; // eax
  char n7; // dl
  unsigned __int8 v15; // al
  __int16 n2_2; // bx
  unsigned __int8 v17; // al
  int result; // eax
  char n13; // dl
  unsigned __int8 v20; // al
  int v21; // [esp-8h] [ebp-14h]
  int v22; // [esp-4h] [ebp-10h]
  int v23; // [esp-4h] [ebp-10h]

  HIBYTE(n2_1) = n2; /*0xffd031e8*/
  LOBYTE(n2_1) = 0; /*0xffd031ec*/
  v7 = a6; /*0xffd031f4*/
  do /*0xffd032d0*/
  {
    if ( (unsigned __int8)n2_1 < n2 ) /*0xffd031fa*/
    {
      v8 = DdrTrainFunc459C(a3, a4); /*0xffd03205*/
      v9 = MailBoxFunc8E0B(n2_1, a1, a2, a3, 4 * v8 + 117459900); /*0xffd0321e*/
      if ( !(_BYTE)n2_1 ) /*0xffd03228*/
        v9 ^= ((unsigned __int8)v9 ^ (unsigned __int8)*a6) & 0x1F; /*0xffd03232*/
      if ( (_BYTE)n2_1 == 1 ) /*0xffd03237*/
        v9 ^= ((unsigned __int16)v9 ^ (unsigned __int16)(32 * (unsigned __int8)a6[1])) & 0x3E0; /*0xffd03248*/
      if ( (_BYTE)n2_1 == 2 ) /*0xffd0324d*/
        v9 ^= ((unsigned __int16)v9 ^ (unsigned __int16)((unsigned __int8)a6[2] << 10)) & 0x7C00; /*0xffd0325e*/
      if ( (_BYTE)n2_1 == 3 ) /*0xffd03263*/
        v9 ^= (v9 ^ ((unsigned __int8)a6[3] << 15)) & 0xF8000; /*0xffd03274*/
      if ( (_BYTE)n2_1 == 4 ) /*0xffd03279*/
        v9 ^= (v9 ^ ((unsigned __int8)a6[4] << 20)) & 0x1F00000; /*0xffd0328a*/
      if ( (_BYTE)n2_1 == 5 ) /*0xffd0328f*/
        v9 ^= (v9 ^ ((unsigned __int8)a6[5] << 25)) & 0x3E000000; /*0xffd032a0*/
      v22 = v9; /*0xffd032a2*/
      v10 = DdrTrainFunc459C(a3, a4); /*0xffd032a8*/
      MailBoxFunc8FC5(a1, a2, a3, 4 * v10 + 117459900, v22); /*0xffd032c3*/
    }
    LOBYTE(n2_1) = n2_1 + 1; /*0xffd032cb*/
  }
  while ( (unsigned __int8)n2_1 < 6u ); /*0xffd032d0*/
  LOBYTE(n2_1) = 0; /*0xffd032d7*/
  v11 = a6; /*0xffd032d9*/
  do /*0xffd033b2*/
  {
    v12 = DdrTrainFunc459C(a3, a4); /*0xffd032e0*/
    v13 = MailBoxFunc8E0B(n2_1, a1, a2, a3, 8 * v12 + 117459916); /*0xffd032f9*/
    if ( (unsigned __int8)n2_1 < n2 ) /*0xffd03303*/
    {
      n7 = *v11; /*0xffd03309*/
      if ( *v11 == 6 ) /*0xffd0330e*/
        v13 ^= ((unsigned __int8)v13 ^ 6) & 0x1F; /*0xffd03318*/
      if ( n7 == 7 ) /*0xffd0331d*/
        v13 ^= ((unsigned __int16)v13 ^ 0xE0) & 0x3E0; /*0xffd0332d*/
      if ( n7 == 8 ) /*0xffd03332*/
        v13 ^= ((unsigned __int16)v13 ^ 0x2000) & 0x7C00; /*0xffd03342*/
      if ( n7 == 9 ) /*0xffd03347*/
        v13 ^= (v13 ^ 0x48000) & 0xF8000; /*0xffd03357*/
      if ( n7 == 10 ) /*0xffd0335c*/
        v13 ^= (v13 ^ 0xA00000) & 0x1F00000; /*0xffd0336c*/
      if ( n7 == 11 ) /*0xffd03371*/
        v13 ^= (v13 ^ 0x16000000) & 0x3E000000; /*0xffd03381*/
      v21 = v13; /*0xffd03383*/
      v15 = DdrTrainFunc459C(a3, a4); /*0xffd03389*/
      MailBoxFunc8FC5(a1, a2, a3, 8 * v15 + 117459916, v21); /*0xffd033a4*/
    }
    LOBYTE(n2_1) = n2_1 + 1; /*0xffd033ac*/
    ++v11; /*0xffd033ae*/
  }
  while ( (unsigned __int8)n2_1 < 6u ); /*0xffd033b2*/
  n2_2 = 0; /*0xffd033b8*/
  do /*0xffd0347f*/
  {
    v17 = DdrTrainFunc459C(a3, a4); /*0xffd033c0*/
    result = MailBoxFunc8E0B(n2_2, a1, a2, a3, 8 * v17 + 117459920); /*0xffd033d9*/
    if ( (unsigned __int8)n2_2 < n2 ) /*0xffd033e5*/
    {
      n13 = *v7; /*0xffd033eb*/
      if ( *v7 == 12 ) /*0xffd033f0*/
        result ^= ((unsigned __int8)result ^ 0xC) & 0x1F; /*0xffd033fa*/
      if ( n13 == 13 ) /*0xffd033ff*/
        result ^= ((unsigned __int16)result ^ 0x1A0) & 0x3E0; /*0xffd0340f*/
      if ( n13 == 14 ) /*0xffd03414*/
        result ^= ((unsigned __int16)result ^ 0x3800) & 0x7C00; /*0xffd03424*/
      if ( n13 == 15 ) /*0xffd03429*/
        result ^= (result ^ 0x78000) & 0xF8000; /*0xffd03439*/
      if ( n13 == 16 ) /*0xffd0343e*/
        result ^= (result ^ 0x1000000) & 0x1F00000; /*0xffd0344e*/
      v23 = result; /*0xffd03450*/
      v20 = DdrTrainFunc459C(a3, a4); /*0xffd03456*/
      result = MailBoxFunc8FC5(a1, a2, a3, 8 * v20 + 117459920, v23); /*0xffd03471*/
    }
    LOBYTE(n2_2) = n2_2 + 1; /*0xffd03479*/
    ++v7; /*0xffd0347b*/
  }
  while ( (unsigned __int8)n2_2 <= 4u ); /*0xffd0347f*/
  return result; /*0xffd03485*/
}

// Function: IioTailFn_FFD03489 @ 0xffd03489 (0x85 bytes)
// Index: 2196/2560

int __cdecl IioTailFn_FFD03489(
        int a1,
        unsigned __int8 a2,
        int a3,
        unsigned __int8 a4,
        char a5,
        char a6,
        int a7,
        int a8)
{
  unsigned __int8 v8; // al
  unsigned __int8 v9; // al

  v8 = DdrTrainFunc459C(a3, a4); /*0xffd034ad*/
  MailBoxFunc8FC5(a1, a2, a3, 4 * v8 + 117459772, 8 * (a8 & 0x3FFFF | ((a6 & 0xF) << 21))); /*0xffd034c8*/
  v9 = DdrTrainFunc459C(a3, a4); /*0xffd034e8*/
  return MailBoxFunc8FC5(a1, a2, a3, 4 * v9 + 117460328, a7 & 0x3FFFF | ((a5 & 7) << 24)); /*0xffd0350b*/
}

// Function: IioTailFn_FFD0350E @ 0xffd0350e (0x85 bytes)
// Index: 2197/2560

int __cdecl IioTailFn_FFD0350E(
        int a1,
        unsigned __int8 a2,
        int a3,
        unsigned __int8 a4,
        char a5,
        char a6,
        int a7,
        int a8)
{
  unsigned __int8 v8; // al
  unsigned __int8 v9; // al

  v8 = DdrTrainFunc459C(a3, a4); /*0xffd0352f*/
  MailBoxFunc8FC5(a1, a2, a3, 4 * v8 + 117460344, a7 & 0x3FFFF | ((a5 & 7) << 24)); /*0xffd0354a*/
  v9 = DdrTrainFunc459C(a3, a4); /*0xffd0356d*/
  return MailBoxFunc8FC5(a1, a2, a3, 4 * v9 + 117459788, 8 * (a8 & 0x3FFFF | ((a6 & 0xF) << 21))); /*0xffd03590*/
}

// Function: IioTailFn_FFD03593 @ 0xffd03593 (0x46 bytes)
// Index: 2198/2560

int __cdecl IioTailFn_FFD03593(unsigned __int8 *a1, unsigned __int8 a2, int a3, char a4, char a5)
{
  int v5; // eax

  v5 = MiscConfigCheck(a1, a2, a3, 184567112); /*0xffd035a6*/
  return MiscIoCheck(a1, a2, a3, 0xB004548u, a5 & 0x3F | ((a4 & 7) << 12) | v5 & 0xFFFF8FC0); /*0xffd035d6*/
}

// Function: IioTailFn_FFD035D9 @ 0xffd035d9 (0xd7 bytes)
// Index: 2199/2560

int __usercall IioTailFn_FFD035D9@<eax>(
        int a1@<ebx>,
        int a2,
        unsigned __int8 a3,
        int a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        int a7,
        char a8,
        __int16 a9,
        char a10,
        char a11,
        char a12,
        char a13,
        char a14)
{
  int v14; // edi
  unsigned __int8 v15; // al
  int v16; // eax
  unsigned __int8 v17; // al
  int v19; // [esp-4h] [ebp-Ch]

  v14 = 8 * a6 + 117459984; /*0xffd035e5*/
  v15 = DdrTrainFunc459C(a4, a5); /*0xffd035ef*/
  v16 = MailBoxFunc8E0B(a1, a2, a3, a4, v14 + 80 * v15); /*0xffd03606*/
  if ( a7 ) /*0xffd03617*/
  {
    if ( a7 == 1 ) /*0xffd03624*/
      v16 |= 0x80u; /*0xffd03626*/
  }
  else
  {
    v16 &= ~0x80u; /*0xffd03619*/
  }
  v17 = DdrTrainFunc459C(
          a4,
          a5,
          a8 & 0x7F
        | v16 & 0xA1000080
        | ((a9 & 0xFFF
          | ((a10 & 0xF | (a11 != 0 ? 0x20 : 0) | (a12 != 0 ? 0x40 : 0) | (a13 != 0 ? 0x80 : 0) | (a14 != 0 ? 0x400 : 0)) << 12)) << 8));
  return MailBoxFunc8FC5(a2, a3, a4, v14 + 80 * v17, v19); /*0xffd036ac*/
}

// Function: IioTailFn_FFD036B0 @ 0xffd036b0 (0xc1 bytes)
// Index: 2200/2560

int __usercall IioTailFn_FFD036B0@<eax>(
        int a1@<ebx>,
        int a2,
        unsigned __int8 a3,
        int a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        char a7,
        char a8,
        char a9,
        char a10,
        char a11,
        char a12,
        char a13,
        char a14)
{
  int v14; // edi
  unsigned __int8 v15; // al
  int v16; // eax
  unsigned __int8 v17; // al
  int v19; // [esp-4h] [ebp-8h]

  v14 = 8 * a6 + 117459988; /*0xffd036be*/
  v15 = DdrTrainFunc459C(a4, a5); /*0xffd036c5*/
  v16 = MailBoxFunc8E0B(a1, a2, a3, a4, v14 + 80 * v15); /*0xffd036dc*/
  v17 = DdrTrainFunc459C(
          a4,
          a5,
          a14 & 0x1F
        | ((a13 & 0x1F
          | ((a12 & 1 | (16 * (a11 & 1 | (a10 != 0 ? 4 : 0) | (8 * (a9 & 1 | (a8 != 0 ? 4 : 0) | (a7 != 0 ? 8 : 0)))))) << 12)) << 8)
        | v16 & 0x92EFE0E0);
  return MailBoxFunc8FC5(a2, a3, a4, v14 + 80 * v17, v19); /*0xffd0376e*/
}

// Function: IioTailFn_FFD03771 @ 0xffd03771 (0x40 bytes)
// Index: 2201/2560

int __cdecl IioTailFn_FFD03771(unsigned __int8 *a1, unsigned __int8 a2, int a3, int a4, char a5)
{
  int v5; // eax

  v5 = MiscConfigCheck(a1, a2, a4, 184566948); /*0xffd03784*/
  return MiscIoCheck(a1, a2, a4, 0xB0044A4u, ((a5 != 0) << 31) | v5 & 0x7FFFFFFF); /*0xffd037ae*/
}

// Function: IioTailFn_FFD037B1 @ 0xffd037b1 (0xd1 bytes)
// Index: 2202/2560

int __cdecl IioTailFn_FFD037B1(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        char a4,
        unsigned __int8 a5,
        char *p_n2)
{
  int v6; // esi
  _BYTE *v8; // ebx
  int v9; // ebp
  unsigned __int8 n4; // cl
  _BYTE *v11; // edx
  int n8; // edi
  _DWORD v14[2]; // [esp+4h] [ebp-8h] BYREF

  v14[0] = -1; /*0xffd037bd*/
  v14[1] = -1; /*0xffd037c9*/
  v6 = MiscConfigCheck(a1, a2, a3, 184567100); /*0xffd037da*/
  if ( a5 ) /*0xffd037e5*/
  {
    v8 = v14; /*0xffd037ee*/
    v9 = a5; /*0xffd037f2*/
    do /*0xffd03821*/
    {
      if ( (unsigned __int8)*p_n2 < 2u ) /*0xffd037f9*/
      {
        n4 = p_n2[1]; /*0xffd037fb*/
        if ( n4 < 4u ) /*0xffd03801*/
          IioFunc7517((int)a1, a2, a3, *p_n2, n4, v8); /*0xffd03812*/
      }
      ++v8; /*0xffd0381a*/
      p_n2 += 2; /*0xffd0381b*/
      --v9; /*0xffd0381e*/
    }
    while ( v9 ); /*0xffd03821*/
    v11 = v14; /*0xffd03827*/
    n8 = 8; /*0xffd0382b*/
    do /*0xffd03845*/
    {
      if ( *v11 != 0xFF ) /*0xffd03830*/
        v6 ^= (unsigned __int8)(v6 ^ (v6 | (1 << *v11))); /*0xffd0383f*/
      ++v11; /*0xffd03841*/
      --n8; /*0xffd03842*/
    }
    while ( n8 ); /*0xffd03845*/
  }
  else
  {
    v6 &= 0xFFFFFF00; /*0xffd0384a*/
  }
  return MiscIoCheck(a1, a2, a3, 0xB00453Cu, v6 & 0x7FFFFFFF | ((a4 != 0) << 31)); /*0xffd0387e*/
}

// Function: IioTailFn_FFD03882 @ 0xffd03882 (0x70 bytes)
// Index: 2203/2560

int __cdecl IioTailFn_FFD03882(unsigned __int8 *__return_address, int n4, int n6, int n2)
{
  int CpuCount; // ebp
  int v5; // edi
  int n6_1; // esi
  int result; // eax

  CpuCount = GetCpuCount((int)__return_address, n4, n6); /*0xffd0389b*/
  v5 = 1379 * (unsigned __int8)n2; /*0xffd038a0*/
  n6_1 = *(_DWORD *)(v5 + CpuCount + 1257) | 1; /*0xffd038ad*/
  ProcCommonFuncF4C7(__return_address, n4, n6, n2, 84689280, n6_1); /*0xffd038c3*/
  n6_1 &= ~1u; /*0xffd038c8*/
  result = ProcCommonFuncF4C7(__return_address, n4, n6, n2, 84689280, n6_1); /*0xffd038de*/
  *(_DWORD *)(v5 + CpuCount + 1257) = n6_1; /*0xffd038e6*/
  return result; /*0xffd038ed*/
}

// Function: IioTailFn_FFD038F2 @ 0xffd038f2 (0xbb bytes)
// Index: 2204/2560

_BYTE *__cdecl IioTailFn_FFD038F2(int a1, int a2, char a3, unsigned __int8 a4, _BYTE *a5)
{
  int v5; // edx
  int v6; // esi
  char n3; // bl
  char v8; // di
  char v9; // al
  unsigned __int8 v11; // [esp+10h] [ebp-10h]
  unsigned __int8 v12; // [esp+18h] [ebp-8h]
  char n3_1; // [esp+1Ch] [ebp-4h]

  LOBYTE(v5) = 0; /*0xffd038fb*/
  v6 = a4; /*0xffd038fe*/
  n3 = 0; /*0xffd03903*/
  v11 = 0; /*0xffd03906*/
  v8 = 0; /*0xffd0390a*/
  n3_1 = 0; /*0xffd0390c*/
  do /*0xffd03999*/
  {
    if ( ((1 << v8) & v6) == 0 ) /*0xffd0391d*/
      goto LABEL_9; /*0xffd0391d*/
    v9 = IioFunc5F9D(a3, n3_1); /*0xffd03927*/
    v12 = v9; /*0xffd03938*/
    if ( (*(unsigned __int16 *)(a1 + 244426) & (1 << v9)) != 0 && DdrTrainFunc4512(a1, a2, v9) ) /*0xffd0394d*/
    {
      v6 = a4; /*0xffd0396c*/
      if ( MiscConfigCheck((unsigned __int8 *)a1, a2, v12, 117525952) < 0 ) /*0xffd03975*/
      {
        v5 = v11 | (1 << v8); /*0xffd0397e*/
        v11 = v5; /*0xffd03981*/
        goto LABEL_9; /*0xffd03985*/
      }
    }
    else
    {
      v6 = a4; /*0xffd03987*/
    }
    LOBYTE(v5) = v11; /*0xffd0398b*/
LABEL_9:
    ++n3; /*0xffd0398f*/
    ++v8; /*0xffd03991*/
    n3_1 = n3; /*0xffd03992*/
  }
  while ( (unsigned __int8)n3 < 3u ); /*0xffd03999*/
  *a5 = v5; /*0xffd039a6*/
  return a5; /*0xffd039a3*/
}

// Function: IioTailFn_FFD039AD @ 0xffd039ad (0x2e bytes)
// Index: 2205/2560

unsigned int __cdecl IioTailFn_FFD039AD(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        unsigned __int8 a3,
        _BYTE *a4,
        _WORD *a5)
{
  unsigned int v5; // eax
  unsigned int v6; // edx
  unsigned int result; // eax

  v5 = MiscConfigCheck(a1, a2, a3, 117525788); /*0xffd039be*/
  v6 = v5 >> 8; /*0xffd039c8*/
  result = HIWORD(v5); /*0xffd039ce*/
  *a4 = v6; /*0xffd039d1*/
  *a5 = result; /*0xffd039d6*/
  return result; /*0xffd039d9*/
}

// Function: IioTailFn_FFD039DB @ 0xffd039db (0xc6 bytes)
// Index: 2206/2560

char __cdecl IioTailFn_FFD039DB(int a1, int a2, char a3, unsigned __int8 a4, char a5)
{
  int v5; // edx
  char n3; // bl
  char v7; // bp
  int v8; // eax
  int v9; // eax
  int v10; // eax
  int v12; // [esp+10h] [ebp-Ch]
  char n3_1; // [esp+18h] [ebp-4h]

  v5 = a4; /*0xffd039de*/
  n3 = 0; /*0xffd039e6*/
  v7 = 0; /*0xffd039f1*/
  n3_1 = 0; /*0xffd039f3*/
  do /*0xffd03a93*/
  {
    v8 = 1 << v7; /*0xffd039fc*/
    if ( ((1 << v7) & v5) != 0 ) /*0xffd03a00*/
    {
      LOBYTE(v8) = IioFunc5F9D(a3, n3_1); /*0xffd03a0e*/
      LOBYTE(v12) = v8; /*0xffd03a1f*/
      if ( (*(unsigned __int16 *)(a1 + 244426) & (1 << v8)) != 0 ) /*0xffd03a29*/
      {
        LOBYTE(v8) = DdrTrainFunc4512(a1, a2, v8); /*0xffd03a34*/
        if ( (_BYTE)v8 ) /*0xffd03a3e*/
        {
          v9 = MiscConfigCheck((unsigned __int8 *)a1, a2, v12, 117525952); /*0xffd03a4e*/
          if ( a5 ) /*0xffd03a5b*/
            v10 = v9 & 0xFFFC00FF | 0x1CC00; /*0xffd03a62*/
          else
            v10 = v9 & 0x3FFC00FF; /*0xffd03a69*/
          LOBYTE(v8) = MiscIoCheck((unsigned __int8 *)a1, a2, v12, 0x7014DC0u, v10); /*0xffd03a7d*/
        }
      }
      v5 = a4; /*0xffd03a85*/
    }
    ++n3; /*0xffd03a89*/
    ++v7; /*0xffd03a8b*/
    n3_1 = n3; /*0xffd03a8c*/
  }
  while ( (unsigned __int8)n3 < 3u ); /*0xffd03a93*/
  return v8; /*0xffd03a99*/
}

// Function: IioTailFn_FFD03AA1 @ 0xffd03aa1 (0xe9 bytes)
// Index: 2207/2560

int __cdecl IioTailFn_FFD03AA1(
        unsigned __int8 *a1,
        unsigned __int8 a2,
        int a3,
        int a4,
        int a5,
        char a6,
        char a7,
        int a8)
{
  int v8; // eax
  unsigned int v9; // esi
  unsigned int v11; // [esp-14h] [ebp-24h]
  unsigned int v12; // [esp-14h] [ebp-24h]

  v8 = MiscConfigCheck(a1, a2, a3, 117525760); /*0xffd03ab9*/
  if ( a4 )
  {
    v9 = v8 & 0xFFFFF8FF | (a7 != 0 ? 0x100 : 0) | (a6 != 0 ? 0x200 : 0) | (a5 != 0 ? 0x400 : 0);
    v12 = a8 & 0xFFFFFF | MiscConfigCheck(a1, a2, a3, 117525768) & 0xFF000000; /*0xffd03b63*/
    MiscIoCheck(a1, a2, a3, 0x7014D08u, v12); /*0xffd03b6c*/
  }
  else
  {
    v9 = v8 & 0xFFFFFFF8 | (a7 != 0) | (a6 != 0 ? 2 : 0) | (a5 != 0 ? 4 : 0);
    v11 = a8 & 0xFFFFFF | MiscConfigCheck(a1, a2, a3, 117525764) & 0xFF000000; /*0xffd03b0f*/
    MiscIoCheck(a1, a2, a3, 0x7014D04u, v11); /*0xffd03b15*/
  }
  return MiscIoCheck(a1, a2, a3, 0x7014D00u, v9); /*0xffd03b85*/
}

// Function: IioTailFn_FFD03B8A @ 0xffd03b8a (0x87 bytes)
// Index: 2208/2560

int __cdecl IioTailFn_FFD03B8A(unsigned __int8 *a1, unsigned __int8 a2, int a3, char a4)
{
  int v4; // edi
  unsigned int v5; // esi

  v4 = ((a4 == 1) << 31) | MiscConfigCheck(a1, a2, a3, 117525760) & 0x7FFFFFFF; /*0xffd03bc7*/
  v5 = ((unsigned __int8)(a4 - 1) != 0 ? 4 : 0) | MiscConfigCheck(a1, a2, a3, 117525792) & 0xFFFFFFFB;
  MiscIoCheck(a1, a2, a3, 0x7014D00u, v4); /*0xffd03bf0*/
  return MiscIoCheck(a1, a2, a3, 0x7014D20u, v5); /*0xffd03c0c*/
}

// Function: IioTailFn_FFD03C11 @ 0xffd03c11 (0x39 bytes)
// Index: 2209/2560

int __cdecl IioTailFn_FFD03C11(unsigned __int8 *a1, unsigned __int8 a2, int a3, unsigned __int8 a4)
{
  int v4; // eax

  v4 = MiscConfigCheck(a1, a2, a3, 117525788); /*0xffd03c24*/
  return MiscIoCheck(a1, a2, a3, 0x7014D1Cu, a4 | v4 & 0xFFFFFF00); /*0xffd03c47*/
}

// Function: IioTailFn_FFD03C4A @ 0xffd03c4a (0xbb bytes)
// Index: 2210/2560

char __cdecl IioTailFn_FFD03C4A(unsigned __int8 *__return_address, unsigned __int8 n4, int a3, int n3, char n3a)
{
  unsigned __int8 n6; // bl
  char n3a_1; // al
  int n3b_1; // ebx
  int v8; // eax
  int v9; // eax
  int v10; // [esp+10h] [ebp-4h]
  unsigned __int8 n3b; // [esp+28h] [ebp+14h]
  unsigned __int8 n3c; // [esp+28h] [ebp+14h]

  n6 = 0; /*0xffd03c51*/
  LOBYTE(v10) = 0; /*0xffd03c5d*/
  do /*0xffd03c82*/
  {
    MiscIoCheck(__return_address, n4, v10, 0xB004548u, -65535); /*0xffd03c71*/
    LOBYTE(v10) = ++n6; /*0xffd03c7b*/
  }
  while ( n6 < 6u ); /*0xffd03c82*/
  n3a_1 = n3a; /*0xffd03c84*/
  n3b_1 = 0; /*0xffd03c8a*/
  if ( n3a == 2 ) /*0xffd03c8d*/
  {
    n3b = 0; /*0xffd03c8f*/
    do /*0xffd03cc0*/
    {
      v8 = MailBoxFunc8E0B(n3b_1, (int)__return_address, n4, n3b, 117459068); /*0xffd03c9f*/
      n3a_1 = MailBoxFunc8FC5((int)__return_address, n4, n3b, 117459068, v8 | 1); /*0xffd03caf*/
      LOBYTE(n3b_1) = n3b_1 + 1; /*0xffd03cb7*/
      n3b = n3b_1; /*0xffd03cb9*/
    }
    while ( (unsigned __int8)n3b_1 < 2u ); /*0xffd03cc0*/
  }
  else if ( n3a == 3 || n3a == 1 ) /*0xffd03cca*/
  {
    n3c = 0; /*0xffd03ccc*/
    do /*0xffd03cfd*/
    {
      v9 = MailBoxFunc8E0B(n3b_1, (int)__return_address, n4, n3c, 117459068); /*0xffd03cdc*/
      n3a_1 = MailBoxFunc8FC5((int)__return_address, n4, n3c, 117459068, v9 & 0xFFFFFFFE); /*0xffd03cec*/
      LOBYTE(n3b_1) = n3b_1 + 1; /*0xffd03cf4*/
      n3c = n3b_1; /*0xffd03cf6*/
    }
    while ( (unsigned __int8)n3b_1 < 2u ); /*0xffd03cfd*/
  }
  return n3a_1; /*0xffd03cff*/
}

// Function: IioTailFn_FFD03D05 @ 0xffd03d05 (0x166 bytes)
// Index: 2211/2560

int __cdecl IioTailFn_FFD03D05(unsigned __int8 *__return_address, _BYTE *buf, unsigned __int8 n4, _BYTE *a4)
{
  unsigned __int8 *__return_address_1; // edx
  char n6; // bh
  int v6; // ebp
  int result; // eax
  unsigned __int8 *v8; // edi
  unsigned __int8 *v9; // esi
  unsigned __int8 v10; // bl
  int v11; // ecx
  unsigned __int8 v12; // bh
  unsigned __int8 v13; // cl
  char n2; // al
  char n6_1; // [esp+10h] [ebp-28h]
  int v16; // [esp+14h] [ebp-24h]
  unsigned __int8 v17; // [esp+18h] [ebp-20h]
  unsigned __int8 v18; // [esp+1Ch] [ebp-1Ch]
  int v19; // [esp+20h] [ebp-18h]
  unsigned __int8 *v20; // [esp+24h] [ebp-14h]
  unsigned __int8 *v21; // [esp+2Ch] [ebp-Ch]

  __return_address_1 = __return_address; /*0xffd03d11*/
  n6 = 0; /*0xffd03d19*/
  v6 = 48704 * n4; /*0xffd03d1c*/
  result = 0; /*0xffd03d2e*/
  n6_1 = 0; /*0xffd03d30*/
  v8 = &__return_address[v6 + 258725]; /*0xffd03d34*/
  v19 = v6; /*0xffd03d36*/
  v16 = 0; /*0xffd03d40*/
  v20 = v8; /*0xffd03d44*/
  v9 = &__return_address[v6 + 259118]; /*0xffd03d48*/
  do /*0xffd03e5d*/
  {
    v10 = 0; /*0xffd03d4a*/
    v18 = 0; /*0xffd03d4c*/
    if ( *v8 ) /*0xffd03d50*/
    {
      do /*0xffd03e2e*/
      {
        v11 = 1379 * v10; /*0xffd03d5b*/
        if ( v9[v11] ) /*0xffd03d69*/
        {
          v12 = 0; /*0xffd03d76*/
          v17 = 0; /*0xffd03d7a*/
          v21 = &__return_address_1[v11 + v6]; /*0xffd03d7e*/
          if ( v9[v11 + 19] ) /*0xffd03d82*/
          {
            do /*0xffd03e18*/
            {
              if ( !KtiFunc89E9((int)__return_address_1, n4, n6_1, v18, v17, 1) ) /*0xffd03da5*/
              {
                v13 = v21[242 * v12 + 259345]; /*0xffd03dc2*/
                n2 = buf[12 * n4 + 31716 + 2 * v16 + v10]; /*0xffd03dde*/
                if ( n2 == 2 ) /*0xffd03de3*/
                {
                  a4[6 * v13 + v16] -= 2; /*0xffd03df1*/
                }
                else if ( n2 == 1 ) /*0xffd03df9*/
                {
                  --a4[6 * v13 + v16]; /*0xffd03e07*/
                }
              }
              __return_address_1 = __return_address; /*0xffd03e0a*/
              v17 = ++v12; /*0xffd03e10*/
            }
            while ( v12 < v9[1379 * v10 + 19] ); /*0xffd03e18*/
            v8 = v20; /*0xffd03e1e*/
            v6 = v19; /*0xffd03e22*/
          }
        }
        v18 = ++v10; /*0xffd03e28*/
      }
      while ( v10 < *v8 ); /*0xffd03e2e*/
      n6 = n6_1; /*0xffd03e34*/
      result = v16; /*0xffd03e3d*/
    }
    ++n6; /*0xffd03e41*/
    v6 += 7688; /*0xffd03e43*/
    ++result; /*0xffd03e45*/
    n6_1 = n6; /*0xffd03e46*/
    v8 += 7688; /*0xffd03e4a*/
    v16 = result; /*0xffd03e4c*/
    v9 += 7688; /*0xffd03e50*/
    v19 = v6; /*0xffd03e52*/
    v20 = v8; /*0xffd03e56*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd03e5d*/
  return result; /*0xffd03e63*/
}

// Function: IioTailFunc3E6B @ 0xffd03e6b (0x21d bytes)
// Index: 2212/2560

int __cdecl IioTailFunc3E6B(unsigned __int8 *__return_address, int n4, int n6, int a4, int n2)
{
  unsigned int v6; // eax
  unsigned int n0x18; // ebx
  int v8; // edi
  unsigned __int8 n2_1; // al
  unsigned __int8 *v10; // ecx
  unsigned __int8 v11; // al
  unsigned __int8 *v12; // edx
  unsigned __int16 v13; // ax
  int n26; // [esp-4h] [ebp-24h]
  int v17; // [esp+14h] [ebp-Ch]
  unsigned int v18; // [esp+1Ch] [ebp-4h]
  unsigned __int8 *v19; // [esp+24h] [ebp+4h]
  unsigned __int8 v20; // [esp+30h] [ebp+10h]

  v19 = &__return_address[48704 * (unsigned __int8)n4 + 7688 * (unsigned __int8)n6]; /*0xffd03ea0*/
  v6 = MiscConfigCheck(__return_address, n4, n6, 184566276); /*0xffd03ea4*/
  n0x18 = HIBYTE(v6) & 0x1F; /*0xffd03eba*/
  v18 = v6; /*0xffd03ebd*/
  *(_DWORD *)(a4 + 8 * (unsigned __int8)n6 + 4) = (unsigned __int8)v6 >> 4; /*0xffd03ec4*/
  *(_DWORD *)(a4 + 8 * (unsigned __int8)n6) = n0x18; /*0xffd03ecd*/
  if ( (_BYTE)n2 ) /*0xffd03ed0*/
  {
    v8 = KtiFuncC0FC((int)__return_address) + 10000 * (unsigned __int8)n2; /*0xffd03eea*/
    n0x18 = (unsigned __int8)((v8 - 1) / (unsigned int)KtiFuncC0FC((int)__return_address)); /*0xffd03efd*/
  }
  n2_1 = 0; /*0xffd03f04*/
  v10 = v19; /*0xffd03f06*/
  LOBYTE(n2) = 0; /*0xffd03f0a*/
  do /*0xffd0404a*/
  {
    if ( v10[259118] ) /*0xffd03f0e*/
    {
      v17 = KtiFunc91DE((int)__return_address, n4, n6, n2); /*0xffd03f36*/
      v11 = 0; /*0xffd03f3a*/
      v20 = 0; /*0xffd03f3c*/
      if ( __return_address[50813 * (unsigned __int8)n4 + 10194] ) /*0xffd03f44*/
      {
        v12 = v19; /*0xffd03f51*/
        do /*0xffd0402a*/
        {
          if ( v12[242 * v11 + 259342] ) /*0xffd03f5e*/
          {
            v13 = *(_WORD *)(244 * v11 + v17) & 0xD1FF; /*0xffd03f82*/
            if ( n0x18 > 0xA ) /*0xffd03f88*/
            {
              if ( n0x18 > 0xC ) /*0xffd03f91*/
              {
                if ( n0x18 > 0xE ) /*0xffd03f9f*/
                {
                  if ( n0x18 > 0x10 ) /*0xffd03fad*/
                  {
                    if ( n0x18 > 0x12 ) /*0xffd03fbb*/
                    {
                      if ( n0x18 > 0x14 ) /*0xffd03fc9*/
                      {
                        if ( n0x18 > 0x16 ) /*0xffd03fd7*/
                        {
                          if ( n0x18 > 0x18 ) /*0xffd03fe5*/
                          {
                            n26 = 26; /*0xffd03ff0*/
                            v13 |= 0x2000u; /*0xffd03ff2*/
                          }
                          else
                          {
                            n26 = 24; /*0xffd03fe7*/
                            v13 |= 0xC00u; /*0xffd03fe9*/
                          }
                        }
                        else
                        {
                          n26 = 22; /*0xffd03fd9*/
                          v13 |= 0xE00u; /*0xffd03fdb*/
                        }
                      }
                      else
                      {
                        n26 = 20; /*0xffd03fcb*/
                        v13 |= 0xA00u; /*0xffd03fcd*/
                      }
                    }
                    else
                    {
                      n26 = 18; /*0xffd03fbd*/
                      v13 |= 0x800u; /*0xffd03fbf*/
                    }
                  }
                  else
                  {
                    n26 = 16; /*0xffd03faf*/
                    v13 |= 0x600u; /*0xffd03fb1*/
                  }
                }
                else
                {
                  n26 = 14; /*0xffd03fa1*/
                  v13 |= 0x400u; /*0xffd03fa3*/
                }
              }
              else
              {
                n26 = 12; /*0xffd03f93*/
                v13 |= 0x200u; /*0xffd03f95*/
              }
            }
            else
            {
              n26 = 10; /*0xffd03f8a*/
            }
            n0x18 = n26; /*0xffd03ff7*/
            RmtFunc349(__return_address, n4, n6, n2, v20, v13, 0); /*0xffd04009*/
            v12 = v19; /*0xffd0400e*/
          }
          v11 = v20 + 1; /*0xffd0401d*/
          v20 = v11; /*0xffd0401f*/
        }
        while ( v11 < __return_address[50813 * (unsigned __int8)n4 + 10194] ); /*0xffd0402a*/
      }
      v10 = v19; /*0xffd04030*/
      n2_1 = n2; /*0xffd04034*/
    }
    ++n2_1; /*0xffd04038*/
    v10 += 1379; /*0xffd0403a*/
    LOBYTE(n2) = n2_1; /*0xffd04040*/
    v19 = v10; /*0xffd04044*/
  }
  while ( n2_1 < 2u ); /*0xffd0404a*/
  return MiscIoCheck( /*0xffd04080*/
           __return_address,
           n4,
           n6,
           0xB004204u,
           v18 & 0xE0FFFF0F | (8 * (n0x18 & 0x1E | ((n0x18 & 0x1F) << 21))));
}

// Function: IioTailFunc4088 @ 0xffd04088 (0x132 bytes)
// Index: 2213/2560

int __cdecl IioTailFunc4088(int __return_address, unsigned __int8 n4, int buf)
{
  int __return_address_1; // edx
  char n6; // bh
  int v5; // ecx
  int result; // eax
  unsigned __int8 *v7; // esi
  int v8; // edi
  unsigned __int8 v9; // bl
  int v10; // ebp
  unsigned __int8 v11; // bh
  char n6_1; // [esp+10h] [ebp-1Ch]
  int v13; // [esp+14h] [ebp-18h]
  unsigned __int8 v14; // [esp+18h] [ebp-14h]
  unsigned __int8 v15; // [esp+1Ch] [ebp-10h]
  int v16; // [esp+20h] [ebp-Ch]
  unsigned __int8 *v17; // [esp+24h] [ebp-8h]
  int v18; // [esp+28h] [ebp-4h]

  __return_address_1 = __return_address; /*0xffd0408f*/
  n6 = 0; /*0xffd04097*/
  v5 = 48704 * n4; /*0xffd04099*/
  result = 0; /*0xffd0409f*/
  n6_1 = 0; /*0xffd040aa*/
  v7 = (unsigned __int8 *)(v5 + __return_address + 258725); /*0xffd040ae*/
  v16 = v5; /*0xffd040b0*/
  v13 = 0; /*0xffd040ba*/
  v17 = v7; /*0xffd040be*/
  v8 = v5 + __return_address + 259118; /*0xffd040c2*/
  do /*0xffd041ac*/
  {
    if ( *(v7 - 3) ) /*0xffd040c9*/
    {
      v9 = 0; /*0xffd040d3*/
      v15 = 0; /*0xffd040d5*/
      if ( *v7 ) /*0xffd040d9*/
      {
        do /*0xffd0417d*/
        {
          v10 = 1379 * v9; /*0xffd040e4*/
          if ( *(_BYTE *)(v8 + v10) ) /*0xffd040ea*/
          {
            v11 = 0; /*0xffd040f7*/
            v14 = 0; /*0xffd040fb*/
            v18 = __return_address_1 + v5 + v10; /*0xffd040ff*/
            if ( *(_BYTE *)(v8 + v10 + 19) ) /*0xffd04103*/
            {
              do /*0xffd0416b*/
              {
                if ( !KtiFunc89E9(__return_address_1, n4, n6_1, v15, v14, 1) && *(_WORD *)(v8 + v10 + 142) != 0xCE00 ) /*0xffd04139*/
                  *(_BYTE *)(v13 + 6 * *(unsigned __int8 *)(242 * v11 + v18 + 259345) + buf) = 0; /*0xffd04159*/
                __return_address_1 = __return_address; /*0xffd0415d*/
                v14 = ++v11; /*0xffd04163*/
              }
              while ( v11 < *(_BYTE *)(v8 + v10 + 19) ); /*0xffd0416b*/
              v7 = v17; /*0xffd0416d*/
              v5 = v16; /*0xffd04171*/
            }
          }
          v15 = ++v9; /*0xffd04177*/
        }
        while ( v9 < *v7 ); /*0xffd0417d*/
        n6 = n6_1; /*0xffd04183*/
        result = v13; /*0xffd0418c*/
      }
    }
    ++n6; /*0xffd04190*/
    v5 += 7688; /*0xffd04192*/
    ++result; /*0xffd04194*/
    n6_1 = n6; /*0xffd04195*/
    v7 += 7688; /*0xffd04199*/
    v13 = result; /*0xffd0419b*/
    v8 += 7688; /*0xffd0419f*/
    v16 = v5; /*0xffd041a1*/
    v17 = v7; /*0xffd041a5*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd041ac*/
  return result; /*0xffd041b2*/
}

// Function: IioTailFunc41BA @ 0xffd041ba (0xf5 bytes)
// Index: 2214/2560

char __cdecl IioTailFunc41BA(int __return_address, int buf, unsigned __int8 n4, unsigned __int8 n6, unsigned __int8 n2)
{
  int v5; // eax
  int v6; // ecx
  char n5; // bl
  int buf_1; // ecx
  char n2_1; // bl
  char *v10; // eax
  unsigned __int8 v11; // al

  v5 = __return_address + 48704 * n4 + 7688 * n6; /*0xffd041db*/
  v6 = 1379 * n2; /*0xffd041dd*/
  n5 = *(_BYTE *)(v6 + v5 + 259236); /*0xffd041e3*/
  if ( n5 == 5 ) /*0xffd041ed*/
  {
    if ( *(_BYTE *)(v6 + v5 + 259222) ) /*0xffd041ef*/
    {
      buf_1 = buf; /*0xffd041f9*/
      n2_1 = 0; /*0xffd04205*/
      v10 = (char *)(buf + n2 + 2 * (n6 + 6 * (n4 + 2643))); /*0xffd0420c*/
      *v10 = 2; /*0xffd0420e*/
      goto LABEL_11; /*0xffd04211*/
    }
    n2_1 = 1; /*0xffd04227*/
    goto LABEL_8; /*0xffd04228*/
  }
  if ( n5 == 6 ) /*0xffd0422d*/
  {
    if ( *(_BYTE *)(v6 + v5 + 259222) ) /*0xffd0422f*/
    {
      n2_1 = 2; /*0xffd04239*/
LABEL_8:
      buf_1 = buf; /*0xffd0423c*/
      v10 = (char *)(buf + n2 + 2 * (n6 + 6 * (n4 + 2643))); /*0xffd0424d*/
      *v10 = n2_1; /*0xffd0424f*/
      goto LABEL_11; /*0xffd04251*/
    }
    buf_1 = buf; /*0xffd04262*/
    n2_1 = 3; /*0xffd0426e*/
    v10 = (char *)(buf + n2 + 2 * (n6 + 6 * (n4 + 2643))); /*0xffd04276*/
    *v10 = 1; /*0xffd04278*/
  }
  else
  {
    buf_1 = buf; /*0xffd0427d*/
    n2_1 = -1; /*0xffd04289*/
    v10 = (char *)(buf + n2 + 2 * (n6 + 6 * (n4 + 2643))); /*0xffd04291*/
    *v10 = 0; /*0xffd04293*/
  }
LABEL_11:
  v11 = *v10; /*0xffd04296*/
  if ( *(_BYTE *)(n4 + buf_1 + 31712) < v11 ) /*0xffd0429f*/
    *(_BYTE *)(n4 + buf_1 + 31712) = v11; /*0xffd042a1*/
  return n2_1; /*0xffd042a8*/
}

// Function: IioTailFunc42AF @ 0xffd042af (0xea bytes)
// Index: 2215/2560

char __cdecl IioTailFunc42AF(int n6, unsigned __int8 n4, unsigned __int8 a3, unsigned __int8 a4)
{
  int v4; // ecx
  int v5; // edx
  char n5; // al
  char n5_1; // bl

  v4 = 7688 * a3 + 259118 + n6 + 48704 * n4; /*0xffd042d1*/
  v5 = 1379 * a4; /*0xffd042d8*/
  n5 = 5; /*0xffd042de*/
  n5_1 = *(_BYTE *)(v5 + v4 + 118); /*0xffd042df*/
  if ( n5_1 == 5 && *(_BYTE *)(v5 + v4 + 181) == 67 || n5_1 == 4 && *(_BYTE *)(v5 + v4 + 181) == 84 ) /*0xffd042fe*/
    return 1; /*0xffd04303*/
  if ( n5_1 == 6 && *(_BYTE *)(v5 + v4 + 181) == 77 ) /*0xffd04311*/
    return 2; /*0xffd04316*/
  if ( n5_1 == 5 && *(_BYTE *)(v5 + v4 + 181) == 68 ) /*0xffd04323*/
    return 3; /*0xffd04328*/
  if ( n5_1 == 6 && *(_BYTE *)(v5 + v4 + 181) == 65 ) /*0xffd04336*/
    return 4; /*0xffd0433b*/
  if ( n5_1 != 5 || *(_BYTE *)(v5 + v4 + 181) != 66 ) /*0xffd04348*/
  {
    if ( n5_1 == 4 && *(_BYTE *)(v5 + v4 + 181) == 69 ) /*0xffd04357*/
      return 6; /*0xffd0435c*/
    if ( n5_1 == 5 && *(_BYTE *)(v5 + v4 + 181) == 69 ) /*0xffd04369*/
      return 7; /*0xffd0436e*/
    if ( n5_1 != 6 ) /*0xffd04372*/
      return 0; /*0xffd04372*/
    if ( *(_BYTE *)(v5 + v4 + 181) == 66 ) /*0xffd0437c*/
      return 8; /*0xffd04381*/
    if ( *(_BYTE *)(v5 + v4 + 181) == 67 ) /*0xffd0438f*/
      return 9; /*0xffd04391*/
    else
      return 0; /*0xffd04395*/
  }
  return n5; /*0xffd04302*/
}

// Function: IioTailFunc4399 @ 0xffd04399 (0xa1 bytes)
// Index: 2216/2560

char __cdecl IioTailFunc4399(
        int buf,
        unsigned __int8 bufa,
        unsigned __int8 n6,
        unsigned __int8 n2,
        char a5,
        char a6,
        int a7,
        int a8,
        char a9,
        unsigned __int8 n99,
        char a11,
        char n0x55)
{
  char v12; // bl
  int n32; // esi
  int v14; // edx
  char v15; // al
  unsigned __int8 v16; // al
  char v17; // al
  char v18; // cl

  v12 = 0; /*0xffd043ab*/
  n32 = 32; /*0xffd043cd*/
  v14 = 516 * (n2 + 2 * (n6 + 6 * bufa)) + buf + 5; /*0xffd043ce*/
  v15 = a5; /*0xffd043d0*/
  do /*0xffd04431*/
  {
    if ( *(_BYTE *)(v14 - 1) == v15 ) /*0xffd043d7*/
    {
      if ( *(_BYTE *)v14 == a6 && *(_DWORD *)(v14 + 3) == a7 && *(_BYTE *)(v14 + 9) == a9 ) /*0xffd043ed*/
      {
        v16 = *(_BYTE *)(v14 + 10); /*0xffd043f6*/
        if ( a11 == 1 ) /*0xffd043f9*/
        {
          v17 = v16 >> 2; /*0xffd043fb*/
          v18 = n99 >> 2; /*0xffd043fe*/
        }
        else
        {
          v17 = v16 >> 3; /*0xffd04403*/
          v18 = n99 >> 3; /*0xffd04406*/
        }
        if ( v17 == v18 ) /*0xffd0440b*/
        {
          v12 = 1; /*0xffd04414*/
          *(_BYTE *)(v14 + 11) |= 1 << *(_BYTE *)(buf + 24769); /*0xffd04421*/
          *(_BYTE *)(v14 + 12) = n0x55; /*0xffd04424*/
        }
      }
      v15 = a5; /*0xffd04427*/
    }
    v14 += 16; /*0xffd0442b*/
    --n32; /*0xffd0442e*/
  }
  while ( n32 ); /*0xffd04431*/
  return v12; /*0xffd04433*/
}

// Function: IioTailFunc443A @ 0xffd0443a (0x30 bytes)
// Index: 2217/2560

unsigned int __cdecl IioTailFunc443A(unsigned __int16 n3)
{
  char n3_1; // cl
  int v2; // eax

  n3_1 = n3; /*0xffd0443a*/
  v2 = 0; /*0xffd0443e*/
  if ( n3 <= 3u ) /*0xffd04444*/
    return (unsigned __int16)(1 << n3_1); /*0xffd04444*/
  if ( n3 <= 9u ) /*0xffd0444a*/
  {
    n3_1 = n3 + 4; /*0xffd0444c*/
    return (unsigned __int16)(1 << n3_1); /*0xffd04456*/
  }
  LOBYTE(v2) = n3 != 10; /*0xffd0445b*/
  return ((v2 - 1) & 0xFFFFFF11) + 255; /*0xffd04456*/
}

// Function: IioTailFunc446A @ 0xffd0446a (0x32e bytes)
// Index: 2218/2560

char __cdecl IioTailFunc446A(
        unsigned __int8 *__return_address,
        int buf,
        int n4,
        unsigned __int8 n3,
        unsigned __int8 a5,
        unsigned __int8 a6,
        int a7,
        int a8,
        int a9,
        int a10,
        int a11,
        char a12,
        int a13,
        int bufaa,
        int a15)
{
  unsigned __int8 n4_1; // dl
  char n2; // al
  bool n3_2; // al
  char v18; // bp
  int v19; // edi
  int *v20; // ebx
  int n4_2; // ebx
  int n4_5; // eax
  int v23; // esi
  int v24; // ebp
  int *v25; // esi
  unsigned __int8 n6_2; // dl
  int v27; // ecx
  int v28; // eax
  int v29; // esi
  int n6_3; // edi
  bool v31; // zf
  unsigned __int8 n6; // [esp+10h] [ebp-1Ch]
  unsigned __int8 n6_4; // [esp+10h] [ebp-1Ch]
  int *v35; // [esp+18h] [ebp-14h]
  unsigned __int8 n4_6; // [esp+1Ch] [ebp-10h]
  int n6_1; // [esp+20h] [ebp-Ch]
  int v38; // [esp+20h] [ebp-Ch]
  int v39; // [esp+24h] [ebp-8h]
  int v40; // [esp+24h] [ebp-8h]
  int v41; // [esp+28h] [ebp-4h]
  char n3_1; // [esp+5Ch] [ebp+30h]
  char n4_3; // [esp+5Ch] [ebp+30h]
  char n4_4; // [esp+5Ch] [ebp+30h]

  n4_1 = n4; /*0xffd0446a*/
  if ( a12 != 1 ) /*0xffd0447d*/
  {
    n3_2 = 0; /*0xffd0449e*/
    goto LABEL_6; /*0xffd0449e*/
  }
  n2 = *(_BYTE *)((unsigned __int8)n4 + buf + 31712); /*0xffd04486*/
  if ( n2 != 2 ) /*0xffd0448f*/
  {
    n3_2 = n2 == 1; /*0xffd04499*/
LABEL_6:
    n3_1 = n3_2; /*0xffd044a0*/
    goto LABEL_7; /*0xffd044a0*/
  }
  n3_1 = 3; /*0xffd04491*/
LABEL_7:
  v18 = 0; /*0xffd044a4*/
  v19 = a6; /*0xffd044aa*/
  n6 = 0; /*0xffd044b4*/
  v20 = (int *)(a11 + 4); /*0xffd044bd*/
  v35 = (int *)(a11 + 4); /*0xffd044bf*/
  do /*0xffd0453f*/
  {
    if ( ((1 << v18) & v19) != 0 ) /*0xffd044cc*/
    {
      *(v20 - 1) ^= (a7 ^ *(v20 - 1)) & 0x3FFFF; /*0xffd044e3*/
      v20[1] ^= (a8 ^ v20[1]) & 0x3FFFF; /*0xffd044f3*/
      *v20 ^= (*v20 ^ (8 * a9)) & 0x1FFFF8; /*0xffd04505*/
      v20[2] ^= (v20[2] ^ (8 * a10)) & 0x1FFFF8; /*0xffd04513*/
      IioTailX_FFD093D8((int)__return_address, n4_1, n6, *(v20 - 1), *v20, v20[1], v20[2]); /*0xffd0451f*/
      v19 = a6; /*0xffd04524*/
    }
    v20 += 4; /*0xffd0452f*/
    n4_1 = n4; /*0xffd04532*/
    ++v18; /*0xffd04538*/
    ++n6; /*0xffd04539*/
  }
  while ( n6 < 6u ); /*0xffd0453f*/
  n4_2 = n4; /*0xffd04545*/
  v41 = (unsigned __int8)(n3_1 + 1); /*0xffd0454c*/
  v39 = v41; /*0xffd04550*/
  do
  {
    MailBoxFuncD466(v19, (int)__return_address, n4, v19, 4u); /*0xffd0455c*/
    LOBYTE(n4_5) = IioTailFunc5166(n4, __return_address, n4); /*0xffd04566*/
    n4_6 = n4_5; /*0xffd0456e*/
    n4_3 = n4_5; /*0xffd04572*/
    v23 = 0; /*0xffd04576*/
    n6_1 = 6; /*0xffd04578*/
    do
    {
      if ( ((1 << v23) & v19) != 0 )
      {
        LOBYTE(n4_5) = n4_6; /*0xffd045b2*/
        if ( *(_BYTE *)((n3 > 3u ? 0x204 : 0) + buf + 1032 * (v23 + 6 * (unsigned __int8)n4) + 1) == 1 )
        {
          n4_5 = n4_6 & ~(1 << v23); /*0xffd045bb*/
          n4_6 = n4_5; /*0xffd045be*/
          n4_3 = n4_5; /*0xffd045c2*/
        }
      }
      ++v23; /*0xffd045c6*/
      --n6_1; /*0xffd045c7*/
    }
    while ( n6_1 );
    if ( ((unsigned __int8)n4_5 & a6) != 0 ) /*0xffd045d4*/
      LOBYTE(n4_5) = IioTailFunc4A43(__return_address, buf, n4, a6, n3, a5, n4_3, a13, bufaa, a15); /*0xffd045f5*/
    --v39; /*0xffd045fd*/
  }
  while ( v39 );
  if ( *(_BYTE *)(buf + 24769) == 2 )
  {
    if ( a7 ) /*0xffd0461e*/
    {
      v40 = 0; /*0xffd0462b*/
      v24 = a8 - 1; /*0xffd04630*/
    }
    else
    {
      v40 = 1; /*0xffd04620*/
      v24 = a8 + 1; /*0xffd04628*/
    }
    v25 = (int *)(a11 + 4); /*0xffd04631*/
    n6_2 = 0; /*0xffd04635*/
    v27 = 0; /*0xffd04637*/
    n6_4 = 0; /*0xffd04639*/
    v38 = 0; /*0xffd0463d*/
    do /*0xffd046d3*/
    {
      if ( ((1 << v27) & v19) != 0 ) /*0xffd04648*/
      {
        *(v35 - 1) = v40 | *(v35 - 1) & 0xFFFC0000; /*0xffd04666*/
        v35[1] ^= (v24 ^ v35[1]) & 0x3FFFF; /*0xffd04672*/
        *v35 ^= (*v35 ^ (8 * a9 + 512)) & 0x1FFFF8; /*0xffd04689*/
        v35[2] ^= (v35[2] ^ (8 * a10 + 512)) & 0x1FFFF8; /*0xffd0469f*/
        IioTailX_FFD093D8((int)__return_address, n4, n6_4, *(v35 - 1), *v35, v35[1], v35[2]); /*0xffd046a6*/
        n6_2 = n6_4; /*0xffd046ab*/
        v27 = v38; /*0xffd046b2*/
        v19 = a6; /*0xffd046b6*/
        v25 = v35; /*0xffd046ba*/
      }
      ++n6_2; /*0xffd046be*/
      v25 += 4; /*0xffd046c0*/
      ++v27; /*0xffd046c3*/
      n6_4 = n6_2; /*0xffd046c4*/
      v38 = v27; /*0xffd046c8*/
      v35 = v25; /*0xffd046cc*/
    }
    while ( n6_2 < 6u ); /*0xffd046d3*/
    do
    {
      MailBoxFuncD466(v19, (int)__return_address, n4_2, v19, 4u); /*0xffd046e5*/
      LOBYTE(n4_2) = IioTailFunc5166(n4_2, __return_address, n4_2); /*0xffd046f7*/
      v28 = a6; /*0xffd046f9*/
      v29 = 0; /*0xffd046fd*/
      n4_4 = n4_2; /*0xffd046ff*/
      n6_3 = 6; /*0xffd04705*/
      do
      {
        if ( ((1 << v29) & v28) != 0 )
        {
          v28 = a6; /*0xffd04738*/
          if ( *(_BYTE *)((n3 > 3u ? 0x204 : 0) + buf + 1032 * (v29 + 6 * (unsigned __int8)n4) + 1) == 1 )
          {
            n4_2 = (unsigned __int8)n4_2 & ~(1 << v29); /*0xffd04741*/
            n4_4 = n4_2; /*0xffd04744*/
          }
        }
        ++v29; /*0xffd04748*/
        --n6_3; /*0xffd04749*/
      }
      while ( n6_3 );
      LOBYTE(n4_5) = a6; /*0xffd0474e*/
      v31 = ((unsigned __int8)n4_2 & a6) == 0; /*0xffd04752*/
      n4_2 = n4; /*0xffd04754*/
      if ( !v31 ) /*0xffd04758*/
        LOBYTE(n4_5) = IioTailFunc4A43(__return_address, buf, n4, a6, n3, a5, n4_4, a13, bufaa, a15); /*0xffd04779*/
      v31 = v41-- == 1; /*0xffd04781*/
      v19 = a6; /*0xffd04786*/
    }
    while ( !v31 );
  }
  return n4_5; /*0xffd04790*/
}

// Function: IioTailFunc4798 @ 0xffd04798 (0x65 bytes)
// Index: 2219/2560

char __cdecl IioTailFunc4798(unsigned __int8 *__return_address, unsigned __int8 n4, int n6, int buf)
{
  unsigned int v4; // edx
  int n64; // esi
  char v6; // al
  char v8[2048]; // [esp+4h] [ebp-800h] BYREF

  v4 = 0; /*0xffd047a1*/
  n64 = 64; /*0xffd047a6*/
  do /*0xffd047db*/
  {
    v8[v4 + 128] = 0; /*0xffd047a9*/
    v8[v4 + 192] = -1; /*0xffd047bc*/
    v6 = *(_BYTE *)(buf + (v4 >> 3) + 8 * (v4 & 7)); /*0xffd047c4*/
    v8[v4] = v6; /*0xffd047c7*/
    v8[v4++ + 64] = ~v6; /*0xffd047d0*/
    --n64; /*0xffd047d8*/
  }
  while ( n64 ); /*0xffd047db*/
  return RmtFunc71F8(__return_address, n4, n6, v8, 4, 0); /*0xffd047f8*/
}

// Function: IioTailFunc47FD @ 0xffd047fd (0x9b bytes)
// Index: 2220/2560

int __cdecl IioTailFunc47FD(
        unsigned __int8 *__return_address,
        int n4,
        unsigned __int8 a3,
        char a4,
        unsigned int *a5,
        char a6)
{
  int n6_1; // edx
  int v8; // esi
  char v9; // bl
  int result; // eax
  unsigned __int8 n6; // [esp+10h] [ebp-Ch]
  int n6_2; // [esp+14h] [ebp-8h]

  IioTailX_FFD088C5(__return_address, n4, a3, a4); /*0xffd04815*/
  n6_1 = 0; /*0xffd04821*/
  v8 = a3; /*0xffd04823*/
  n6_2 = 0; /*0xffd04826*/
  v9 = 0; /*0xffd0482a*/
  n6 = 0; /*0xffd0482c*/
  do /*0xffd0488e*/
  {
    result = 1 << v9; /*0xffd04839*/
    if ( ((1 << v9) & v8) != 0 ) /*0xffd0483d*/
    {
      IioTailFunc660((int)__return_address, n4, n6, a6, a6); /*0xffd04853*/
      result = IioTailFunc49BF((int)__return_address, n4, n6, *a5, a5[1]); /*0xffd0486d*/
      n6_1 = n6_2; /*0xffd04872*/
      v8 = a3; /*0xffd04879*/
    }
    LOBYTE(n6_1) = n6_1 + 1; /*0xffd0487d*/
    a5 = (unsigned int *)((char *)a5 + 9); /*0xffd0487f*/
    ++v9; /*0xffd04882*/
    n6_2 = n6_1; /*0xffd04883*/
    n6 = n6_1; /*0xffd04887*/
  }
  while ( (unsigned __int8)n6_1 < 6u ); /*0xffd0488e*/
  return result; /*0xffd04890*/
}

// Function: IioTailFunc4898 @ 0xffd04898 (0x127 bytes)
// Index: 2221/2560

int __cdecl IioTailFunc4898(
        unsigned __int8 *__return_address,
        int n6a,
        unsigned __int8 n2,
        char n16,
        _BYTE *a5,
        int n0xA)
{
  _BYTE buf[31788]; // [esp+10h] [ebp-7C2Ch] BYREF

  memset_save_flags(buf, 0, 0x7C2Cu); /*0xffd048ae*/
  DebugPrint(
    (int)__return_address,
    3,
    n6a,
    255,
    255,
    255,
    255,
    255,
    "Start STEP Test and Repair. (STEP Version: 3.03)\n");
  buf[24768] = 1; /*0xffd048dd*/
  IioTailX_FFD057A0(buf, n6a); /*0xffd048e7*/
  buf[24775] = 0; /*0xffd048f1*/
  IioTailX_FFD05A3E(__return_address, buf, n6a); /*0xffd048fb*/
  if ( n0xA == 1 ) /*0xffd04910*/
  {
    IioTailFunc603A(__return_address, n6a); /*0xffd04914*/
    KtiFunc4541((int)__return_address, 0xB9u, 1u, 0); /*0xffd0491f*/
    IioTailFunc4EEF(__return_address, buf, n6a, n2); /*0xffd04934*/
    IioTailFunc603A(__return_address, n6a); /*0xffd0493b*/
  }
  KtiFunc4541((int)__return_address, 0xB9u, 2u, 0); /*0xffd04949*/
  IioTailX_FFD08FF6(__return_address, buf, n6a, n2); /*0xffd0495e*/
  IioTailFunc603A(__return_address, n6a); /*0xffd04965*/
  KtiFunc4541((int)__return_address, 0xB9u, 3u, 0); /*0xffd04970*/
  IioTailX_FFD08B69(__return_address, buf, n6a, n2); /*0xffd0497d*/
  IioTailFunc603A(__return_address, n6a); /*0xffd04987*/
  KtiFunc4541((int)__return_address, 0xB9u, 4u, 0); /*0xffd04992*/
  AutoGenFunc5973(__return_address, n6a, n2, n16, 2u, a5); /*0xffd049aa*/
  return 0; /*0xffd049b4*/
}

// Function: IioTailFunc49BF @ 0xffd049bf (0x6e bytes)
// Index: 2222/2560

int __cdecl IioTailFunc49BF(int __return_address, unsigned __int8 n4, unsigned __int8 n6, unsigned int a4, int a5)
{
  MailBoxFunc902D( /*0xffd049fa*/
    __return_address,
    n4,
    n6,
    117459836,
    8,
    HIBYTE(a4) | ((a5 & 0x1F | (((unsigned __int8)a4 | (((a4 >> 8) & 0x1F) << 12)) << 6)) << 8));
  return MailBoxFunc902D(__return_address, n4, n6, 117459840, 8, BYTE2(a5) & 0xF | (16 * (HIBYTE(a5) & 0x1F))); /*0xffd04a2b*/
}

// Function: IioTailFunc4A2D @ 0xffd04a2d (0x16 bytes)
// Index: 2223/2560

int __cdecl IioTailFunc4A2D(unsigned __int8 *n6, unsigned __int8 n4)
{
  return DdrTrainFunc70B9(n6, n4, 0xFFu); /*0xffd04a42*/
}

// Function: IioTailFunc4A43 @ 0xffd04a43 (0x4ac bytes)
// Index: 2224/2560

char __cdecl IioTailFunc4A43(
        unsigned __int8 *__return_address,
        int buf,
        int bufa,
        char a4,
        unsigned __int8 n3,
        char a6,
        unsigned __int8 n4,
        int a8,
        int bufaa,
        int a10)
{
  unsigned __int8 n6_1; // dl
  int v11; // ebp
  int v12; // edi
  int v13; // eax
  char n6_2; // si
  unsigned int v15; // eax
  unsigned __int8 n2_1; // dl
  char bufa_1; // cl
  unsigned __int8 *v18; // edi
  int v19; // ebp
  unsigned __int8 n0xF; // al
  char v21; // cl
  int v22; // esi
  int n15; // edx
  unsigned int v24; // edx
  unsigned __int8 v25; // cl
  int v26; // esi
  int v27; // edi
  char v28; // al
  unsigned __int8 n0x55_1; // al
  unsigned __int8 n0xF_1; // [esp+12h] [ebp-5Eh]
  char v32; // [esp+13h] [ebp-5Dh]
  int v33; // [esp+14h] [ebp-5Ch]
  int n2; // [esp+18h] [ebp-58h]
  int n6; // [esp+1Ch] [ebp-54h]
  unsigned int v36; // [esp+20h] [ebp-50h]
  unsigned int v37; // [esp+24h] [ebp-4Ch]
  int v38; // [esp+28h] [ebp-48h]
  int v39; // [esp+28h] [ebp-48h]
  unsigned __int8 *v40; // [esp+2Ch] [ebp-44h]
  char v41; // [esp+30h] [ebp-40h]
  unsigned __int8 n0x55; // [esp+34h] [ebp-3Ch]
  int n99; // [esp+38h] [ebp-38h]
  unsigned __int8 v44; // [esp+3Ch] [ebp-34h]
  char v45; // [esp+40h] [ebp-30h]
  int v46; // [esp+44h] [ebp-2Ch]
  int v47; // [esp+48h] [ebp-28h]
  int v48; // [esp+4Ch] [ebp-24h]
  int v49; // [esp+50h] [ebp-20h]
  int v50; // [esp+54h] [ebp-1Ch]
  int v51; // [esp+58h] [ebp-18h]
  unsigned __int8 v52; // [esp+5Ch] [ebp-14h]
  int n63; // [esp+60h] [ebp-10h]
  int v54; // [esp+64h] [ebp-Ch]
  char v55[8]; // [esp+68h] [ebp-8h] BYREF

  n6_1 = 0; /*0xffd04a4b*/
  v11 = 0; /*0xffd04a4f*/
  n99 = 99; /*0xffd04a51*/
  v12 = 0; /*0xffd04a5a*/
  n0x55 = 0; /*0xffd04a5c*/
  LOBYTE(n6) = 0; /*0xffd04a61*/
  v50 = 0; /*0xffd04a65*/
  v51 = 0; /*0xffd04a69*/
  do
  {
    LOBYTE(v13) = n4 >> n6_1; /*0xffd04a76*/
    if ( ((n4 >> n6_1) & 1) != 0 )
    {
      v13 = 1 << v11; /*0xffd04a85*/
      n63 = 1 << v11; /*0xffd04a87*/
      if ( ((unsigned __int8)(1 << v11) & (unsigned __int8)a4) != 0 )
      {
        n6_2 = n6; /*0xffd04a98*/
        v47 = MiscConfigCheck(__return_address, bufa, n6, 184567128); /*0xffd04ab5*/
        v46 = MiscConfigCheck(__return_address, bufa, n6, 184567136); /*0xffd04ac6*/
        v49 = MiscConfigCheck(__return_address, bufa, n6, 184567132); /*0xffd04ad7*/
        v48 = MiscConfigCheck(__return_address, bufa, n6, 184567140); /*0xffd04ae6*/
        v38 = (unsigned __int8)MiscConfigCheck(__return_address, bufa, n6, 184567312); /*0xffd04b02*/
        v39 = (unsigned __int8)((unsigned __int16)MiscConfigCheck(__return_address, bufa, n6, 184567312) >> 8) | v38; /*0xffd04b17*/
        v36 = MiscConfigCheck(__return_address, bufa, n6, 184567152) & 0x3FFFF; /*0xffd04b2f*/
        v15 = MiscConfigCheck(__return_address, bufa, n6, 184567156); /*0xffd04b33*/
        n2_1 = 0; /*0xffd04b3a*/
        LOBYTE(n2) = 0; /*0xffd04b42*/
        v37 = v15 & 0x3FC; /*0xffd04b46*/
        v45 = (v15 >> 26) & 3 | (4 * (HIBYTE(v15) & 3)); /*0xffd04b5f*/
        v41 = v45; /*0xffd04b63*/
        bufa_1 = bufa; /*0xffd04b67*/
        v13 = v12 + 48704 * (unsigned __int8)bufa; /*0xffd04b72*/
        v18 = &__return_address[v13 + 259118]; /*0xffd04b7a*/
        v19 = 0; /*0xffd04b7c*/
        v40 = v18; /*0xffd04b7e*/
        while ( 1 ) /*0xffd04b82*/
        {
          if ( v18[v19] ) /*0xffd04b82*/
          {
            LOBYTE(v33) = 0; /*0xffd04b91*/
            if ( v18[v19 + 19] ) /*0xffd04b8c*/
              break; /*0xffd04b8c*/
          }
LABEL_43:
          ++n2_1; /*0xffd04ea8*/
          v19 += 1379; /*0xffd04eaa*/
          LOBYTE(n2) = n2_1; /*0xffd04eb0*/
          if ( n2_1 >= 2u ) /*0xffd04eb7*/
          {
            n6_1 = n6; /*0xffd04ebd*/
            v11 = v50; /*0xffd04ec1*/
            v12 = v51; /*0xffd04ec5*/
            goto LABEL_45; /*0xffd04ec5*/
          }
        }
        while ( KtiFunc89E9((int)__return_address, bufa_1, n6_2, n2, v33, 1) /*0xffd04bd9*/
             || n3 != KtiFunc88D1((int)__return_address, bufa, n6_2, n2, v33) )
        {
LABEL_41:
          bufa_1 = bufa; /*0xffd04e8c*/
          LOBYTE(v13) = v33 + 1; /*0xffd04e94*/
          LOBYTE(v33) = v13; /*0xffd04e96*/
          if ( (unsigned __int8)v13 >= v18[v19 + 19] ) /*0xffd04e9e*/
          {
            n2_1 = n2; /*0xffd04ea4*/
            goto LABEL_43; /*0xffd04ea4*/
          }
        }
        if ( (v33 & 1) != 0 && v18[v19 + 37] ) /*0xffd04be6*/
        {
          v36 = IioTailX_FFD059F0((int)__return_address, v36); /*0xffd04bfb*/
          v37 = IioTailX_FFD059F0((int)__return_address, v37) & 0x3FF; /*0xffd04c0f*/
          v45 = KtiFuncEAE2((int)__return_address, v41); /*0xffd04c1b*/
          v41 = v45; /*0xffd04c1f*/
        }
        v32 = (v18[v19 + 104] == 0) + 1; /*0xffd04c3a*/
        n0xF = 0; /*0xffd04c3e*/
        v52 = 4 * (v18[v19 + 104] == 0) + 4; /*0xffd04c40*/
        v21 = v32; /*0xffd04c44*/
        n0xF_1 = 0; /*0xffd04c48*/
        while ( n0xF > 7u ) /*0xffd04c4e*/
        {
          if ( n0xF <= 0xFu ) /*0xffd04c5c*/
          {
            v22 = v49 | v48; /*0xffd04c62*/
            goto LABEL_19; /*0xffd04c66*/
          }
          if ( __return_address[257312] ) /*0xffd04c68*/
          {
            v22 = v39; /*0xffd04c75*/
            goto LABEL_19; /*0xffd04c75*/
          }
LABEL_39:
          n0xF += v21; /*0xffd04e7a*/
          n0xF_1 = n0xF; /*0xffd04e7c*/
          if ( n0xF >= 0x12u ) /*0xffd04e82*/
          {
            n6_2 = n6; /*0xffd04e88*/
            goto LABEL_41; /*0xffd04e88*/
          }
        }
        v22 = v47 | v46; /*0xffd04c54*/
LABEL_19:
        if ( v18[v19 + 104] ) /*0xffd04c79*/
          n15 = 15; /*0xffd04c87*/
        else
          n15 = 255; /*0xffd04c8a*/
        v24 = (v22 & (unsigned int)(n15 << (4 * (n0xF & 7)))) >> (4 * (n0xF & 7)); /*0xffd04c9b*/
        if ( v24 )
        {
          v25 = 0; /*0xffd04ca5*/
          while ( ((1 << v25) & v24) == 0 ) /*0xffd04cae*/
          {
            if ( ++v25 >= v52 ) /*0xffd04cb6*/
              goto LABEL_28; /*0xffd04cb6*/
          }
          n99 = v25 + 4 * n0xF; /*0xffd04cc0*/
LABEL_28:
          if ( (unsigned __int8)(n0xF_1 - 8) > 7u || __return_address[257313] || *(_BYTE *)(buf + 24775) ) /*0xffd04cdb*/
          {
            v26 = v36; /*0xffd04d0d*/
            v27 = v37; /*0xffd04d11*/
            v28 = v45; /*0xffd04d15*/
          }
          else
          {
            v26 = (v36 ^ 0x2BF8) & 0x3FFFF; /*0xffd04cf9*/
            v27 = ((unsigned __int16)v37 ^ 0xFFF8) & 0x3FF; /*0xffd04cff*/
            v28 = KtiFuncCA63(v41); /*0xffd04d05*/
          }
          v44 = v28; /*0xffd04d20*/
          if ( __return_address[257313] ) /*0xffd04d19*/
          {
            n0x55_1 = n0x55; /*0xffd04d44*/
          }
          else
          {
            n0x55_1 = IioTailX_FFD055A1(__return_address, bufa, n6, n2); /*0xffd04d36*/
            n0x55 = n0x55_1; /*0xffd04d3e*/
          }
          DebugPrint(
            (int)__return_address,
            3,
            bufa,
            n6,
            n2,
            v33,
            255,
            255,
            "Fail SubRank: %d, BA: 0x%02X, ROW: 0x%05X, COL: 0x%04X, DQ: %d (DqMask[71:00]: 0x%02X_%08X_%08X), TestPatter"
            "n: %d, Temp.:%d'C\n",
            (unsigned __int8)a6,
            v44,
            v26,
            v27,
            n99,
            v39,
            v49 | v48,
            v47 | v46,
            *(unsigned __int8 *)(buf + 24769),
            n0x55_1);
          if ( IioTailX_FFD0926D( /*0xffd04df6*/
                 __return_address,
                 buf,
                 bufa,
                 n6,
                 n2,
                 v33,
                 a6,
                 v26,
                 v27,
                 v44,
                 n99,
                 v40[v19 + 104],
                 n0x55) )
          {
            LOBYTE(v54) = AutoGenFunc4E2C((int)__return_address, bufa, n63, 2u); /*0xffd04e1a*/
            MemAdvTestFailureCheck(__return_address, bufa, n63, bufaa, a10, n3, a8 + 6 * n3, v54, 0x11u, v55, 1); /*0xffd04e66*/
          }
        }
        n0xF = n0xF_1; /*0xffd04e6e*/
        v18 = v40; /*0xffd04e72*/
        v21 = v32; /*0xffd04e76*/
        goto LABEL_39; /*0xffd04e76*/
      }
    }
LABEL_45:
    ++n6_1; /*0xffd04ec9*/
    v12 += 7688; /*0xffd04ecb*/
    ++v11; /*0xffd04ed1*/
    LOBYTE(n6) = n6_1; /*0xffd04ed2*/
    v50 = v11; /*0xffd04ed6*/
    v51 = v12; /*0xffd04eda*/
  }
  while ( n6_1 < 6u );
  return v13; /*0xffd04ee7*/
}

// Function: IioTailFunc4EEF @ 0xffd04eef (0x264 bytes)
// Index: 2225/2560

int __cdecl IioTailFunc4EEF(unsigned __int8 *__return_address, _BYTE *buf, int n4, char n2)
{
  unsigned __int8 n6_1; // cl
  unsigned __int8 *v5; // esi
  unsigned __int8 *v6; // edx
  unsigned __int8 v7; // al
  int v8; // eax
  int v9; // ebp
  int v10; // eax
  int v11; // eax
  int v12; // esi
  int v13; // eax
  int n6; // [esp+10h] [ebp-50h]
  int n2_1; // [esp+14h] [ebp-4Ch]
  unsigned __int8 *v17; // [esp+18h] [ebp-48h]
  __int64 v18; // [esp+20h] [ebp-40h] BYREF
  _QWORD v19[7]; // [esp+28h] [ebp-38h] BYREF

  v19[0] = 0; /*0xffd04f06*/
  v18 = 0; /*0xffd04f0e*/
  *((_DWORD *)buf + 6194) = 100; /*0xffd04f1d*/
  buf[24774] = 1; /*0xffd04f31*/
  buf[24769] = 1; /*0xffd04f38*/
  DebugPrint((int)__return_address, 2, n4, 255, 255, 255, 255, 255, "Test Pattern1 Parameter = %d\n", 100); /*0xffd04f3f*/
  IioTailFunc840E(__return_address, buf, n4, 1); /*0xffd04f5a*/
  if ( !__return_address[257313] ) /*0xffd04f62*/
  {
    buf[24775] = 1; /*0xffd04f7f*/
    n6_1 = 0; /*0xffd04f86*/
    v5 = &__return_address[48704 * (unsigned __int8)n4 + 258725]; /*0xffd04f88*/
    v6 = &__return_address[48704 * (unsigned __int8)n4 + 259118]; /*0xffd04f8a*/
    LOBYTE(n6) = 0; /*0xffd04f8c*/
    v17 = v6; /*0xffd04f90*/
    do /*0xffd05009*/
    {
      if ( *(v5 - 3) ) /*0xffd04f94*/
      {
        v7 = 0; /*0xffd04f9a*/
        LOBYTE(n2_1) = 0; /*0xffd04f9c*/
        if ( *v5 ) /*0xffd04fa0*/
        {
          do /*0xffd04fea*/
          {
            v8 = 1379 * v7; /*0xffd04fa7*/
            if ( v6[v8] && *(_WORD *)&v6[v8 + 142] == 0xCE00 ) /*0xffd04fc0*/
            {
              RmtFunc765(__return_address, n4, n6, n2_1, 0, 1u, 0); /*0xffd04fd2*/
              v6 = v17; /*0xffd04fd7*/
            }
            v7 = n2_1 + 1; /*0xffd04fe2*/
            LOBYTE(n2_1) = v7; /*0xffd04fe4*/
          }
          while ( v7 < *v5 ); /*0xffd04fea*/
          n6_1 = n6; /*0xffd04fec*/
        }
      }
      ++n6_1; /*0xffd04ff0*/
      v6 += 7688; /*0xffd04ff2*/
      v5 += 7688; /*0xffd04ff8*/
      LOBYTE(n6) = n6_1; /*0xffd04ffe*/
      v17 = v6; /*0xffd05002*/
    }
    while ( n6_1 < 6u ); /*0xffd05009*/
  }
  DdrTrainFunc15A1(__return_address, n4, 0xFFu); /*0xffd05012*/
  KtiFuncF4E(v19); /*0xffd0501c*/
  LOBYTE(n6) = 0; /*0xffd05024*/
  v9 = 0; /*0xffd0502e*/
  do /*0xffd05090*/
  {
    v10 = MiscConfigCheck(__return_address, n4, n6, 184566948); /*0xffd0503e*/
    *(_DWORD *)((char *)&v19[1] + v9) = v10; /*0xffd05043*/
    MiscIoCheck(__return_address, n4, n6, 0xB0044A4u, v10 & 0x7FFFFFFF); /*0xffd05055*/
    v11 = MiscConfigCheck(__return_address, n4, n6, 184567556); /*0xffd05062*/
    *(_DWORD *)((char *)&v19[4] + v9) = v11; /*0xffd05067*/
    MiscIoCheck(__return_address, n4, n6, 0xB004704u, v11 & 0xFDFFFFFF); /*0xffd05079*/
    v9 += 4; /*0xffd05082*/
    LOBYTE(n6) = n6 + 1; /*0xffd0508a*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd05090*/
  if ( !IioTailFunc5E6C(__return_address, buf, n4) ) /*0xffd05099*/
    IioTailFunc6252(__return_address, buf, n4, n2); /*0xffd050ac*/
  LOBYTE(n6) = 0; /*0xffd050b4*/
  v12 = 0; /*0xffd050b9*/
  do /*0xffd050f5*/
  {
    MiscIoCheck(__return_address, n4, n6, 0xB0044A4u, *(_DWORD *)((char *)&v19[1] + v12)); /*0xffd050ca*/
    MiscIoCheck(__return_address, n4, n6, 0xB004704u, *(_DWORD *)((char *)&v19[4] + v12)); /*0xffd050de*/
    v12 += 4; /*0xffd050e7*/
    LOBYTE(n6) = n6 + 1; /*0xffd050ef*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd050f5*/
  KtiFuncF4E(&v18); /*0xffd050fc*/
  v13 = KtiFuncF75((int)__return_address, v19[0], SHIDWORD(v19[0]), v18, SHIDWORD(v18), 1u); /*0xffd05114*/
  DebugPrint(
    (int)__return_address,
    3,
    255,
    255,
    255,
    255,
    255,
    255,
    "\nN%d: STEP Pattern1 Finished. Total Test Time : %ds\n",
    (unsigned __int8)n4,
    v13);
  if ( !__return_address[257313] ) /*0xffd05139*/
    buf[24775] = 0; /*0xffd05142*/
  return 0; /*0xffd05149*/
}

// Function: IioTailFunc5153 @ 0xffd05153 (0x13 bytes)
// Index: 2226/2560

int __cdecl IioTailFunc5153(unsigned __int8 *n6, unsigned __int8 n4)
{
  return DdrTrainFunc70B9(n6, n4, 0); /*0xffd05165*/
}

// Function: IioTailFunc5166 @ 0xffd05166 (0xa0 bytes)
// Index: 2227/2560

char __usercall IioTailFunc5166@<al>(int n4@<ebx>, _BYTE *__return_address, int n4a)
{
  char v3; // al
  unsigned int v4; // eax
  int v5; // ebx
  char v6; // al
  char v7; // al
  int v9; // [esp-4h] [ebp-10h]
  int v10; // [esp-4h] [ebp-10h]

  v9 = DdrTrainFunc1DF(__return_address, n4a, 0, 0x7004B04u); /*0xffd05182*/
  v3 = DdrTrainFunc45AB((int)__return_address, n4a, 0); /*0xffd05187*/
  v4 = MailBoxFunc8E0B(n4, (int)__return_address, n4a, v3, v9); /*0xffd05195*/
  v5 = v4 >> 2; /*0xffd0519e*/
  LOBYTE(v5) = v4 & 1 | (2 * (((v4 & 2) != 0) | (2 * ((v4 & 4) != 0)))); /*0xffd051ba*/
  v10 = DdrTrainFunc1DF(__return_address, n4a, 0, 0x7004B04u); /*0xffd051c4*/
  v6 = DdrTrainFunc45AB((int)__return_address, n4a, 3u); /*0xffd051c9*/
  v7 = MailBoxFunc8E0B(v5, (int)__return_address, n4a, v6, v10); /*0xffd051d7*/
  return v5 | (8 * (v7 & 1 | (2 * (((v7 & 2) != 0) | (2 * ((v7 & 4) != 0)))))); /*0xffd051fb*/
}

// Function: IioTailFunc5206 @ 0xffd05206 (0x39b bytes)
// Index: 2228/2560

int __cdecl IioTailFunc5206(_BYTE *n6, int buf, int n4, unsigned __int8 n3, int a5, _WORD *a6, unsigned __int8 a7)
{
  int v7; // edx
  unsigned __int8 n6_1; // bl
  int v10; // ebp
  int n0xFFFF; // eax
  unsigned __int16 v12; // di
  signed int n1500; // eax
  int n0xDAC; // ecx
  int n11_1; // eax
  int n11; // [esp-4h] [ebp-9Ch]
  int v17; // [esp+10h] [ebp-88h]
  unsigned __int8 v18[4]; // [esp+14h] [ebp-84h] BYREF
  int v19; // [esp+18h] [ebp-80h]
  int n5; // [esp+1Ch] [ebp-7Ch] BYREF
  int v21; // [esp+20h] [ebp-78h]
  int v22; // [esp+24h] [ebp-74h]
  _DWORD v23[14]; // [esp+28h] [ebp-70h] BYREF
  _DWORD v24[14]; // [esp+60h] [ebp-38h] BYREF

  v7 = a7; /*0xffd0520c*/
  n6_1 = 0; /*0xffd0521e*/
  v10 = 0; /*0xffd05229*/
  LOWORD(n5) = 4; /*0xffd0522f*/
  v23[0] = 290; /*0xffd0523d*/
  v23[1] = 172; /*0xffd05248*/
  v23[2] = 110; /*0xffd05250*/
  v23[3] = 74; /*0xffd05258*/
  v23[4] = 52; /*0xffd05260*/
  v23[5] = 36; /*0xffd05268*/
  v23[6] = 28; /*0xffd05270*/
  v23[7] = 20; /*0xffd05278*/
  v23[8] = 18; /*0xffd05280*/
  v23[9] = 12; /*0xffd05288*/
  v23[10] = 10; /*0xffd05290*/
  memset(&v23[11], 0, 12); /*0xffd05298*/
  v24[0] = 12810; /*0xffd052a4*/
  v24[1] = 8680; /*0xffd052ac*/
  v24[2] = 6200; /*0xffd052b4*/
  v24[3] = 4580; /*0xffd052bc*/
  v24[4] = 3480; /*0xffd052c4*/
  v24[5] = 2600; /*0xffd052cc*/
  v24[6] = 2120; /*0xffd052d4*/
  v24[7] = 1600; /*0xffd052dc*/
  v24[8] = 1460; /*0xffd052e4*/
  v24[9] = 1010; /*0xffd052ef*/
  v24[10] = 850; /*0xffd052fa*/
  memset(&v24[11], 0, 12); /*0xffd05305*/
  LOWORD(v21) = v21 & 0xF0F | 0x30; /*0xffd0531a*/
  LOBYTE(v17) = 0; /*0xffd0531f*/
  v22 = a7; /*0xffd05323*/
  do /*0xffd05590*/
  {
    if ( ((1 << v10) & v7) == 0 ) /*0xffd05330*/
    {
      n0xFFFF = 0xFFFF; /*0xffd05332*/
      *a6 = -1; /*0xffd05337*/
      goto LABEL_35; /*0xffd0533a*/
    }
    v19 = 6 * n3; /*0xffd05351*/
    DdrTrainFunc466A((int)n6, n4, v17, *(_BYTE *)(v10 + v19 + a5), (int)&n5); /*0xffd0536e*/
    DdrTrainFunc4A71(n6, n4, n5, v21, 5, v18); /*0xffd0539e*/
    v12 = 25 * ((*(_WORD *)v18 >> 2) & 0x3FF); /*0xffd053bb*/
    if ( (*(_WORD *)v18 & 0x1000) == 0 ) /*0xffd053ca*/
    {
      DebugPrint( /*0xffd05449*/
        (int)n6,
        2,
        n4,
        v17,
        *(unsigned __int8 *)(v10 + v19 + a5),
        255,
        255,
        255,
        "[TSOD] MTS_TEMP = %d.%d'C\n",
        v12 / 0x64u,
        v12 % 0x64u);
      n0xDAC = (unsigned __int16)(v12 + 500); /*0xffd05457*/
      if ( (unsigned __int16)n0xDAC < 0xDACu ) /*0xffd05462*/
      {
        n11_1 = 0; /*0xffd05464*/
        goto LABEL_32; /*0xffd05466*/
      }
      if ( (unsigned __int16)n0xDAC < 0xFA0u ) /*0xffd05473*/
      {
        n11_1 = 1; /*0xffd05477*/
        goto LABEL_32; /*0xffd05478*/
      }
      if ( (unsigned __int16)n0xDAC >= 0x1194u ) /*0xffd05485*/
      {
        if ( (unsigned __int16)n0xDAC >= 0x1388u ) /*0xffd05493*/
        {
          if ( (unsigned __int16)n0xDAC >= 0x157Cu ) /*0xffd054a1*/
          {
            if ( (unsigned __int16)n0xDAC >= 0x1770u ) /*0xffd054af*/
            {
              if ( (unsigned __int16)n0xDAC >= 0x1964u ) /*0xffd054bd*/
              {
                if ( (unsigned __int16)n0xDAC >= 0x1B58u ) /*0xffd054cb*/
                {
                  if ( (unsigned __int16)n0xDAC >= 0x1D4Cu ) /*0xffd054d9*/
                  {
                    if ( (unsigned __int16)n0xDAC >= 0x1F40u ) /*0xffd054e7*/
                    {
                      if ( (unsigned __int16)n0xDAC >= 0x2134u ) /*0xffd054f5*/
                      {
                        if ( (unsigned __int16)n0xDAC >= 0x2328u ) /*0xffd05503*/
                        {
                          n11_1 = 13 - ((unsigned __int16)n0xDAC < 0x251Cu); /*0xffd05514*/
LABEL_32:
                          n1500 = (100 * v24[n11_1] - v23[n11_1] * n0xDAC) / 0x64u; /*0xffd05517*/
                          if ( n1500 >= 1500 ) /*0xffd05531*/
                            LOWORD(n1500) = 1500; /*0xffd05533*/
                          goto LABEL_34; /*0xffd05533*/
                        }
                        n11 = 11; /*0xffd05505*/
                      }
                      else
                      {
                        n11 = 10; /*0xffd054f7*/
                      }
                    }
                    else
                    {
                      n11 = 9; /*0xffd054e9*/
                    }
                  }
                  else
                  {
                    n11 = 8; /*0xffd054db*/
                  }
                }
                else
                {
                  n11 = 7; /*0xffd054cd*/
                }
              }
              else
              {
                n11 = 6; /*0xffd054bf*/
              }
            }
            else
            {
              n11 = 5; /*0xffd054b1*/
            }
          }
          else
          {
            n11 = 4; /*0xffd054a3*/
          }
        }
        else
        {
          n11 = 3; /*0xffd05495*/
        }
      }
      else
      {
        n11 = 2; /*0xffd05487*/
      }
      n11_1 = n11; /*0xffd05507*/
      goto LABEL_32; /*0xffd05508*/
    }
    DebugPrint( /*0xffd05403*/
      (int)n6,
      2,
      n4,
      v17,
      *(unsigned __int8 *)(v10 + v19 + a5),
      255,
      255,
      255,
      "[TSOD] MTS_TEMP = -%d.%d'C\n",
      v12 / 0x64u,
      v12 % 0x64u);
    LOWORD(n1500) = 0; /*0xffd0540b*/
LABEL_34:
    *a6 = n1500; /*0xffd0553a*/
    n0xFFFF = DebugPrint( /*0xffd05577*/
                (int)n6,
                2,
                n4,
                v17,
                *(unsigned __int8 *)(v10 + v19 + a5),
                255,
                255,
                255,
                "New Parameter = %d.%d\n",
                (unsigned __int16)n1500 / 0xAu,
                (unsigned __int16)n1500 % 0xAu);
    v7 = v22; /*0xffd0557c*/
LABEL_35:
    ++n6_1; /*0xffd05583*/
    ++a6; /*0xffd05585*/
    ++v10; /*0xffd05588*/
    LOBYTE(v17) = n6_1; /*0xffd05589*/
  }
  while ( n6_1 < 6u ); /*0xffd05590*/
  return n0xFFFF; /*0xffd05596*/
}

// Function: IioTailX_FFD055A1 @ 0xffd055a1 (0x76 bytes)
// Index: 2229/2560

unsigned int __cdecl IioTailX_FFD055A1(unsigned __int8 *__return_address, int buf, int n6, char n2)
{
  int n5; // [esp+0h] [ebp-Ch] BYREF
  int v6; // [esp+4h] [ebp-8h]
  unsigned __int8 v7[4]; // [esp+8h] [ebp-4h] BYREF

  LOWORD(n5) = 4; /*0xffd055aa*/
  LOWORD(v6) = v6 & 0xF0F | 0x30; /*0xffd055b9*/
  DdrTrainFunc466A((int)__return_address, buf, n6, n2, (int)&n5); /*0xffd055cd*/
  DdrTrainFunc4A71(__return_address, buf, n5, v6, 5, v7); /*0xffd055f2*/
  return (unsigned __int16)(25 * ((*(_WORD *)v7 >> 2) & 0x3FF)) / 0x64u; /*0xffd05613*/
}

// Function: IioTailX_FFD05617 @ 0xffd05617 (0x189 bytes)
// Index: 2230/2560

void __cdecl IioTailX_FFD05617(
        int __return_address,
        _BYTE *buf,
        int n4,
        unsigned __int8 n3,
        _BYTE *a5,
        _BYTE *a6,
        unsigned __int8 a7,
        unsigned __int8 a8)
{
  _BYTE *__return_address_1; // edi
  int n4_1; // ebp
  _BYTE *v10; // edx
  unsigned __int8 n6; // bl
  int v12; // esi
  unsigned int v13; // eax
  int v14; // [esp+10h] [ebp-18h]
  int v15; // [esp+14h] [ebp-14h]
  signed int n85; // [esp+18h] [ebp-10h]
  int v17; // [esp+1Ch] [ebp-Ch]
  int n5; // [esp+20h] [ebp-8h] BYREF
  int v19; // [esp+24h] [ebp-4h]

  __return_address_1 = (_BYTE *)__return_address; /*0xffd0561e*/
  if ( !*(_BYTE *)(__return_address + 257313) ) /*0xffd05622*/
  {
    n4_1 = n4; /*0xffd0562f*/
    v10 = a5; /*0xffd05633*/
    LOWORD(n5) = 4; /*0xffd0563a*/
    n6 = 0; /*0xffd0564b*/
    LOWORD(v19) = v19 & 0xF0F | 0x30; /*0xffd0564d*/
    v12 = 0; /*0xffd05652*/
    LOBYTE(v14) = 0; /*0xffd05659*/
    v17 = a8; /*0xffd0565d*/
    do /*0xffd05792*/
    {
      if ( ((1 << v12) & v17) != 0 ) /*0xffd0566c*/
      {
        v15 = 6 * n3; /*0xffd0567f*/
        DdrTrainFunc466A((int)__return_address_1, n4_1, v14, v10[v12 + v15], (int)&n5); /*0xffd05690*/
        DdrTrainFunc4A71(__return_address_1, n4_1, n5, v19, 5, (unsigned __int8 *)&__return_address); /*0xffd056b4*/
        v13 = (unsigned __int16)(25 * (((unsigned __int16)__return_address >> 2) & 0x3FF)); /*0xffd056dc*/
        n85 = v13 / 0x64; /*0xffd056f0*/
        if ( (__return_address & 0x1000) != 0 ) /*0xffd056de*/
          DebugPrint( /*0xffd0570b*/
            (int)__return_address_1,
            2,
            n4_1,
            v14,
            (unsigned __int8)a5[v12 + v15],
            (unsigned __int8)a6[v12 + v15],
            255,
            255,
            "SubRank = %d, [TSOD] MTS_TEMP = -%d.%d'C\n",
            a7,
            v13 / 0x64,
            v13 % 0x64);
        else
          DebugPrint( /*0xffd05749*/
            (int)__return_address_1,
            2,
            n4_1,
            v14,
            (unsigned __int8)a5[v12 + v15],
            (unsigned __int8)a6[v12 + v15],
            255,
            255,
            "SubRank = %d, [TSOD] MTS_TEMP = %d.%d'C\n",
            a7,
            v13 / 0x64,
            v13 % 0x64);
        v10 = a5; /*0xffd0574e*/
        if ( n85 > 85 ) /*0xffd0575a*/
        {
          n4_1 = n4; /*0xffd05760*/
          buf[6192 * (unsigned __int8)n4 + 2 + 1032 * v12 + 516 * (unsigned __int8)a5[v12 + v15]] = 1; /*0xffd05783*/
        }
      }
      ++n6; /*0xffd05788*/
      ++v12; /*0xffd0578a*/
      LOBYTE(v14) = n6; /*0xffd0578b*/
    }
    while ( n6 < 6u ); /*0xffd05792*/
  }
}

// Function: IioTailX_FFD057A0 @ 0xffd057a0 (0x79 bytes)
// Index: 2231/2560

_BYTE *__cdecl IioTailX_FFD057A0(_BYTE *buf, unsigned __int8 n4)
{
  int n6; // ebx
  _BYTE *v3; // esi
  _BYTE *v4; // ecx
  int n2; // edx
  _BYTE *result; // eax
  int n32; // edi

  buf[n4 + 31712] = 0; /*0xffd057b2*/
  n6 = 6; /*0xffd057c6*/
  v3 = &buf[12 * n4 + 31716]; /*0xffd057c7*/
  v4 = &buf[6192 * n4 + 2]; /*0xffd057cc*/
  do /*0xffd05812*/
  {
    n2 = 2; /*0xffd057d0*/
    do /*0xffd0580d*/
    {
      *(v4 - 2) = 0; /*0xffd057d3*/
      result = v4 + 3; /*0xffd057d7*/
      n32 = 32; /*0xffd057da*/
      do /*0xffd057fe*/
      {
        *(_DWORD *)(result + 3) = -1; /*0xffd057db*/
        result += 16; /*0xffd057df*/
        *(_WORD *)(result - 17) = -1; /*0xffd057e2*/
        *(_DWORD *)(result - 9) = -1; /*0xffd057e8*/
        *(_WORD *)(result - 5) = -1; /*0xffd057ef*/
        *(_WORD *)(v4 - 1) = 0; /*0xffd057f5*/
        --n32; /*0xffd057fb*/
      }
      while ( n32 ); /*0xffd057fe*/
      v4 += 516; /*0xffd05800*/
      *v3++ = 0; /*0xffd05806*/
      --n2; /*0xffd0580a*/
    }
    while ( n2 ); /*0xffd0580d*/
    --n6; /*0xffd0580f*/
  }
  while ( n6 ); /*0xffd05812*/
  return result; /*0xffd05814*/
}

// Function: IioTailX_FFD05819 @ 0xffd05819 (0x1d7 bytes)
// Index: 2232/2560

char __cdecl IioTailX_FFD05819(
        unsigned __int8 *__return_address,
        unsigned __int8 n4,
        _BYTE *buf,
        _BYTE *a4,
        _BYTE *a5,
        _BYTE *a6,
        _BYTE *a7,
        unsigned __int8 *a8,
        _BYTE *a9,
        _BYTE *a10)
{
  char n4_1; // cl
  unsigned __int8 *__return_address_1; // edx
  unsigned __int8 *v12; // edi
  unsigned __int8 n2; // bh
  _BYTE *v14; // esi
  unsigned __int8 *v15; // eax
  unsigned __int8 v16; // bl
  unsigned __int8 v17; // al
  int v18; // ecx
  char n6; // al
  int n6_1; // ecx
  _BYTE *v21; // edi
  unsigned __int8 *v22; // ebp
  int n2_1; // eax
  unsigned __int8 *v24; // esi
  unsigned __int8 *v25; // [esp+10h] [ebp-1Ch]
  char n6_3; // [esp+14h] [ebp-18h]
  int v27; // [esp+18h] [ebp-14h]
  unsigned __int8 v28; // [esp+1Ch] [ebp-10h]
  unsigned __int8 n2_2; // [esp+20h] [ebp-Ch]
  unsigned __int8 *v30; // [esp+24h] [ebp-8h]
  unsigned __int8 *v31; // [esp+28h] [ebp-4h]
  int n6_2; // [esp+30h] [ebp+4h]
  int n4a; // [esp+34h] [ebp+8h]

  n4_1 = n4; /*0xffd05820*/
  __return_address_1 = __return_address; /*0xffd05824*/
  *a8 = 0; /*0xffd0582a*/
  n6_3 = 0; /*0xffd05838*/
  v27 = 0; /*0xffd0583f*/
  v31 = &__return_address[48704 * n4]; /*0xffd05844*/
  v12 = v31; /*0xffd05848*/
  v30 = v31; /*0xffd0584a*/
  do /*0xffd05969*/
  {
    n2 = 0; /*0xffd0584e*/
    v14 = v12 + 259231; /*0xffd05850*/
    v15 = v12; /*0xffd05856*/
    n2_2 = 0; /*0xffd05858*/
    v25 = v12; /*0xffd0585c*/
    do /*0xffd05945*/
    {
      if ( *(v14 - 113) ) /*0xffd05860*/
      {
        v16 = 0; /*0xffd0586a*/
        v28 = 0; /*0xffd0586c*/
        if ( *(v14 - 94) ) /*0xffd05870*/
        {
          do /*0xffd05923*/
          {
            if ( !KtiFunc89E9((int)__return_address_1, n4_1, n6_3, n2_2, v28, 1) ) /*0xffd0588d*/
            {
              v17 = v25[242 * v16 + 259345]; /*0xffd058a6*/
              if ( v17 > *a8 ) /*0xffd058af*/
                *a8 = v17; /*0xffd058b1*/
              v18 = 6 * v17 + v27; /*0xffd058c1*/
              buf[v18] = v14[7]; /*0xffd058c6*/
              a4[v18] = v14[6]; /*0xffd058d0*/
              a5[v18] = 4; /*0xffd058d7*/
              if ( (*v14 & 4) != 0 && (v16 & 1) != 0 ) /*0xffd058e3*/
                --a4[v18]; /*0xffd058e5*/
              if ( (*v14 & 8) != 0 && (v16 & 1) != 0 ) /*0xffd058f0*/
                a4[v18] -= 2; /*0xffd058f2*/
              a7[v18] = n2; /*0xffd058fe*/
              a10[v18] = v16; /*0xffd05905*/
              a6[v18] = *(v14 - 6) == 0; /*0xffd0590f*/
            }
            n4_1 = n4; /*0xffd05912*/
            ++v16; /*0xffd05916*/
            __return_address_1 = __return_address; /*0xffd05918*/
            v28 = v16; /*0xffd0591c*/
          }
          while ( v16 < *(v14 - 94) ); /*0xffd05923*/
          v15 = v25; /*0xffd05929*/
        }
      }
      ++n2; /*0xffd0592d*/
      v15 += 1379; /*0xffd0592f*/
      v14 += 1379; /*0xffd05934*/
      n2_2 = n2; /*0xffd0593a*/
      v25 = v15; /*0xffd0593e*/
    }
    while ( n2 < 2u ); /*0xffd05945*/
    n6 = n6_3 + 1; /*0xffd05953*/
    ++v27; /*0xffd05955*/
    v12 = v30 + 7688; /*0xffd05959*/
    n6_3 = n6; /*0xffd0595f*/
    v30 += 7688; /*0xffd05963*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd05969*/
  if ( a9 ) /*0xffd05979*/
  {
    n6_1 = 6; /*0xffd0597d*/
    v21 = v31 + 264984; /*0xffd0597e*/
    *a9 = 0; /*0xffd05984*/
    v22 = v31 + 259242; /*0xffd05987*/
    n6_2 = 6; /*0xffd0598d*/
    do /*0xffd059e6*/
    {
      if ( *v21 == 1 ) /*0xffd05995*/
      {
        *a9 = 1; /*0xffd05997*/
      }
      else if ( *v21 == 2 ) /*0xffd0599d*/
      {
        n2_1 = 2; /*0xffd059a1*/
        v24 = v22; /*0xffd059a2*/
        n4a = 2; /*0xffd059a4*/
        do /*0xffd059d0*/
        {
          if ( *(v24 - 124) ) /*0xffd059a8*/
          {
            n2_1 = n4a; /*0xffd059b9*/
            if ( (unsigned __int8)*a9 < *v24 - 1 ) /*0xffd059bd*/
              *a9 = *v24 - 1; /*0xffd059c1*/
          }
          v24 += 1379; /*0xffd059c3*/
          n4a = --n2_1; /*0xffd059cc*/
        }
        while ( n2_1 ); /*0xffd059d0*/
        n6_1 = n6_2; /*0xffd059d2*/
      }
      n6 = 8; /*0xffd059d6*/
      v22 += 7688; /*0xffd059db*/
      v21 += 7688; /*0xffd059dd*/
      n6_2 = --n6_1; /*0xffd059e2*/
    }
    while ( n6_1 ); /*0xffd059e6*/
  }
  return n6; /*0xffd059e8*/
}

// Function: IioTailX_FFD059F0 @ 0xffd059f0 (0x4e bytes)
// Index: 2233/2560

unsigned int __cdecl IioTailX_FFD059F0(int a1, unsigned int a2)
{
  unsigned int v2; // edx

  v2 = a2 & 0xFFFFFE07 | (2 * (a2 & 0xA8)) | (a2 >> 1) & 0xA8; /*0xffd05a0f*/
  if ( *(_WORD *)(a1 + 257315) != 11 ) /*0xffd05a1d*/
    return (4 * (a2 & 0x800)) | (a2 >> 2) & 0x800 | a2 & 0xFFFFD607 | (2 * (a2 & 0xA8)) & 0xD7FF | (a2 >> 1) & 0xA8; /*0xffd05a38*/
  return v2; /*0xffd05a3c*/
}

// Function: IioTailX_FFD05A3E @ 0xffd05a3e (0x42e bytes)
// Index: 2234/2560

char __cdecl IioTailX_FFD05A3E(unsigned __int8 *__return_address, _BYTE *buf, int n4)
{
  unsigned __int8 n6; // cl
  int n2; // eax
  int v5; // esi
  unsigned __int8 *v6; // edi
  unsigned __int8 *v7; // ecx
  unsigned __int8 *v8; // edx
  int v9; // ebp
  int v10; // ecx
  unsigned __int8 n0x90; // bl
  unsigned __int8 *__return_address_1; // ecx
  unsigned __int8 *__@BFHJLD_?ACGIKME_1; // ebp
  char n8; // bh
  unsigned __int8 n0x90_1; // ch
  char v16; // bh
  int v17; // esi
  char *v18; // edx
  unsigned __int8 n0x90_3; // al
  unsigned int n0x90_4; // ecx
  char v21; // al
  int v22; // ecx
  int v23; // eax
  int n36; // esi
  int v25; // ecx
  int v26; // eax
  _BYTE *v27; // edx
  _BYTE *v28; // edx
  unsigned __int8 *v29; // ecx
  unsigned __int8 v30; // al
  char v31; // al
  unsigned __int8 v32; // al
  char v33; // al
  _BYTE *v34; // edx
  char *v35; // ecx
  char v36; // al
  unsigned __int8 n0x90_2; // [esp+13h] [ebp-A5h]
  char n8_1; // [esp+14h] [ebp-A4h]
  char n0x90_5; // [esp+15h] [ebp-A3h]
  _WORD v41[3]; // [esp+16h] [ebp-A2h] BYREF
  int v42; // [esp+1Ch] [ebp-9Ch]
  _DWORD __@BFHJLD_?ACGIKME[5]; // [esp+20h] [ebp-98h] BYREF
  _DWORD v44[25]; // [esp+34h] [ebp-84h] BYREF
  int v45; // [esp+98h] [ebp-20h]
  int n4_1; // [esp+9Ch] [ebp-1Ch]
  char v47[4]; // [esp+A0h] [ebp-18h]
  int v48; // [esp+A4h] [ebp-14h]
  int n6_1; // [esp+A8h] [ebp-10h]
  int n4_2; // [esp+ACh] [ebp-Ch]
  unsigned __int8 *v51; // [esp+B0h] [ebp-8h]
  unsigned __int8 *v52; // [esp+B4h] [ebp-4h]

  n6 = 0; /*0xffd05a5b*/
  n4_1 = (unsigned __int8)n4; /*0xffd05a5d*/
  n2 = 48704 * (unsigned __int8)n4; /*0xffd05a6a*/
  v5 = 0; /*0xffd05a70*/
  qmemcpy(__@BFHJLD_?ACGIKME, "<>@BFHJLD=?ACGIKME", 18); /*0xffd05a72*/
  v6 = &__return_address[n2 + 258722]; /*0xffd05a92*/
  v44[0] = 0; /*0xffd05a9b*/
  v44[1] = 50462976; /*0xffd05a9f*/
  v44[2] = 33751296; /*0xffd05aa7*/
  v44[3] = 50397696; /*0xffd05aaf*/
  v44[4] = 16974336; /*0xffd05ab7*/
  v44[5] = 33620736; /*0xffd05abf*/
  v44[6] = 16909056; /*0xffd05ac7*/
  v44[7] = 50462721; /*0xffd05acf*/
  v44[8] = 33751041; /*0xffd05ad7*/
  v44[9] = 50332161; /*0xffd05adf*/
  v44[10] = 197121; /*0xffd05ae7*/
  v44[11] = 33555201; /*0xffd05aef*/
  v44[12] = 131841; /*0xffd05af7*/
  v44[13] = 50397186; /*0xffd05aff*/
  v44[14] = 16973826; /*0xffd05b07*/
  v44[15] = 50331906; /*0xffd05b0f*/
  v44[16] = 196866; /*0xffd05b17*/
  v44[17] = 16777986; /*0xffd05b1f*/
  v44[18] = 66306; /*0xffd05b27*/
  v44[19] = 33619971; /*0xffd05b2f*/
  v44[20] = 16908291; /*0xffd05b3a*/
  v44[21] = 33554691; /*0xffd05b45*/
  v44[22] = 131331; /*0xffd05b50*/
  v44[23] = 16777731; /*0xffd05b5b*/
  v44[24] = 66051; /*0xffd05b66*/
  LOBYTE(n6_1) = 0; /*0xffd05b71*/
  v42 = 0; /*0xffd05b78*/
  v52 = v6; /*0xffd05b7c*/
  do /*0xffd05e5b*/
  {
    if ( *v6 ) /*0xffd05b83*/
    {
      v7 = v6 + 396; /*0xffd05b8c*/
      LOBYTE(n2) = 0; /*0xffd05b92*/
      v8 = v6 - 258722; /*0xffd05b94*/
      v47[0] = 0; /*0xffd05b9a*/
      v9 = 0; /*0xffd05ba8*/
      v48 = 0; /*0xffd05baa*/
      v51 = v6 + 396; /*0xffd05bb1*/
      *(_DWORD *)&v41[1] = v6 - 258722; /*0xffd05bb8*/
      do /*0xffd05e27*/
      {
        if ( *v7 && *((_WORD *)v7 + 71) == 0xCE00 ) /*0xffd05bd1*/
        {
          v10 = *(_DWORD *)&v41[1]; /*0xffd05bd7*/
          n0x90 = 0; /*0xffd05bdb*/
          n0x90_5 = 0; /*0xffd05bdd*/
          while ( 1 ) /*0xffd05be1*/
          {
            if ( *(_BYTE *)(242 * n0x90 + v10 + 259342) ) /*0xffd05bea*/
            {
              if ( !n0x90 ) /*0xffd05bfa*/
              {
                __return_address_1 = __return_address; /*0xffd05c00*/
                __@BFHJLD_?ACGIKME_1 = (unsigned __int8 *)__@BFHJLD_?ACGIKME; /*0xffd05c07*/
                n8 = 0; /*0xffd05c0b*/
                n8_1 = 0; /*0xffd05c0d*/
                while ( !__return_address_1[257312] && (n8 == 8 || n8 == 17) ) /*0xffd05c26*/
                {
LABEL_26:
                  ++n8; /*0xffd05d2b*/
                  n0x90 += 8; /*0xffd05d2d*/
                  ++__@BFHJLD_?ACGIKME_1; /*0xffd05d30*/
                  n8_1 = n8; /*0xffd05d31*/
                  if ( n0x90 >= 0x90u ) /*0xffd05d38*/
                  {
                    n0x90 = n0x90_5; /*0xffd05d3e*/
                    v9 = v48; /*0xffd05d42*/
                    goto LABEL_40; /*0xffd05d49*/
                  }
                }
                KtiFunc27D8(__return_address_1, n4, n6_1, v47[0], *__@BFHJLD_?ACGIKME_1, (unsigned __int8 *)v41); /*0xffd05c4c*/
                v45 = 0; /*0xffd05c61*/
                HIBYTE(v41[0]) = v41[0] & 0x20; /*0xffd05c6b*/
                n0x90_1 = n0x90; /*0xffd05c6f*/
                v16 = v41[0] & 0x20; /*0xffd05c79*/
                n0x90_2 = n0x90; /*0xffd05c7d*/
                n4_2 = 4; /*0xffd05c81*/
                v17 = 144 * (v48 + 2 * (v5 + 6 * n4_1)); /*0xffd05c91*/
                v18 = (char *)&v44[v41[0] & 0x1F]; /*0xffd05ca1*/
                while ( 2 ) /*0xffd05ca4*/
                {
                  n0x90_3 = n0x90_1; /*0xffd05ca4*/
                  if ( n0x90 >= 0x48u ) /*0xffd05ca9*/
                    n0x90_3 = n0x90_1 - 68; /*0xffd05cab*/
                  if ( (v45 & 1) != 0 ) /*0xffd05cb5*/
                  {
                    n0x90_4 = n0x90_3; /*0xffd05ce2*/
                    v21 = *v18; /*0xffd05ce5*/
                    v22 = v17 + (n0x90_4 >> 1); /*0xffd05ce9*/
                    if ( v16 ) /*0xffd05ced*/
                      v21 += 4; /*0xffd05cef*/
                    buf[v22 + 24800] |= 16 * v21; /*0xffd05cf9*/
                  }
                  else
                  {
                    if ( v16 ) /*0xffd05cb9*/
                    {
                      buf[v17 + 24800 + (n0x90_3 >> 1)] = *v18 + 4; /*0xffd05cc7*/
                      goto LABEL_24; /*0xffd05cce*/
                    }
                    buf[v17 + 24800 + (n0x90_3 >> 1)] = *v18; /*0xffd05cd9*/
                  }
                  n0x90_1 = n0x90_2; /*0xffd05d00*/
LABEL_24:
                  ++n0x90_1; /*0xffd05d04*/
                  ++v45; /*0xffd05d06*/
                  ++v18; /*0xffd05d0d*/
                  n0x90_2 = n0x90_1; /*0xffd05d0e*/
                  if ( !--n4_2 ) /*0xffd05d1a*/
                  {
                    n8 = n8_1; /*0xffd05d1c*/
                    v5 = v42; /*0xffd05d20*/
                    __return_address_1 = __return_address; /*0xffd05d24*/
                    goto LABEL_26; /*0xffd05d24*/
                  }
                  continue; /*0xffd05d1a*/
                }
              }
              v23 = v5 + 6 * n4_1; /*0xffd05d58*/
              n36 = 36; /*0xffd05d5a*/
              v25 = v9 + 2 * v23; /*0xffd05d62*/
              v26 = 36 * (n0x90 + 4 * v25); /*0xffd05d67*/
              v27 = buf + 24800; /*0xffd05d6d*/
              if ( (n0x90 & 1) != 0 ) /*0xffd05d73*/
              {
                v28 = &v27[v26]; /*0xffd05d75*/
                v29 = &buf[144 * v25 + 24800]; /*0xffd05d83*/
                do /*0xffd05db5*/
                {
                  *v28 = 0; /*0xffd05d85*/
                  v30 = *v29; /*0xffd05d88*/
                  if ( (*v29 & 1) != 0 ) /*0xffd05d8c*/
                    v31 = (v30 & 0xF) - 1; /*0xffd05d96*/
                  else
                    v31 = (v30 & 0xF) + 1; /*0xffd05d90*/
                  *v28 = v31; /*0xffd05d98*/
                  v32 = *v29; /*0xffd05d9a*/
                  if ( (*v29 & 0x10) != 0 ) /*0xffd05d9e*/
                    v33 = 16 * ((v32 >> 4) - 1); /*0xffd05dab*/
                  else
                    v33 = (v32 & 0xF0) + 16; /*0xffd05da2*/
                  *v28 |= v33; /*0xffd05dae*/
                  ++v29; /*0xffd05db0*/
                  ++v28; /*0xffd05db1*/
                  --n36; /*0xffd05db2*/
                }
                while ( n36 ); /*0xffd05db5*/
              }
              else
              {
                v34 = &v27[v26]; /*0xffd05db9*/
                v35 = &buf[144 * v25 + 24800]; /*0xffd05dc7*/
                do /*0xffd05dd2*/
                {
                  v36 = *v35++; /*0xffd05dc9*/
                  *v34++ = v36; /*0xffd05dcc*/
                  --n36; /*0xffd05dcf*/
                }
                while ( n36 ); /*0xffd05dd2*/
              }
LABEL_40:
              v10 = *(_DWORD *)&v41[1]; /*0xffd05dd4*/
            }
            v5 = v42; /*0xffd05dd8*/
            n0x90_5 = ++n0x90; /*0xffd05dde*/
            if ( n0x90 >= 4u ) /*0xffd05de5*/
            {
              LOBYTE(n2) = v47[0]; /*0xffd05deb*/
              v7 = v51; /*0xffd05df2*/
              v8 = *(unsigned __int8 **)&v41[1]; /*0xffd05df9*/
              break; /*0xffd05df9*/
            }
          }
        }
        LOBYTE(n2) = n2 + 1; /*0xffd05dfd*/
        v7 += 1379; /*0xffd05dff*/
        ++v9; /*0xffd05e05*/
        v47[0] = n2; /*0xffd05e06*/
        v8 += 1379; /*0xffd05e0d*/
        v48 = v9; /*0xffd05e13*/
        v51 = v7; /*0xffd05e1a*/
        *(_DWORD *)&v41[1] = v8; /*0xffd05e21*/
      }
      while ( (unsigned __int8)n2 < 2u ); /*0xffd05e27*/
      n6 = n6_1; /*0xffd05e2d*/
      v6 = v52; /*0xffd05e36*/
    }
    ++n6; /*0xffd05e3d*/
    v6 += 7688; /*0xffd05e3f*/
    ++v5; /*0xffd05e45*/
    LOBYTE(n6_1) = n6; /*0xffd05e46*/
    v42 = v5; /*0xffd05e4d*/
    v52 = v6; /*0xffd05e51*/
  }
  while ( n6 < 6u ); /*0xffd05e5b*/
  return n2; /*0xffd05e61*/
}

// Function: IioTailFunc5E6C @ 0xffd05e6c (0x1ce bytes)
// Index: 2235/2560

int __cdecl IioTailFunc5E6C(unsigned __int8 *__return_address, _BYTE *buf, unsigned __int8 n4)
{
  unsigned __int8 n4_1; // dl
  unsigned __int8 *__return_address_1; // ecx
  unsigned __int8 n6; // bl
  unsigned int *v6; // ebp
  unsigned __int8 *v7; // edi
  unsigned int v8; // esi
  unsigned int v9; // eax
  unsigned __int8 n6_1; // [esp+8h] [ebp-74h]
  _DWORD v12[28]; // [esp+Ch] [ebp-70h]

  n4_1 = n4; /*0xffd05e6f*/
  __return_address_1 = __return_address; /*0xffd05e76*/
  n6 = 0; /*0xffd05e83*/
  v6 = (unsigned int *)(buf + 31764); /*0xffd05e88*/
  v12[0] = 25000; /*0xffd05e9c*/
  v12[1] = 20000; /*0xffd05ea4*/
  v12[2] = 18750; /*0xffd05eac*/
  v7 = &__return_address[48704 * n4 + 258722]; /*0xffd05eb4*/
  v12[3] = 16667; /*0xffd05eb6*/
  v12[4] = 15000; /*0xffd05ebe*/
  v12[5] = 14286; /*0xffd05ec6*/
  v12[6] = 12500; /*0xffd05ece*/
  v12[7] = 11111; /*0xffd05ed6*/
  v12[8] = 10714; /*0xffd05ede*/
  v12[9] = 10000; /*0xffd05ee6*/
  v12[10] = 9375; /*0xffd05eee*/
  v12[11] = 9091; /*0xffd05ef6*/
  v12[12] = 8333; /*0xffd05efe*/
  v12[13] = 7692; /*0xffd05f06*/
  v12[14] = 7500; /*0xffd05f0e*/
  v12[15] = 7143; /*0xffd05f16*/
  v12[16] = 6818; /*0xffd05f1e*/
  v12[17] = 6667; /*0xffd05f26*/
  v12[18] = 6250; /*0xffd05f2e*/
  v12[19] = 5883; /*0xffd05f36*/
  v12[20] = 5769; /*0xffd05f3e*/
  v12[21] = 5556; /*0xffd05f46*/
  v12[22] = 5358; /*0xffd05f4e*/
  v12[23] = 5264; /*0xffd05f56*/
  v12[24] = 5000; /*0xffd05f5e*/
  v12[25] = 4762; /*0xffd05f66*/
  v12[26] = 4689; /*0xffd05f6e*/
  v12[27] = 4546; /*0xffd05f76*/
  n6_1 = 0; /*0xffd05f81*/
  do /*0xffd0602a*/
  {
    if ( *v7 ) /*0xffd05f85*/
    {
      v8 = MiscConfigCheck(__return_address_1, n4_1, n6_1, 184566432); /*0xffd05fa7*/
      v9 = MiscConfigCheck(__return_address, n4, n6_1, 184566280); /*0xffd05fb7*/
      __return_address_1 = __return_address; /*0xffd06007*/
      n4_1 = n4; /*0xffd0600e*/
      *v6 = 100000 /*0xffd06015*/
          * *((_DWORD *)buf + 6194)
          / (4
           * v12[__return_address[257311]]
           * (3 * (HIWORD(v8) & 7) + ((v9 >> 27) & 7) + 16)
           / 0x64);
    }
    ++n6; /*0xffd06018*/
    ++v6; /*0xffd0601a*/
    v7 += 7688; /*0xffd0601d*/
    n6_1 = n6; /*0xffd06023*/
  }
  while ( n6 < 6u ); /*0xffd0602a*/
  return 0; /*0xffd06032*/
}

// Function: IioTailFunc603A @ 0xffd0603a (0xe6 bytes)
// Index: 2236/2560

int __cdecl IioTailFunc603A(unsigned __int8 *__return_address, int n4)
{
  unsigned __int8 *v2; // edi
  int n2; // eax
  int v4; // eax
  int n6; // [esp+10h] [ebp-8h]
  unsigned __int8 n2_2; // [esp+10h] [ebp-8h]
  int n2_1; // [esp+14h] [ebp-4h]

  ProcCommonFuncFBF1((int)__return_address); /*0xffd06045*/
  DdrTrainFunc15A1(__return_address, n4, 0xFFu); /*0xffd06055*/
  n2_1 = 0; /*0xffd0605f*/
  LOBYTE(n6) = 0; /*0xffd06063*/
  do /*0xffd060aa*/
  {
    if ( !ProcCommonFunc24D8(__return_address, n4, n6) ) /*0xffd0606d*/
    {
      ProcCommonFunc3D3D(__return_address, n4, n6, 1); /*0xffd06081*/
      KtiFunc8C4((int)__return_address, 1u); /*0xffd06089*/
      ProcCommonFunc3D3D(__return_address, n4, n6, 0); /*0xffd06096*/
    }
    LOBYTE(n6) = n6 + 1; /*0xffd060a4*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd060aa*/
  n2_2 = 0; /*0xffd060c0*/
  v2 = &__return_address[50813 * (unsigned __int8)n4 + 10189]; /*0xffd060c5*/
  n2 = 0; /*0xffd060c7*/
  do /*0xffd060fe*/
  {
    if ( *v2 ) /*0xffd060c9*/
    {
      v4 = MailBoxFunc8E0B(n4, (int)__return_address, n4, n2_2, 117459068); /*0xffd060d5*/
      MailBoxFunc8FC5((int)__return_address, n4, n2_2, 117459068, v4 & 0xFFFFFFFE); /*0xffd060e5*/
      n2 = n2_1; /*0xffd060ea*/
    }
    LOBYTE(n2) = n2 + 1; /*0xffd060f1*/
    ++v2; /*0xffd060f3*/
    n2_1 = n2; /*0xffd060f4*/
    n2_2 = n2; /*0xffd060f8*/
  }
  while ( (unsigned __int8)n2 < 2u ); /*0xffd060fe*/
  MailBoxFunc2B5B((int)__return_address, n4); /*0xffd06102*/
  KtiFuncD59F(__return_address, n4, 63); /*0xffd0610b*/
  return ProcCommonFuncFBFD((int)__return_address); /*0xffd06119*/
}

// Function: IioTailFunc6120 @ 0xffd06120 (0x132 bytes)
// Index: 2237/2560

int __cdecl IioTailFunc6120(unsigned __int8 *__return_address, int n4, int n6, int a4)
{
  unsigned __int8 n4_1; // dl
  int n4_2; // ebp
  unsigned __int8 *__return_address_1; // esi
  unsigned __int8 *v7; // edi
  unsigned __int8 n2; // bl
  int v9; // edx
  unsigned __int8 v10; // bh
  int v11; // eax
  unsigned __int8 v13; // [esp+10h] [ebp-14h]
  int v14; // [esp+14h] [ebp-10h]

  n4_1 = n4; /*0xffd06123*/
  n4_2 = (unsigned __int8)n4; /*0xffd0612d*/
  __return_address_1 = __return_address; /*0xffd06131*/
  v7 = &__return_address[48704 * (unsigned __int8)n4 + 7688 * (unsigned __int8)n6]; /*0xffd0614f*/
  n2 = 0; /*0xffd06151*/
  LOBYTE(__return_address) = 0; /*0xffd06153*/
  do /*0xffd061fd*/
  {
    if ( v7[259118] ) /*0xffd06157*/
    {
      v9 = KtiFunc91DE((int)__return_address_1, n4_1, n6, (unsigned __int8)__return_address); /*0xffd06173*/
      v10 = 0; /*0xffd06175*/
      v14 = v9; /*0xffd06180*/
      v13 = 0; /*0xffd06184*/
      if ( __return_address_1[50813 * n4_2 + 10194] ) /*0xffd0618c*/
      {
        do /*0xffd061e4*/
        {
          if ( v7[242 * v10 + 259342] ) /*0xffd061a2*/
          {
            RmtFunc349(__return_address_1, n4, n6, (int)__return_address, v13, *(unsigned __int16 *)(244 * v10 + v9), 0); /*0xffd061c7*/
            v9 = v14; /*0xffd061cc*/
          }
          v13 = ++v10; /*0xffd061d9*/
        }
        while ( v10 < __return_address_1[50813 * n4_2 + 10194] ); /*0xffd061e4*/
        n4_2 = (unsigned __int8)n4; /*0xffd061e6*/
      }
      n4_1 = n4; /*0xffd061ea*/
    }
    ++n2; /*0xffd061ee*/
    v7 += 1379; /*0xffd061f0*/
    LOBYTE(__return_address) = n2; /*0xffd061f6*/
  }
  while ( n2 < 2u ); /*0xffd061fd*/
  v11 = MiscConfigCheck(__return_address_1, n4_1, n6, 184566276); /*0xffd06210*/
  return MiscIoCheck( /*0xffd0624a*/
           __return_address_1,
           n4,
           n6,
           0xB004204u,
           v11 & 0xE0FFFF0F
         | (16
          * (*(_DWORD *)(a4 + 8 * (unsigned __int8)n6 + 4) & 0xF
           | ((*(_DWORD *)(a4 + 8 * (unsigned __int8)n6) & 0x1F) << 20))));
}

// Function: IioTailFunc6252 @ 0xffd06252 (0x877 bytes)
// Index: 2238/2560

unsigned __int8 __cdecl IioTailFunc6252(unsigned __int8 *__return_address, _BYTE *buf, int n4, char n2)
{
  int __return_address_1; // ebx
  unsigned __int8 *v5; // esi
  unsigned __int8 n6_1; // al
  unsigned __int8 *v7; // edi
  int *v8; // edi
  unsigned __int8 n6a_1; // al
  bool v10; // zf
  unsigned __int8 result; // al
  int v12; // eax
  int n6_2; // edx
  int v14; // ecx
  int v15; // eax
  int n6_3; // ebp
  int v17; // esi
  _BYTE *v18; // edi
  int v19; // esi
  int n6_4; // ebp
  unsigned __int8 v21; // bp
  int __return_address_3; // ebx
  int v23; // edx
  int n6_5; // edi
  int v25; // esi
  unsigned __int8 n6_6; // dl
  _BYTE *v27; // esi
  char *v28; // ebp
  char v29; // cl
  unsigned int v30; // edx
  int *v31; // eax
  unsigned int v32; // edx
  unsigned __int8 *v33; // ecx
  unsigned __int8 *v34; // ebp
  int v35; // esi
  unsigned __int8 *v36; // edi
  unsigned int v37; // eax
  unsigned int *v38; // edi
  int n2_1; // ebp
  int v40; // edi
  int *n6_9; // esi
  ... [17287 chars total]

// Function: IioTailFunc6AC9 @ 0xffd06ac9 (0x763 bytes)
// Index: 2239/2560

int __cdecl IioTailFunc6AC9(unsigned __int8 *n6, int buf, int n4, char n2)
{
  unsigned __int8 n6_1; // bl
  unsigned __int8 *v5; // edi
  int n4_2; // ebx
  unsigned __int8 v7; // al
  int v8; // eax
  int n6_2; // edx
  int v10; // ecx
  int v11; // eax
  int n6_4; // esi
  int v13; // edi
  unsigned __int8 *n6_5; // esi
  _BYTE *n6_12; // ebp
  int v16; // edi
  int n6_6; // edx
  unsigned __int8 v18; // bp
  int n4_4; // ebx
  int v20; // edx
  int n6_8; // ebp
  int v22; // edi
  bool v23; // zf
  char *v24; // edi
  _BYTE *v25; // esi
  _WORD *v26; // edx
  char *v27; // ebx
  char v28; // cl
  char v29; // cl
  int buf_7; // ebp
  unsigned __int8 n2_1; // al
  unsigned __int8 v32; // cl
  unsigned __int8 n6a_1; // dl
  _BYTE *buf_9; // edi
  char v35; // bp
  __int16 n6_11; // dx
  unsigned __int8 *v37; // edi
  int v38; // ebp
  unsigned __int16 n6_10; // ax
  unsigned int v40; // edi
  unsigned __int8 n2_2; // [esp+13h] [ebp-3EDh]
  int n3; // [esp+14h] [ebp-3ECh]
  int v44; /... [13916 chars total]

// Function: IioTailFunc722C @ 0xffd0722c (0x6fd bytes)
// Index: 2240/2560

unsigned __int8 __cdecl IioTailFunc722C(unsigned __int8 *__return_address, _BYTE *buf, int n4, char n2)
{
  int n6; // ebx
  int n4_1; // ecx
  unsigned __int8 *v6; // edi
  unsigned __int8 result; // al
  int v8; // eax
  int n6_1; // edx
  int v10; // ecx
  int n6_3; // esi
  unsigned __int8 *__return_address_1; // esi
  _BYTE *v13; // edx
  int v14; // ebp
  int n4_3; // edi
  int n6_4; // eax
  int n4_4; // edi
  int v18; // edx
  int n6_6; // edi
  int v20; // ebp
  char *v21; // ebp
  char *v22; // edx
  _BYTE *v23; // esi
  char *v24; // edi
  int v25; // ecx
  char v26; // cl
  char v27; // cl
  unsigned __int8 n0x10_1; // al
  _BYTE *buf_7; // edx
  _BYTE *v30; // ecx
  unsigned __int8 n6_9; // dl
  _BYTE *buf_9; // ebx
  char v33; // bp
  unsigned int v34; // ebp
  unsigned __int8 i; // bl
  int v36; // eax
  int v37; // [esp+10h] [ebp-404h]
  _BYTE *v38; // [esp+14h] [ebp-400h]
  int v39; // [esp+14h] [ebp-400h]
  int v40; // [esp+14h] [ebp-400h]
  char v41; // [esp+1Bh] [eb... [13981 chars total]

// Function: IioTailX_FFD07929 @ 0xffd07929 (0x8ae bytes)
// Index: 2241/2560

_BYTE *__cdecl IioTailX_FFD07929(
        unsigned __int8 *n6,
        int buf,
        unsigned __int8 n4,
        unsigned __int8 a4,
        unsigned __int8 a5,
        _BYTE *a6,
        unsigned __int8 n0x10)
{
  unsigned __int8 n4_1; // dl
  unsigned __int8 n6_2; // cl
  unsigned __int8 *n6_1; // ebx
  int v10; // esi
  int n4_2; // edi
  unsigned __int8 *v12; // ebp
  _BYTE *result; // eax
  char v14; // al
  char n2; // bl
  int v16; // eax
  int v17; // edi
  int v18; // eax
  _BYTE *v19; // esi
  int v20; // eax
  unsigned __int8 n0x40; // cl
  int v22; // edx
  unsigned __int8 v23; // al
  unsigned __int8 n4_4; // bh
  int v25; // edi
  unsigned __int8 n0x40_1; // bl
  char v27; // cl
  bool v28; // zf
  char n2_1; // [esp+12h] [ebp-2A6h]
  unsigned __int8 n0x40_2; // [esp+13h] [ebp-2A5h]
  _DWORD v31[4]; // [esp+14h] [ebp-2A4h]
  _DWORD PPPPPPPPUUUUUUUU_n_n_n_n_n_n_n_n[8]; // [esp+24h] [ebp-294h] BYREF
  _DWORD ZZZZZZZZ________[20]; // [esp+44h] [ebp-274h] BYREF
  _DWORD v3... [11714 chars total]

// Function: IioTailFunc81D7 @ 0xffd081d7 (0x237 bytes)
// Index: 2242/2560

unsigned __int8 __cdecl IioTailFunc81D7(
        unsigned __int8 *__return_address,
        int n4,
        _BYTE *a3,
        unsigned __int8 *a4,
        _BYTE *a5)
{
  int v5; // esi
  unsigned __int8 *v6; // ecx
  unsigned __int8 n6; // al
  int v9; // edx
  unsigned __int8 v10; // dl
  int v11; // ecx
  int v12; // edx
  unsigned __int8 v13; // al
  unsigned __int8 *v14; // ecx
  unsigned __int8 n6_1; // al
  _BYTE *v16; // ebp
  unsigned int v17; // esi
  unsigned __int8 *v18; // ebp
  _BYTE *v19; // edi
  unsigned int v20; // esi
  unsigned __int8 n6_2; // al
  _BYTE *v22; // edi
  unsigned int v23; // esi
  unsigned __int8 *v24; // ebp
  unsigned __int8 n6_3; // bl
  unsigned __int8 v26; // [esp+13h] [ebp-19h]
  int n6_4; // [esp+14h] [ebp-18h]
  unsigned __int8 n6_5; // [esp+14h] [ebp-18h]
  unsigned __int8 n6_6; // [esp+14h] [ebp-18h]
  unsigned __int8 n6_7; // [esp+14h] [ebp-18h]
  int v31; // [esp+18h] [ebp-14h]
  unsigned __int8 *v32; // [esp+20h] [ebp-Ch]
  unsigned __int8 *v33; // [esp+20h] [ebp-Ch]
  unsigned __int8 v34; // [esp+24h] [ebp-8h]
  int v35; // [esp+28h] [ebp-4h]

  v5 = n4 & 0x2100007F; /*0xffd081e8*/
  v6 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd08203*/
  n6 = 0; /*0xffd0820d*/
  LOBYTE(n6_4) = 0; /*0xffd0820f*/
  v9 = 0; /*0xffd08213*/
  v31 = 0; /*0xffd08215*/
  v32 = v6; /*0xffd08219*/
  do
  {
    if ( *v6 )
    {
      v10 = 0; /*0xffd0822a*/
      v26 = 0; /*0xffd0822c*/
      if ( *a4 )
      {
        do
        {
          v11 = v10; /*0xffd0823e*/
          v35 = v10; /*0xffd08247*/
          v12 = *(_DWORD *)&a3[4 * v10 + 4 * v31]; /*0xffd0824b*/
          v13 = v12 + 4; /*0xffd0824e*/
          v34 = v12 + 4; /*0xffd08251*/
          if ( (unsigned int)(v12 + 4) > 0x1F )
          {
            DebugPrint(
              (int)__return_address,
              3,
              n4,
              n6_4,
              255,
              255,
              255,
              255,
              "ERROR: Wrong cacheline number for subsequence %d: %d\n",
              v11,
              v12);
            ProcMemInitCheck((int)__return_address, 96, 3); /*0xffd0827c*/
            v13 = v34; /*0xffd08281*/
            v11 = v35; /*0xffd08288*/
          }
          v5 ^= ((unsigned __int8)v5 ^ v13) & 0x7F; /*0xffd08291*/
          MailBoxFunc902D((int)__return_address, n4, n6_4, 8 * v11 + 117459984, 80, v5); /*0xffd082a4*/
          v10 = v26 + 1; /*0xffd082b0*/
          v26 = v10; /*0xffd082b2*/
        }
        while ( v10 < *a4 );
        n6 = n6_4; /*0xffd082bf*/
        v6 = v32; /*0xffd082c5*/
      }
      v9 = v31; /*0xffd082c9*/
    }
    ++n6; /*0xffd082cd*/
    v6 += 7688; /*0xffd082cf*/
    v9 += 7; /*0xffd082d5*/
    LOBYTE(n6_4) = n6; /*0xffd082d8*/
    ++a4; /*0xffd082dc*/
    v32 = v6; /*0xffd082dd*/
    v31 = v9; /*0xffd082e1*/
  }
  while ( n6 < 6u );
  v14 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd082ed*/
  n6_1 = 0; /*0xffd082f1*/
  v16 = a5; /*0xffd082f3*/
  v17 = v5 & 0xFF0FFFFF | 0x100000; /*0xffd082fd*/
  n6_5 = 0; /*0xffd08303*/
  v33 = v14; /*0xffd08307*/
  do /*0xffd08352*/
  {
    if ( *v14 ) /*0xffd0830d*/
    {
      v17 ^= ((unsigned __int8)v17 ^ (unsigned __int8)(*v16 + 1)) & 0x7F; /*0xffd0831c*/
      MailBoxFunc902D((int)__return_address, n4, n6_5, 117460040, 80, v17); /*0xffd0832f*/
      n6_1 = n6_5; /*0xffd08334*/
      v14 = v33; /*0xffd0833b*/
    }
    ++n6_1; /*0xffd0833f*/
    v14 += 7688; /*0xffd08341*/
    ++v16; /*0xffd08347*/
    n6_5 = n6_1; /*0xffd08348*/
    v33 = v14; /*0xffd0834c*/
  }
  while ( n6_1 < 6u ); /*0xffd08352*/
  v18 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd08354*/
  v19 = a5; /*0xffd0835e*/
  v20 = v17 & 0xFF0FFFFF | 0x100000; /*0xffd08362*/
  n6_2 = 0; /*0xffd0836a*/
  n6_6 = 0; /*0xffd08370*/
  do /*0xffd083b1*/
  {
    if ( *v18 ) /*0xffd08374*/
    {
      v20 ^= ((unsigned __int8)v20 ^ (unsigned __int8)(*v19 + 1)) & 0x7F; /*0xffd08383*/
      MailBoxFunc902D((int)__return_address, n4, n6_6, 117460048, 80, v20); /*0xffd08396*/
      n6_2 = n6_6; /*0xffd0839b*/
    }
    ++n6_2; /*0xffd083a2*/
    v18 += 7688; /*0xffd083a4*/
    ++v19; /*0xffd083aa*/
    n6_6 = n6_2; /*0xffd083ab*/
  }
  while ( n6_2 < 6u ); /*0xffd083b1*/
  v22 = a5; /*0xffd083b3*/
  v23 = v20 & 0xFF0FFFFF; /*0xffd083b7*/
  v24 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd083bd*/
  n6_3 = 0; /*0xffd083c1*/
  n6_7 = 0; /*0xffd083c3*/
  do /*0xffd08404*/
  {
    if ( *v24 ) /*0xffd083c7*/
    {
      v23 ^= ((unsigned __int8)v23 ^ (unsigned __int8)(*v22 + 1)) & 0x7F; /*0xffd083d6*/
      n6_2 = MailBoxFunc902D((int)__return_address, n4, n6_7, 117460056, 80, v23); /*0xffd083ec*/
    }
    ++n6_3; /*0xffd083f4*/
    v24 += 7688; /*0xffd083f6*/
    ++v22; /*0xffd083fc*/
    n6_7 = n6_3; /*0xffd083fd*/
  }
  while ( n6_3 < 6u ); /*0xffd08404*/
  return n6_2; /*0xffd08406*/
}

// Function: IioTailFunc840E @ 0xffd0840e (0x2d5 bytes)
// Index: 2243/2560

int __cdecl IioTailFunc840E(unsigned __int8 *__return_address, _BYTE *buf, int n4, char n3)
{
  unsigned __int8 n4_1; // bl
  unsigned __int8 n6_1; // cl
  int v6; // edx
  unsigned __int8 *v7; // edi
  unsigned __int8 *v8; // esi
  unsigned __int8 v9; // al
  int v10; // eax
  unsigned __int8 v11; // al
  char *v12; // esi
  int v13; // edx
  int n10; // ecx
  unsigned __int16 *v15; // ebx
  unsigned int v16; // edi
  __int16 v17; // ax
  unsigned __int8 v18; // bl
  unsigned __int8 *v19; // ecx
  unsigned __int16 *v20; // esi
  int n10_2; // eax
  int n2_1; // [esp+10h] [ebp-80h]
  int n6; // [esp+14h] [ebp-7Ch]
  int n2; // [esp+18h] [ebp-78h]
  unsigned __int8 *v26; // [esp+1Ch] [ebp-74h]
  int v27; // [esp+20h] [ebp-70h]
  unsigned __int8 *v28; // [esp+24h] [ebp-6Ch]
  unsigned __int8 *v29; // [esp+28h] [ebp-68h]
  int n10_1; // [esp+2Ch] [ebp-64h]
  int n10_3; // [esp+2Ch] [ebp-64h]
  char v32; // [esp+30h] [ebp-60h]
  char v33; // [esp+42h] [ebp-4Eh] BYREF
  char v34; // [esp+46h] [ebp-4Ah] BYREF

  n4_1 = n4; /*0xffd08415*/
  n6_1 = 0; /*0xffd0841c*/
  v6 = 48704 * (unsigned __int8)n4; /*0xffd08429*/
  v27 = v6; /*0xffd0844a*/
  v7 = &__return_address[v6 + 258725]; /*0xffd0844e*/
  LOBYTE(n6) = 0; /*0xffd08450*/
  v8 = &__return_address[v6 + 259118]; /*0xffd08454*/
  v32 = n3 - 1; /*0xffd08456*/
  v26 = v7; /*0xffd0845a*/
  v29 = v8; /*0xffd0845e*/
  do /*0xffd086d0*/
  {
    if ( *(v7 - 3) ) /*0xffd0846a*/
    {
      v9 = 0; /*0xffd08474*/
      LOBYTE(n2_1) = 0; /*0xffd08476*/
      if ( *v7 ) /*0xffd0847a*/
      {
        do /*0xffd0869f*/
        {
          v10 = 1379 * v9; /*0xffd08485*/
          if ( v8[v10] && *(_WORD *)&v8[v10 + 142] == 0xCE00 ) /*0xffd084a2*/
          {
            v28 = &__return_address[v6 + v10]; /*0xffd084bc*/
            v11 = IioTailFunc41BA((int)__return_address, (int)buf, n4_1, n6, n2_1); /*0xffd084c1*/
            if ( v11 != 0xFF ) /*0xffd084cb*/
            {
              v12 = &v33; /*0xffd084d5*/
              v13 = 1 << v32; /*0xffd084e2*/
              n10 = 10; /*0xffd084e6*/
              v15 = (unsigned __int16 *)((char *)&unk_FFD5C9A4 + 20 * v11); /*0xffd084eb*/
              n10_1 = 10; /*0xffd084f1*/
              do /*0xffd08565*/
              {
                v16 = *v15; /*0xffd084f5*/
                if ( ((unsigned __int8)(v16 >> 12) & (unsigned __int8)v13) == 0 || (v16 & 0xFFF) == 0xFFF ) /*0xffd08517*/
                {
                  v17 = 0; /*0xffd08501*/
                  *(v12 - 2) = 0; /*0xffd08503*/
                  *(_DWORD *)v12 = 0; /*0xffd08507*/
                }
                else
                {
                  *(v12 - 2) = 1; /*0xffd0851b*/
                  *(_WORD *)v12 = IioTailFunc443A((v16 >> 8) & 0xF); /*0xffd0852b*/
                  *((_WORD *)v12 + 1) = IioTailFunc443A((unsigned __int8)v16 >> 4); /*0xffd0853f*/
                  v17 = IioTailFunc443A(v16 & 0xF); /*0xffd08544*/
                  LOBYTE(v13) = 1 << v32; /*0xffd08549*/
                  n10 = n10_1; /*0xffd08550*/
                }
                *((_WORD *)v12 + 2) = v17; /*0xffd08554*/
                ++v15; /*0xffd08558*/
                v12 += 8; /*0xffd0855b*/
                n10_1 = --n10; /*0xffd08561*/
              }
              while ( n10 ); /*0xffd08565*/
              v18 = 0; /*0xffd0856f*/
              LOBYTE(n2) = 0; /*0xffd08571*/
              if ( __return_address[50813 * (unsigned __int8)n4 + 10194] ) /*0xffd08579*/
              {
                v19 = v28; /*0xffd08586*/
                do /*0xffd08678*/
                {
                  v7 = v26; /*0xffd0858a*/
                  if ( v19[242 * v18 + 259342] ) /*0xffd08597*/
                  {
                    if ( v26[6670] ) /*0xffd085a5*/
                      RmtFunc765(__return_address, n4, n6, n2_1, n2, 0x18u, 0xB0u); /*0xffd085c9*/
                    IioTailX_FFD09355(__return_address, n4, n6, n2_1, n2); /*0xffd085e6*/
                    v20 = (unsigned __int16 *)&v34; /*0xffd085ee*/
                    n10_2 = 10; /*0xffd085f4*/
                    n10_3 = 10; /*0xffd085f5*/
                    do /*0xffd08631*/
                    {
                      if ( *((_BYTE *)v20 - 6) == 1 ) /*0xffd085fd*/
                      {
                        IioTailFunc6AF(__return_address, n4, n6, n2_1, n2, *(v20 - 2), *(v20 - 1), *v20); /*0xffd0861b*/
                        n10_2 = n10_3; /*0xffd08620*/
                      }
                      v20 += 4; /*0xffd08627*/
                      n10_3 = --n10_2; /*0xffd0862d*/
                    }
                    while ( n10_2 ); /*0xffd08631*/
                    v7 = v26; /*0xffd08633*/
                    if ( v26[6670] ) /*0xffd08637*/
                      RmtFunc765(__return_address, n4, n6, n2_1, n2, 0, 0xB0u); /*0xffd0865b*/
                    v19 = v28; /*0xffd08663*/
                  }
                  LOBYTE(n2) = ++v18; /*0xffd0866d*/
                }
                while ( v18 < __return_address[50813 * (unsigned __int8)n4 + 10194] ); /*0xffd08678*/
              }
              else
              {
                v7 = v26; /*0xffd08680*/
              }
              v8 = v29; /*0xffd08684*/
              n4_1 = n4; /*0xffd08688*/
            }
            v6 = v27; /*0xffd0868f*/
          }
          v9 = n2_1 + 1; /*0xffd08697*/
          LOBYTE(n2_1) = v9; /*0xffd08699*/
        }
        while ( v9 < *v7 ); /*0xffd0869f*/
        n6_1 = n6; /*0xffd086a5*/
      }
    }
    ++n6_1; /*0xffd086a9*/
    v6 += 7688; /*0xffd086ab*/
    v8 += 7688; /*0xffd086b1*/
    LOBYTE(n6) = n6_1; /*0xffd086b7*/
    v7 += 7688; /*0xffd086bb*/
    v27 = v6; /*0xffd086c1*/
    v29 = v8; /*0xffd086c5*/
    v26 = v7; /*0xffd086c9*/
  }
  while ( n6_1 < 6u ); /*0xffd086d0*/
  return 0; /*0xffd086d6*/
}

// Function: IioDdrWarmBootFlagSet @ 0xffd086e3 (0x37 bytes)
// Index: 2244/2560

int __cdecl IioDdrWarmBootFlagSet(unsigned __int8 *__return_address, _BYTE *buf)
{
  int n150; // eax

  buf[24770] = 1; /*0xffd086eb*/
  if ( __return_address[257313] ) /*0xffd086f2*/
  {
    n150 = 150; /*0xffd08706*/
    buf[24771] = 0; /*0xffd0870b*/
  }
  else
  {
    n150 = 0; /*0xffd086fb*/
    buf[24771] = 1; /*0xffd086fd*/
  }
  *((_WORD *)buf + 12386) = n150; /*0xffd08712*/
  return n150; /*0xffd08719*/
}

// Function: IioTailX_FFD0871A @ 0xffd0871a (0x1ab bytes)
// Index: 2245/2560

int __cdecl IioTailX_FFD0871A(unsigned __int8 *n6, int n4, int a3, _BYTE *a4, _BYTE *a5)
{
  int v5; // esi
  unsigned __int8 n6_1; // al
  unsigned __int8 *v7; // edx
  _BYTE *v8; // edi
  unsigned __int8 *v9; // ecx
  unsigned int v10; // esi
  _BYTE *v11; // edi
  _BYTE *v12; // ebp
  unsigned __int8 n6_2; // al
  unsigned __int8 n6_3; // bl
  unsigned __int8 *v15; // ebp
  unsigned int v16; // esi
  int result; // eax
  unsigned __int8 n6_4; // [esp+8h] [ebp-18h]
  unsigned __int8 n6_5; // [esp+8h] [ebp-18h]
  unsigned __int8 n6_6; // [esp+8h] [ebp-18h]
  unsigned __int8 *v21; // [esp+Ch] [ebp-14h]
  unsigned __int8 *v22; // [esp+Ch] [ebp-14h]
  int v23; // [esp+10h] [ebp-10h]
  int v24; // [esp+14h] [ebp-Ch]
  int v25; // [esp+2Ch] [ebp+Ch]

  v5 = n4 & 0x2100007F | 0x100000; /*0xffd08743*/
  n6_1 = 0; /*0xffd0874b*/
  v7 = &n6[48704 * (unsigned __int8)n4 + 258722]; /*0xffd08751*/
  v24 = a3 - (_DWORD)a4; /*0xffd08757*/
  v8 = a4; /*0xffd08764*/
  v23 = a5 - a4; /*0xffd08770*/
  n6_4 = 0; /*0xffd08778*/
  v21 = v7; /*0xffd0877c*/
  do /*0xffd087d7*/
  {
    if ( *v7 ) /*0xffd08780*/
    {
      v5 ^= ((unsigned __int8)v5 ^ (unsigned __int8)(v8[v24] + v8[v23] - 3 + *v8)) & 0x7F; /*0xffd087a4*/
      MailBoxFunc902D((int)n6, n4, n6_4, 117459984, 80, v5); /*0xffd087b4*/
      n6_1 = n6_4; /*0xffd087b9*/
      v7 = v21; /*0xffd087c0*/
    }
    ++n6_1; /*0xffd087c4*/
    v7 += 7688; /*0xffd087c6*/
    ++v8; /*0xffd087cc*/
    n6_4 = n6_1; /*0xffd087cd*/
    v21 = v7; /*0xffd087d1*/
  }
  while ( n6_1 < 6u ); /*0xffd087d7*/
  v9 = &n6[48704 * (unsigned __int8)n4 + 258722]; /*0xffd087d9*/
  v10 = v5 & 0xFF0FFFFF; /*0xffd087dd*/
  v11 = a5; /*0xffd087e3*/
  v12 = a4; /*0xffd087e9*/
  n6_2 = 0; /*0xffd087ed*/
  n6_5 = 0; /*0xffd087f3*/
  v22 = v9; /*0xffd087f7*/
  do /*0xffd08856*/
  {
    if ( *v9 ) /*0xffd087fb*/
    {
      v10 ^= ((unsigned __int8)v10 ^ (unsigned __int8)(v12[v24] + v12[v23] - 3 + *v12)) & 0x7F; /*0xffd08820*/
      MailBoxFunc902D((int)n6, n4, n6_5, 117459992, 80, v10); /*0xffd08833*/
      n6_2 = n6_5; /*0xffd08838*/
      v9 = v22; /*0xffd0883f*/
    }
    ++n6_2; /*0xffd08843*/
    v9 += 7688; /*0xffd08845*/
    ++v12; /*0xffd0884b*/
    n6_5 = n6_2; /*0xffd0884c*/
    v22 = v9; /*0xffd08850*/
  }
  while ( n6_2 < 6u ); /*0xffd08856*/
  n6_3 = 0; /*0xffd0885c*/
  v15 = &n6[48704 * (unsigned __int8)n4 + 258722]; /*0xffd0885e*/
  v16 = v10 & 0xFF0FFFFF; /*0xffd08862*/
  result = a3 - (_DWORD)a5; /*0xffd08868*/
  n6_6 = 0; /*0xffd0886a*/
  v25 = a3 - (_DWORD)a5; /*0xffd0886e*/
  do /*0xffd088bb*/
  {
    if ( *v15 ) /*0xffd08872*/
    {
      v16 ^= ((unsigned __int8)v16 ^ (unsigned __int8)(v11[result] - 3 + *v11)) & 0x7F; /*0xffd08889*/
      MailBoxFunc902D((int)n6, n4, n6_6, 117460000, 80, v16); /*0xffd0889f*/
      result = v25; /*0xffd088a4*/
    }
    ++n6_3; /*0xffd088ab*/
    v15 += 7688; /*0xffd088ad*/
    ++v11; /*0xffd088b3*/
    n6_6 = n6_3; /*0xffd088b4*/
  }
  while ( n6_3 < 6u ); /*0xffd088bb*/
  return result; /*0xffd088bf*/
}

// Function: IioTailX_FFD088C5 @ 0xffd088c5 (0x57 bytes)
// Index: 2246/2560

int __cdecl IioTailX_FFD088C5(unsigned __int8 *a1, unsigned __int8 a2, unsigned __int8 a3, char a4)
{
  unsigned __int8 n6; // bl
  char v5; // si
  int result; // eax
  int v7; // [esp+Ch] [ebp-4h]

  n6 = 0; /*0xffd088cb*/
  v5 = 0; /*0xffd088d2*/
  LOBYTE(v7) = 0; /*0xffd088d4*/
  do /*0xffd08913*/
  {
    result = 1 << v5; /*0xffd088dc*/
    if ( ((1 << v5) & a3) != 0 ) /*0xffd088e0*/
      result = MiscIoCheck(a1, a2, v7, 0xB0044A0u, (a4 & 0x3F | ((a4 & 0x3F) << 8)) << 8); /*0xffd08902*/
    ++n6; /*0xffd0890a*/
    ++v5; /*0xffd0890c*/
    LOBYTE(v7) = n6; /*0xffd0890d*/
  }
  while ( n6 < 6u ); /*0xffd08913*/
  return result; /*0xffd08915*/
}

// Function: IioTailX_FFD0891C @ 0xffd0891c (0x195 bytes)
// Index: 2247/2560

unsigned __int8 __cdecl IioTailX_FFD0891C(unsigned __int8 *__return_address, int n4, int a3, _BYTE *a4, _BYTE *a5)
{
  _BYTE *v5; // ebp
  int v6; // esi
  unsigned __int8 *v7; // eax
  unsigned __int8 n6; // cl
  unsigned __int8 *v9; // ecx
  unsigned int v10; // esi
  unsigned __int8 n6_1; // al
  _BYTE *v12; // ebp
  _BYTE *v13; // edi
  unsigned int v14; // esi
  unsigned __int8 *v15; // ebp
  unsigned __int8 n6_2; // bl
  unsigned __int8 n6_3; // [esp+10h] [ebp-10h]
  unsigned __int8 n6_4; // [esp+10h] [ebp-10h]
  unsigned __int8 n6_5; // [esp+10h] [ebp-10h]
  unsigned __int8 *v20; // [esp+14h] [ebp-Ch]
  unsigned __int8 *v21; // [esp+14h] [ebp-Ch]
  int v22; // [esp+2Ch] [ebp+Ch]
  int v23; // [esp+30h] [ebp+10h]

  v22 = a3 - (_DWORD)a4; /*0xffd0892b*/
  v5 = a4; /*0xffd08941*/
  v6 = n4 & 0x2100007F | 0x100000; /*0xffd0894e*/
  v7 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd08954*/
  n6 = 0; /*0xffd08956*/
  n6_3 = 0; /*0xffd0896f*/
  v20 = v7; /*0xffd08973*/
  do /*0xffd089cf*/
  {
    if ( *v7 ) /*0xffd08977*/
    {
      v6 ^= ((unsigned __int8)v6 ^ (unsigned __int8)(v5[v22] + v5[a5 - a4] - 3 + *v5)) & 0x7F; /*0xffd0899c*/
      MailBoxFunc902D((int)__return_address, n4, n6_3, 117459984, 80, v6); /*0xffd089ac*/
      n6 = n6_3; /*0xffd089b1*/
      v7 = v20; /*0xffd089b8*/
    }
    ++n6; /*0xffd089bc*/
    v7 += 7688; /*0xffd089be*/
    ++v5; /*0xffd089c3*/
    n6_3 = n6; /*0xffd089c4*/
    v20 = v7; /*0xffd089c8*/
  }
  while ( n6 < 6u ); /*0xffd089cf*/
  v9 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd089db*/
  v10 = v6 & 0xFF0FFFFF | 0x100000; /*0xffd089e1*/
  v21 = v9; /*0xffd089e7*/
  v23 = a4 - a5; /*0xffd089eb*/
  n6_1 = 0; /*0xffd089ef*/
  v12 = a5; /*0xffd089f5*/
  n6_4 = 0; /*0xffd089fb*/
  do /*0xffd08a4a*/
  {
    if ( *v9 ) /*0xffd089ff*/
    {
      v10 ^= ((unsigned __int8)v10 ^ (unsigned __int8)(v12[v23] - 1 + *v12)) & 0x7F; /*0xffd08a14*/
      MailBoxFunc902D((int)__return_address, n4, n6_4, 117459992, 80, v10); /*0xffd08a27*/
      n6_1 = n6_4; /*0xffd08a2c*/
      v9 = v21; /*0xffd08a33*/
    }
    ++n6_1; /*0xffd08a37*/
    v9 += 7688; /*0xffd08a39*/
    ++v12; /*0xffd08a3f*/
    n6_4 = n6_1; /*0xffd08a40*/
    v21 = v9; /*0xffd08a44*/
  }
  while ( n6_1 < 6u ); /*0xffd08a4a*/
  v13 = a5; /*0xffd08a4c*/
  v14 = v10 & 0xFF0FFFFF; /*0xffd08a50*/
  v15 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd08a56*/
  n6_2 = 0; /*0xffd08a5a*/
  n6_5 = 0; /*0xffd08a5c*/
  do /*0xffd08aa7*/
  {
    if ( *v15 ) /*0xffd08a60*/
    {
      v14 ^= ((unsigned __int8)v14 ^ (unsigned __int8)(v13[v23] - 1 + *v13)) & 0x7F; /*0xffd08a79*/
      n6_1 = MailBoxFunc902D((int)__return_address, n4, n6_5, 117460000, 80, v14); /*0xffd08a8f*/
    }
    ++n6_2; /*0xffd08a97*/
    v15 += 7688; /*0xffd08a99*/
    ++v13; /*0xffd08a9f*/
    n6_5 = n6_2; /*0xffd08aa0*/
  }
  while ( n6_2 < 6u ); /*0xffd08aa7*/
  return n6_1; /*0xffd08aa9*/
}

// Function: IioTailX_FFD08AB1 @ 0xffd08ab1 (0xb8 bytes)
// Index: 2248/2560

unsigned __int8 __cdecl IioTailX_FFD08AB1(unsigned __int8 *n6, int n4, __int16 *a3, int a4, unsigned __int8 a5)
{
  unsigned __int8 n6_1; // cl
  int v7; // edx
  __int16 v8; // ax
  int n5; // ebx
  _WORD *v10; // esi
  int n5_1; // ebp
  char v12; // cl
  __int16 v13; // dx
  unsigned __int8 result; // al
  unsigned __int16 *v15; // edi
  int v16; // ebx
  int v17; // esi

  n6_1 = 0; /*0xffd08ab9*/
  v7 = a4; /*0xffd08ac0*/
  do /*0xffd08ad6*/
  {
    *(_BYTE *)v7 = n6_1++; /*0xffd08ac2*/
    v8 = *a3++; /*0xffd08ac6*/
    *(_WORD *)(v7 + 2) = v8; /*0xffd08acc*/
    v7 += 4; /*0xffd08ad0*/
  }
  while ( n6_1 < 6u ); /*0xffd08ad6*/
  n5 = 5; /*0xffd08add*/
  do /*0xffd08b14*/
  {
    v10 = (_WORD *)(a4 + 6); /*0xffd08ae2*/
    n5_1 = 5; /*0xffd08ae4*/
    do /*0xffd08b0f*/
    {
      if ( *(v10 - 2) > *v10 ) /*0xffd08aef*/
      {
        v12 = *((_BYTE *)v10 - 6); /*0xffd08af1*/
        v13 = *(v10 - 2); /*0xffd08af4*/
        *(v10 - 2) = *v10; /*0xffd08af9*/
        *((_BYTE *)v10 - 6) = *((_BYTE *)v10 - 2); /*0xffd08b00*/
        *v10 = v13; /*0xffd08b03*/
        *((_BYTE *)v10 - 2) = v12; /*0xffd08b06*/
      }
      v10 += 2; /*0xffd08b09*/
      --n5_1; /*0xffd08b0c*/
    }
    while ( n5_1 ); /*0xffd08b0f*/
    --n5; /*0xffd08b11*/
  }
  while ( n5 ); /*0xffd08b14*/
  result = a5; /*0xffd08b16*/
  if ( a5 ) /*0xffd08b20*/
  {
    v15 = (unsigned __int16 *)(a4 + 2); /*0xffd08b22*/
    v16 = a5; /*0xffd08b25*/
    v17 = 0; /*0xffd08b2d*/
    do /*0xffd08b61*/
    {
      result = DebugPrint( /*0xffd08b52*/
                 (int)n6,
                 2,
                 255,
                 255,
                 255,
                 255,
                 255,
                 255,
                 "Index[%d] Ch = %d, Parameter = %d.%d\n",
                 v17,
                 *((unsigned __int8 *)v15 - 2),
                 *v15 / 0xAu,
                 *v15 % 0xAu);
      v15 += 2; /*0xffd08b5a*/
      ++v17; /*0xffd08b5d*/
      --v16; /*0xffd08b5e*/
    }
    while ( v16 ); /*0xffd08b61*/
  }
  return result; /*0xffd08b63*/
}

// Function: IioTailX_FFD08B69 @ 0xffd08b69 (0x1d7 bytes)
// Index: 2249/2560

int __cdecl IioTailX_FFD08B69(unsigned __int8 *__return_address, _BYTE *buf, int n4, char n2)
{
  bool v4; // zf
  int v5; // edi
  int v6; // eax
  int v7; // eax
  int v8; // esi
  int n6_1; // eax
  int v10; // eax
  int n6; // [esp+8h] [ebp-4Ch]
  int n6_2; // [esp+Ch] [ebp-48h]
  __int64 v14; // [esp+14h] [ebp-40h] BYREF
  _QWORD v15[7]; // [esp+1Ch] [ebp-38h] BYREF

  n6_2 = 0; /*0xffd08b7a*/
  v15[0] = 0; /*0xffd08b7e*/
  v14 = 0; /*0xffd08b86*/
  IioDdrWarmBootFlagSet(__return_address, buf); /*0xffd08b8e*/
  if ( buf[24770] )
  {
    v4 = buf[24771] == 1; /*0xffd08ba2*/
    buf[24769] = 3; /*0xffd08baf*/
    if ( v4 ) /*0xffd08bbb*/
    {
      if ( __return_address[257313] ) /*0xffd08bbd*/
        DebugPrint( /*0xffd08beb*/
          (int)__return_address,
          2,
          n4,
          255,
          255,
          255,
          255,
          255,
          "Test Pattern3 Parameter = Auto(%d)\n",
          *((unsigned __int16 *)buf + 12386));
      else
        DebugPrint((int)__return_address, 2, n4, 255, 255, 255, 255, 255, "Test Pattern3 Parameter = Auto\n"); /*0xffd08bd4*/
    }
    else
    {
      DebugPrint( /*0xffd08c03*/
        (int)__return_address,
        2,
        n4,
        255,
        255,
        255,
        255,
        255,
        "Test Pattern3 Parameter = %d\n",
        *((unsigned __int16 *)buf + 12386));
    }
    IioTailFunc840E(__return_address, buf, n4, 3); /*0xffd08c10*/
    DdrTrainFunc15A1(__return_address, n4, 0); /*0xffd08c19*/
    KtiFuncF4E(v15); /*0xffd08c23*/
    LOBYTE(n6) = 0; /*0xffd08c2d*/
    v5 = 0; /*0xffd08c31*/
    do /*0xffd08c91*/
    {
      v6 = MiscConfigCheck(__return_address, n4, n6, 184566948); /*0xffd08c3f*/
      *(_DWORD *)((char *)&v15[1] + v5) = v6; /*0xffd08c44*/
      MiscIoCheck(__return_address, n4, n6, 0xB0044A4u, v6 & 0x7FFFFFFF); /*0xffd08c56*/
      v7 = MiscConfigCheck(__return_address, n4, n6, 184567556); /*0xffd08c63*/
      *(_DWORD *)((char *)&v15[4] + v5) = v7; /*0xffd08c68*/
      MiscIoCheck(__return_address, n4, n6, 0xB004704u, v7 & 0xFDFFFFFF); /*0xffd08c7a*/
      v5 += 4; /*0xffd08c83*/
      LOBYTE(n6) = n6 + 1; /*0xffd08c8b*/
    }
    while ( (unsigned __int8)n6 < 6u ); /*0xffd08c91*/
    IioTailFunc6AC9(__return_address, (int)buf, n4, n2); /*0xffd08c9d*/
    LOBYTE(n6) = 0; /*0xffd08cac*/
    v8 = 0; /*0xffd08cb0*/
    do /*0xffd08cf0*/
    {
      MiscIoCheck(__return_address, n4, n6, 0xB0044A4u, *(_DWORD *)((char *)&v15[1] + v8)); /*0xffd08cc1*/
      MiscIoCheck(__return_address, n4, n6, 0xB004704u, *(_DWORD *)((char *)&v15[4] + v8)); /*0xffd08cd5*/
      n6_1 = n6_2; /*0xffd08cda*/
      v8 += 4; /*0xffd08cde*/
      LOBYTE(n6_1) = n6_2 + 1; /*0xffd08ce4*/
      n6_2 = n6_1; /*0xffd08ce6*/
      LOBYTE(n6) = n6_1; /*0xffd08cea*/
    }
    while ( (unsigned __int8)n6_1 < 6u ); /*0xffd08cf0*/
    KtiFuncF4E(&v14); /*0xffd08cf7*/
    v10 = KtiFuncF75((int)__return_address, v15[0], SHIDWORD(v15[0]), v14, SHIDWORD(v14), 1u); /*0xffd08d0f*/
    DebugPrint(
      (int)__return_address,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "\nN%d: STEP Pattern3 Finished. Total Test Time : %ds\n",
      (unsigned __int8)n4,
      v10);
  }
  return 0; /*0xffd08d38*/
}

// Function: IioTailX_FFD08D40 @ 0xffd08d40 (0x1d0 bytes)
// Index: 2250/2560

char __usercall IioTailX_FFD08D40@<al>(
        int n6@<edi>,
        unsigned __int8 *__return_address,
        _BYTE *buf,
        int n4,
        unsigned __int8 n3,
        char a6,
        char a7,
        unsigned int *a8,
        int a9,
        unsigned __int8 a10,
        _BYTE *a11,
        _BYTE *bufaa,
        _BYTE *a13)
{
  char n2; // al
  char n3_1; // al
  unsigned __int8 n2_1; // dh
  int v16; // esi
  int *v17; // ebp
  unsigned __int8 n6_1; // dl
  int v19; // ebx
  int v20; // eax
  int v21; // ecx
  int n4_2; // ebx
  int v23; // esi
  int v24; // eax
  char result; // al
  bool v26; // zf
  unsigned __int8 n6_3; // [esp-14h] [ebp-40h]
  int v28; // [esp+0h] [ebp-2Ch] BYREF
  unsigned __int8 n2_2; // [esp+13h] [ebp-19h]
  int v30; // [esp+14h] [ebp-18h]
  int n6_2; // [esp+18h] [ebp-14h]
  unsigned __int8 v32[4]; // [esp+1Ch] [ebp-10h]
  int v33; // [esp+20h] [ebp-Ch]
  int v34; // [esp+24h] [ebp-8h]
  int n4_1; // [esp+28h] [ebp-4h]

  n2 = buf[(unsigned __int8)n4 + 31712]; /*0xffd08d52*/
  n4_1 = (unsigned __int8)n4; /*0xffd08d59*/
  if ( n2 == 2 ) /*0xffd08d62*/
    n3_1 = 3; /*0xffd08d64*/
  else
    n3_1 = n2 == 1; /*0xffd08d6a*/
  n2_1 = 0; /*0xffd08d71*/
  v16 = (unsigned __int8)a7; /*0xffd08d75*/
  n2_2 = 0; /*0xffd08d7b*/
  v30 = (unsigned __int8)a7; /*0xffd08d7f*/
  v34 = (unsigned __int8)(n3_1 + 1); /*0xffd08d83*/
  do
  {
    v17 = (int *)a8; /*0xffd08d87*/
    n6_1 = 0; /*0xffd08d8b*/
    LOBYTE(n6_2) = 0; /*0xffd08d8d*/
    v19 = 0; /*0xffd08d91*/
    do /*0xffd08e2f*/
    {
      if ( ((1 << v19) & v16) != 0 ) /*0xffd08d9c*/
      {
        if ( n2_1 ) /*0xffd08da4*/
        {
          v20 = a10 + 1; /*0xffd08dca*/
        }
        else
        {
          IioTailFunc660((int)__return_address, n4, n6_2, 9, 9); /*0xffd08db6*/
          v20 = a10; /*0xffd08dbb*/
        }
        n6_3 = n6_2; /*0xffd08dd9*/
        v21 = *(_DWORD *)(a9 + 4 * (v19 + 6 * v20)) & 0x3FFFF; /*0xffd08ded*/
        *v17 = v21 | *v17 & 0xFFFC0000; /*0xffd08dfa*/
        v17[2] = v21 | v17[2] & 0xFFFC0000; /*0xffd08e07*/
        n6 = (int)&v28; /*0xffd08e0d*/
        IioTailX_FFD093D8((int)__return_address, n4, n6_3, *v17, v17[1], v17[2], v17[3]); /*0xffd08e0e*/
        n6_1 = n6_2; /*0xffd08e13*/
        n2_1 = n2_2; /*0xffd08e1a*/
        v16 = v30; /*0xffd08e1e*/
      }
      ++n6_1; /*0xffd08e22*/
      v17 += 4; /*0xffd08e24*/
      ++v19; /*0xffd08e27*/
      LOBYTE(n6_2) = n6_1; /*0xffd08e28*/
    }
    while ( n6_1 < 6u ); /*0xffd08e2f*/
    n4_2 = n4; /*0xffd08e39*/
    v33 = v34; /*0xffd08e3d*/
    do
    {
      MailBoxFuncD466(n6, (int)__return_address, n4_2, v16, 4u); /*0xffd08e49*/
      LOBYTE(n4_2) = IioTailFunc5166(n4_2, __return_address, n4_2); /*0xffd08e5f*/
      v23 = 0; /*0xffd08e61*/
      v24 = v30; /*0xffd08e63*/
      v32[0] = n4_2; /*0xffd08e67*/
      n6 = 6; /*0xffd08e6d*/
      do
      {
        if ( ((1 << v23) & v24) != 0 )
        {
          v24 = v30; /*0xffd08e9d*/
          if ( buf[6192 * n4_1 + 1 + 1032 * v23 + (n3 > 3u ? 0x204 : 0)] == 1 )
          {
            n4_2 = (unsigned __int8)n4_2 & ~(1 << v23); /*0xffd08ea6*/
            v32[0] = n4_2; /*0xffd08ea9*/
          }
        }
        ++v23; /*0xffd08ead*/
        --n6; /*0xffd08eae*/
      }
      while ( n6 );
      result = a7; /*0xffd08eb3*/
      v26 = ((unsigned __int8)n4_2 & (unsigned __int8)a7) == 0; /*0xffd08eb7*/
      n4_2 = n4; /*0xffd08eb9*/
      if ( !v26 ) /*0xffd08ebd*/
        result = IioTailFunc4A43(__return_address, (int)buf, n4, a7, n3, a6, v32[0], (int)a11, (int)bufaa, (int)a13); /*0xffd08ede*/
      v26 = v33-- == 1; /*0xffd08ee6*/
      v16 = v30; /*0xffd08eeb*/
    }
    while ( !v26 );
    n2_1 = n2_2 + 1; /*0xffd08ef9*/
    n2_2 = n2_1; /*0xffd08efb*/
  }
  while ( n2_1 < 2u );
  return result; /*0xffd08f08*/
}

// Function: IioTailX_FFD08F10 @ 0xffd08f10 (0xe6 bytes)
// Index: 2251/2560

int __usercall IioTailX_FFD08F10@<eax>(
        int *a1@<edi>,
        unsigned __int8 *__return_address,
        int n4,
        int n3,
        unsigned __int8 a5,
        unsigned int *a6,
        int buf,
        unsigned __int8 a8)
{
  int v8; // edx
  unsigned __int8 n2; // bh
  int *v10; // esi
  unsigned __int8 n6; // bl
  int v12; // ebp
  int v13; // eax
  int v14; // ecx
  int result; // eax
  unsigned __int8 v16; // [esp-14h] [ebp-30h]
  int v17; // [esp+0h] [ebp-1Ch] BYREF
  int v18; // [esp+10h] [ebp-Ch]
  unsigned int *v19; // [esp+14h] [ebp-8h]
  int v20; // [esp+18h] [ebp-4h]

  v8 = a5; /*0xffd08f13*/
  n2 = 0; /*0xffd08f1c*/
  v20 = a5; /*0xffd08f1e*/
  do /*0xffd08fe8*/
  {
    v10 = (int *)a6; /*0xffd08f22*/
    n6 = 0; /*0xffd08f26*/
    LOBYTE(v18) = 0; /*0xffd08f28*/
    v12 = 0; /*0xffd08f2c*/
    v19 = a6; /*0xffd08f2e*/
    do /*0xffd08fc6*/
    {
      if ( ((1 << v12) & v8) != 0 ) /*0xffd08f3b*/
      {
        if ( n2 ) /*0xffd08f3f*/
        {
          v13 = a8 + 1; /*0xffd08f65*/
        }
        else
        {
          IioTailFunc660((int)__return_address, n4, v18, 8, 8); /*0xffd08f51*/
          v13 = a8; /*0xffd08f56*/
        }
        v16 = v18; /*0xffd08f72*/
        v14 = *(_DWORD *)(buf + 4 * (v12 + 6 * v13)) & 0x3FFFF; /*0xffd08f85*/
        *v10 = v14 | *v10 & 0xFFFC0000; /*0xffd08f92*/
        v10[2] = v14 | v10[2] & 0xFFFC0000; /*0xffd08f9e*/
        a1 = &v17; /*0xffd08fa4*/
        IioTailX_FFD093D8((int)__return_address, n4, v16, *v10, v10[1], v10[2], v10[3]); /*0xffd08fa5*/
        v10 = (int *)v19; /*0xffd08faa*/
        v8 = v20; /*0xffd08fb1*/
      }
      ++n6; /*0xffd08fb5*/
      v10 += 4; /*0xffd08fb7*/
      ++v12; /*0xffd08fba*/
      LOBYTE(v18) = n6; /*0xffd08fbb*/
      v19 = (unsigned int *)v10; /*0xffd08fbf*/
    }
    while ( n6 < 6u ); /*0xffd08fc6*/
    result = MailBoxFuncD466((int)a1, (int)__return_address, n4, v8, 4u); /*0xffd08fd7*/
    v8 = v20; /*0xffd08fdc*/
    ++n2; /*0xffd08fe3*/
  }
  while ( n2 < 2u ); /*0xffd08fe8*/
  return result; /*0xffd08fee*/
}

// Function: IioTailX_FFD08FF6 @ 0xffd08ff6 (0x277 bytes)
// Index: 2252/2560

int __cdecl IioTailX_FFD08FF6(unsigned __int8 *__return_address, _BYTE *buf, int n4, char n2)
{
  unsigned __int8 n6_1; // al
  unsigned __int8 *v5; // esi
  int v6; // ebp
  int v7; // eax
  int v8; // eax
  int v9; // esi
  int v10; // eax
  unsigned __int8 *v11; // esi
  unsigned __int8 n6_2; // bl
  int v14; // [esp-Ch] [ebp-94h]
  int n6; // [esp+8h] [ebp-80h]
  __int64 v16; // [esp+18h] [ebp-70h] BYREF
  _QWORD v17[7]; // [esp+20h] [ebp-68h] BYREF
  int v18[12]; // [esp+58h] [ebp-30h] BYREF

  v17[0] = 0; /*0xffd09008*/
  v16 = 0; /*0xffd09010*/
  IioFuncFD15((int)buf); /*0xffd09018*/
  if ( buf[24780] )
  {
    v14 = (unsigned __int8)buf[24798]; /*0xffd0903a*/
    buf[24769] = 2; /*0xffd09045*/
    DebugPrint((int)__return_address, 2, n4, 255, 255, 255, 255, 255, "Test Pattern2 Parameter = %d\n", v14); /*0xffd0905b*/
    n6_1 = 0; /*0xffd0907f*/
    v5 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd09088*/
    LOBYTE(n6) = 0; /*0xffd0908e*/
    do /*0xffd090c4*/
    {
      if ( *v5 ) /*0xffd09092*/
      {
        IioTailFunc3E6B(__return_address, n4, n6, (int)v18, (unsigned __int8)buf[24798]); /*0xffd090aa*/
        n6_1 = n6; /*0xffd090af*/
      }
      ++n6_1; /*0xffd090b6*/
      v5 += 7688; /*0xffd090b8*/
      LOBYTE(n6) = n6_1; /*0xffd090be*/
    }
    while ( n6_1 < 6u ); /*0xffd090c4*/
    IioTailFunc840E(__return_address, buf, n4, 2); /*0xffd090cb*/
    DebugPrint( /*0xffd090e7*/
      (int)__return_address,
      2,
      255,
      255,
      255,
      255,
      255,
      255,
      "Running Pattern2 for socket %d\n",
      (unsigned __int8)n4);
    DdrTrainFunc15A1(__return_address, n4, 0); /*0xffd090f7*/
    KtiFuncF4E(v17); /*0xffd09104*/
    v6 = 0; /*0xffd0910d*/
    LOBYTE(n6) = 0; /*0xffd0910f*/
    do /*0xffd09179*/
    {
      v7 = MiscConfigCheck(__return_address, n4, n6, 184566948); /*0xffd09127*/
      *(_DWORD *)((char *)&v17[1] + v6) = v7; /*0xffd0912c*/
      MiscIoCheck(__return_address, n4, n6, 0xB0044A4u, v7 & 0x7FFFFFFF); /*0xffd0913e*/
      v8 = MiscConfigCheck(__return_address, n4, n6, 184567556); /*0xffd0914b*/
      *(_DWORD *)((char *)&v17[4] + v6) = v8; /*0xffd09150*/
      MiscIoCheck(__return_address, n4, n6, 0xB004704u, v8 & 0xFDFFFFFF); /*0xffd09162*/
      v6 += 4; /*0xffd0916b*/
      LOBYTE(n6) = n6 + 1; /*0xffd09173*/
    }
    while ( (unsigned __int8)n6 < 6u ); /*0xffd09179*/
    IioTailFunc722C(__return_address, buf, n4, n2); /*0xffd09192*/
    LOBYTE(n6) = 0; /*0xffd0919c*/
    v9 = 0; /*0xffd091a0*/
    do /*0xffd091e3*/
    {
      MiscIoCheck(__return_address, n4, n6, 0xB0044A4u, *(_DWORD *)((char *)&v17[1] + v9)); /*0xffd091b8*/
      MiscIoCheck(__return_address, n4, n6, 0xB004704u, *(_DWORD *)((char *)&v17[4] + v9)); /*0xffd091cc*/
      v9 += 4; /*0xffd091d5*/
      LOBYTE(n6) = n6 + 1; /*0xffd091dd*/
    }
    while ( (unsigned __int8)n6 < 6u ); /*0xffd091e3*/
    KtiFuncF4E(&v16); /*0xffd091ea*/
    v10 = KtiFuncF75((int)__return_address, v17[0], SHIDWORD(v17[0]), v16, SHIDWORD(v16), 1u); /*0xffd09202*/
    DebugPrint(
      (int)__return_address,
      3,
      255,
      255,
      255,
      255,
      255,
      255,
      "\nN%d: STEP Pattern2 Finished. Total Test Time : %ds\n",
      (unsigned __int8)n4,
      v10);
    v11 = &__return_address[48704 * (unsigned __int8)n4 + 258722]; /*0xffd09224*/
    n6_2 = 0; /*0xffd0922b*/
    LOBYTE(n6) = 0; /*0xffd0922d*/
    do /*0xffd0925e*/
    {
      if ( *v11 ) /*0xffd09231*/
        IioTailFunc6120(__return_address, n4, n6, (int)v18); /*0xffd09247*/
      ++n6_2; /*0xffd0924f*/
      v11 += 7688; /*0xffd09251*/
      LOBYTE(n6) = n6_2; /*0xffd09257*/
    }
    while ( n6_2 < 6u ); /*0xffd0925e*/
  }
  return 0; /*0xffd09262*/
}

// Function: IioTailX_FFD0926D @ 0xffd0926d (0xe8 bytes)
// Index: 2253/2560

int __cdecl IioTailX_FFD0926D(
        unsigned __int8 *__return_address,
        int buf,
        unsigned __int8 bufa,
        unsigned __int8 n6,
        unsigned __int8 n2,
        char a6,
        char a7,
        int a8,
        int a9,
        char a10,
        unsigned __int8 n99,
        char a12,
        char n0x55)
{
  int v13; // edi
  char v14; // al
  int v15; // edx
  unsigned __int8 n31; // cl
  int v17; // edx

  v13 = 516 * (n2 + 2 * (n6 + 6 * bufa)); /*0xffd092b4*/
  *(_BYTE *)(v13 + buf) = 1; /*0xffd092c0*/
  v14 = IioTailFunc4399(buf, bufa, n6, n2, a6, a7, a8, a9, a10, n99, a12, n0x55); /*0xffd092c4*/
  v15 = 0; /*0xffd092cc*/
  if ( !v14 ) /*0xffd092d0*/
  {
    n31 = 0; /*0xffd092d6*/
    while ( *(_BYTE *)(v13 + 16 * n31 + buf + 4) != 0xFF ) /*0xffd092e5*/
    {
      if ( n31 == 31 ) /*0xffd092ea*/
        *(_BYTE *)(v13 + buf + 1) = 1; /*0xffd092ec*/
      if ( (unsigned __int8)n0x55 > 0x55u ) /*0xffd092f4*/
        *(_BYTE *)(v13 + buf + 2) = 1; /*0xffd092f6*/
      if ( ++n31 >= 0x20u ) /*0xffd09300*/
        return v15; /*0xffd09300*/
    }
    v17 = v13 + 16 * n31; /*0xffd0930e*/
    *(_BYTE *)(v17 + buf + 4) = a6; /*0xffd09310*/
    *(_BYTE *)(v17 + buf + 5) = a7; /*0xffd09318*/
    *(_DWORD *)(v17 + buf + 8) = a8; /*0xffd09320*/
    *(_BYTE *)(v17 + buf + 14) = a10; /*0xffd09328*/
    *(_BYTE *)(v17 + buf + 15) = n99; /*0xffd09330*/
    *(_WORD *)(v17 + buf + 12) = a9; /*0xffd09336*/
    *(_BYTE *)(v17 + buf + 16) = 1 << *(_BYTE *)(buf + 24769); /*0xffd09343*/
    *(_BYTE *)(v17 + buf + 17) = n0x55; /*0xffd09347*/
    return 1; /*0xffd0934d*/
  }
  return v15; /*0xffd0934e*/
}

// Function: IioTailX_FFD09355 @ 0xffd09355 (0x83 bytes)
// Index: 2254/2560

char __cdecl IioTailX_FFD09355(unsigned __int8 *__return_address, int n2, int n6, int n2_1, unsigned __int8 n2a)
{
  RmtFunc349(__return_address, n2, n6, n2_1, n2a, 0xD1u, 0); /*0xffd09378*/
  RmtFunc349(__return_address, n2, n6, n2_1, n2a, 0x8A2u, 0); /*0xffd0938c*/
  RmtFunc349(__return_address, n2, n6, n2_1, n2a, 0xF3u, 0); /*0xffd093a0*/
  RmtFunc349(__return_address, n2, n6, n2_1, n2a, 0xF8Fu, 0); /*0xffd093b7*/
  return RmtFunc349(__return_address, n2, n6, n2_1, n2a, 0x80u, 0); /*0xffd093d3*/
}

// Function: IioTailX_FFD093D8 @ 0xffd093d8 (0x6b bytes)
// Index: 2255/2560

int __cdecl IioTailX_FFD093D8(int a1, unsigned __int8 a2, unsigned __int8 a3, int a4, int a5, int a6, int a7)
{
  MailBoxFunc902D(a1, a2, a3, 117459772, 4, a5); /*0xffd093ee*/
  MailBoxFunc902D(a1, a2, a3, 117460328, 4, a4); /*0xffd09406*/
  MailBoxFunc902D(a1, a2, a3, 117459788, 4, a7); /*0xffd0941e*/
  return MailBoxFunc902D(a1, a2, a3, 117460344, 4, a6); /*0xffd09441*/
}

// Function: DebugLogPrint_2 @ 0xffd09443 (0x425 bytes)
// Index: 2256/2560

int __cdecl DebugLogPrint_2(unsigned __int8 *n6, int n6a, unsigned __int8 n2, int n16, _BYTE *a5, int n0xA)
{
  unsigned __int8 *n6_1; // esi
  unsigned __int8 v7; // cl
  unsigned __int8 *v8; // edi
  unsigned __int8 v9; // al
  int n2_1; // edi
  unsigned __int8 n6_2; // dl
  int n50462721_1; // ebp
  _BYTE *CpuCount; // edi
  unsigned __int8 n33751041_1; // dl
  int n50332161_2; // eax
  int n50332161_1; // esi
  char n33555201_1; // cl
  int v18; // eax
  int v19; // ecx
  unsigned __int16 i; // di
  int v21; // ecx
  unsigned __int16 j; // di
  int v23; // ecx
  unsigned __int16 k; // di
  int v25; // ecx
  int v26; // ebp
  unsigned __int8 n6_3; // dl
  char v28; // di
  unsigned __int8 n50462721_2; // dl
  _DWORD *v30; // ebp
  int v31; // edi
  char v33; // [esp+2h] [ebp-1C32h]
  unsigned __int8 v34; // [esp+2h] [ebp-1C32h]
  unsigned __int8 n33620736[5]; // [esp+3h] [ebp-1C31h] BYREF
  char v36[4]; // [esp+8h] [ebp-1C2Ch]
  int n50462721; // [esp+Ch] [ebp-1C28h]
  int n33751041; // [esp+10h] [ebp-1C24h]
  int n50332161; // [esp+14h] [ebp-1C20h]
  bool v40; // [esp+1Bh] [ebp-1C19h] BYREF
  int n33555201; // [esp+1Ch] [ebp-1C18h]
  int n131841; // [esp+20h] [ebp-1C14h]
  __int16 v43; // [esp+24h] [ebp-1C10h] BYREF
  int n16973826; // [esp+28h] [ebp-1C0Ch]
  int n50331906[5]; // [esp+2Ch] [ebp-1C08h] BYREF
  unsigned int v46; // [esp+40h] [ebp-1BF4h] BYREF
  int buf[10]; // [esp+44h] [ebp-1BF0h] BYREF
  unsigned __int8 v48; // [esp+6Ch] [ebp-1BC8h]
  int v49; // [esp+6Dh] [ebp-1BC7h]
  unsigned int v50; // [esp+71h] [ebp-1BC3h]
  _BYTE v51[7103]; // [esp+75h] [ebp-1BBFh]

  if ( n2 ) /*0xffd09451*/
  {
    n6_1 = n6; /*0xffd0945a*/
    v33 = AutoGenFuncAE7C((int)n6); /*0xffd09468*/
    n16973826 = *(_DWORD *)(n6 + 1489); /*0xffd09472*/
    *(_DWORD *)(n6 + 1489) = n16973826 & 0xFFFFFFF8; /*0xffd09479*/
    memset_save_flags(buf, 0, 0x1BF0u); /*0xffd0948d*/
    GetSocketInfo((int)n6, n6a); /*0xffd0949b*/
    IioDdrTimeoutCfg(n6, buf); /*0xffd094a7*/
    n33555201 = (unsigned __int8)n6a; /*0xffd094b5*/
    DebugPrint( /*0xffd094fb*/
      (int)n6_1,
      2,
      n6a,
      255,
      255,
      255,
      255,
      255,
      "SmartTest-(v%X.%X.%X), RetryCount=%d\n tWR = %d tCK\n tREFi = 0x%X tCK\n WDBMask = 0x%X\n DDR4-%04d\n\n",
      2,
      8,
      5,
      n0xA,
      v48,
      (unsigned __int16)v49,
      30,
      2 * *(unsigned __int16 *)&n6_1[48704 * (unsigned __int8)n6a + 258695]);
    v7 = 0; /*0xffd09500*/
    v36[0] = 0; /*0xffd09505*/
    if ( v33 ) /*0xffd0950d*/
    {
      v8 = &n6[50813 * (unsigned __int8)n6a + 10189]; /*0xffd0951b*/
      v9 = v33; /*0xffd0951d*/
      do /*0xffd0954c*/
      {
        if ( *v8 ) /*0xffd09521*/
        {
          AutoGenFuncF054(n6a, (int)n6, n6a, v36[0], 1, &v40); /*0xffd09533*/
          v7 = v36[0]; /*0xffd09538*/
          v9 = v33; /*0xffd0953f*/
        }
        ++v7; /*0xffd09543*/
        ++v8; /*0xffd09545*/
        v36[0] = v7; /*0xffd09546*/
      }
      while ( v7 < v9 ); /*0xffd0954c*/
    }
    n2_1 = n2; /*0xffd0954e*/
    n6_2 = 0; /*0xffd09556*/
    n50462721_1 = 0; /*0xffd09558*/
    n33620736[1] = 0; /*0xffd0955a*/
    *(_DWORD *)v36 = n2; /*0xffd0955e*/
    n50462721 = 0; /*0xffd09562*/
    do /*0xffd09723*/
    {
      if ( ((1 << n50462721_1) & n2_1) != 0 ) /*0xffd0956f*/
      {
        ProcCommonFunc2106(n6_1, n6a, *(int *)&n33620736[1], 0, &v46); /*0xffd09582*/
        CpuCount = (_BYTE *)GetCpuCount((int)n6_1, n6a, n33620736[1]); /*0xffd09592*/
        n33751041_1 = 0; /*0xffd09594*/
        n131841 = (int)CpuCount; /*0xffd09599*/
        n50332161_2 = 0; /*0xffd0959d*/
        LOBYTE(n33751041) = 0; /*0xffd0959f*/
        n50332161 = 0; /*0xffd095a3*/
        do /*0xffd09707*/
        {
          if ( *CpuCount ) /*0xffd095a7*/
          {
            n50332161_1 = n50332161; /*0xffd095b0*/
            n33555201_1 = n33555201; /*0xffd095b7*/
            *((_BYTE *)&buf[1] + 6 * n50462721_1 + 3 * n50332161_2) = -1; /*0xffd095be*/
            v18 = 1 << n33555201_1; /*0xffd095c6*/
            v19 = n50332161_1 + 2 * n50462721_1; /*0xffd095c8*/
            n6_1 = n6; /*0xffd095cb*/
            if ( ((unsigned __int8)v18 & v51[v19]) == 0 ) /*0xffd095d9*/
            {
              v34 = 0; /*0xffd095e5*/
              memset_save_flags(n50331906, 0, 0x12u); /*0xffd095ed*/
              for ( i = 0; i < 8u; ++i ) /*0xffd095f5*/
              {
                KtiFunc27D8(n6, n6a, *(int *)&n33620736[1], n33751041, i + 60, n33620736); /*0xffd0960d*/
                v21 = v34++; /*0xffd0961d*/
                *((_BYTE *)n50331906 + v21) = n33620736[0]; /*0xffd09627*/
              }
              for ( j = 0; j < 8u; ++j ) /*0xffd09630*/
              {
                KtiFunc27D8(n6, n6a, *(int *)&n33620736[1], n33751041, j + 70, n33620736); /*0xffd09645*/
                v23 = v34++; /*0xffd09655*/
                *((_BYTE *)n50331906 + v23) = n33620736[0]; /*0xffd09661*/
              }
              for ( k = 0; k < 2u; ++k ) /*0xffd0966d*/
              {
                KtiFunc27D8(n6, n6a, *(int *)&n33620736[1], n33751041, k + 68, n33620736); /*0xffd09683*/
                v25 = v34++; /*0xffd09693*/
                *((_BYTE *)n50331906 + v25) = n33620736[0]; /*0xffd0969d*/
              }
              IioTailCommandInit(n6, buf, n6a, n33620736[1], n33751041, (unsigned __int8 *)n50331906); /*0xffd096ba*/
              n50462721_1 = n50462721; /*0xffd096c6*/
              CpuCount = (_BYTE *)n131841; /*0xffd096ce*/
              n33751041_1 = n33751041; /*0xffd096e0*/
              v51[2 * n50462721 + n50332161] |= 1 << n33555201; /*0xffd096e4*/
            }
            n50332161_2 = n50332161; /*0xffd096eb*/
          }
          ++n33751041_1; /*0xffd096ef*/
          CpuCount += 1379; /*0xffd096f1*/
          ++n50332161_2; /*0xffd096f7*/
          LOBYTE(n33751041) = n33751041_1; /*0xffd096f8*/
          n50332161 = n50332161_2; /*0xffd096fc*/
          n131841 = (int)CpuCount; /*0xffd09700*/
        }
        while ( n33751041_1 < 2u ); /*0xffd09707*/
        n6_2 = n33620736[1]; /*0xffd0970d*/
        n2_1 = *(_DWORD *)v36; /*0xffd09711*/
      }
      ++n6_2; /*0xffd09715*/
      ++n50462721_1; /*0xffd09717*/
      n33620736[1] = n6_2; /*0xffd09718*/
      n50462721 = n50462721_1; /*0xffd0971c*/
    }
    while ( n6_2 < 6u ); /*0xffd09723*/
    if ( n6_1[1043] <= 2u && n0xA == 1 ) /*0xffd09743*/
      DebugLogPrint_20(n6_1, buf, n6a, n2_1); /*0xffd0974d*/
    KtiFunc4541((int)n6_1, 0xB9u, 2u, 0); /*0xffd09761*/
    v26 = *(_DWORD *)v36; /*0xffd09766*/
    n6_3 = 0; /*0xffd0976a*/
    n33620736[1] = 0; /*0xffd0976f*/
    v28 = 0; /*0xffd09773*/
    do /*0xffd097a8*/
    {
      if ( ((1 << v28) & v26) != 0 ) /*0xffd0977e*/
      {
        MailBoxFuncA389(n6_1, n6a, *(int *)&n33620736[1], v49, &v43); /*0xffd09792*/
        n6_3 = n33620736[1]; /*0xffd09797*/
      }
      ++n6_3; /*0xffd0979e*/
      ++v28; /*0xffd097a0*/
      n33620736[1] = n6_3; /*0xffd097a1*/
    }
    while ( n6_3 < 6u ); /*0xffd097a8*/
    n50462721_2 = 0; /*0xffd097aa*/
    v30 = &unk_FFD5CB3C; /*0xffd097ac*/
    LOBYTE(n50462721) = 0; /*0xffd097b1*/
    v31 = 0; /*0xffd097b5*/
    do /*0xffd09826*/
    {
      if ( ((v50 >> v31) & 1) != 0 && *v30 ) /*0xffd097c6*/
      {
        IioTailFunc9868(n6_1, (int)buf, n6a); /*0xffd097d3*/
        DebugLogPrint_11(n6_1, buf, n6a, *(int *)v36, n50462721); /*0xffd097e7*/
        DebugPrint( /*0xffd0980d*/
          (int)n6_1,
          2,
          n6a,
          255,
          255,
          255,
          255,
          255,
          "SmartTest-(v%X.%X.%X, E:%d), Stage %d \r\n",
          2,
          8,
          5,
          buf[0],
          v31);
        n50462721_2 = n50462721; /*0xffd09812*/
      }
      ++n50462721_2; /*0xffd09819*/
      v30 += 4; /*0xffd0981b*/
      ++v31; /*0xffd0981e*/
      LOBYTE(n50462721) = n50462721_2; /*0xffd0981f*/
    }
    while ( n50462721_2 < 0x20u ); /*0xffd09826*/
    KtiFunc4541((int)n6_1, 0xB9u, 5u, 0); /*0xffd09832*/
    DebugLogPrint_15(n6_1, buf, n6a, *(int *)v36, a5); /*0xffd09849*/
    *(_DWORD *)(n6_1 + 1489) = n16973826; /*0xffd09855*/
  }
  return 0; /*0xffd09861*/
}

// Function: IioTailFunc9868 @ 0xffd09868 (0x11e bytes)
// Index: 2257/2560

int __cdecl IioTailFunc9868(_BYTE *src_, int buf, int n6a)
{
  _BYTE *SocketInfo; // edi
  unsigned __int8 n6_1; // bl
  int v5; // eax
  int CpuCount; // eax
  char n2; // bh
  _BYTE *CpuCount_1; // ebp
  int v9; // eax
  int v10; // ecx
  int v11; // edx
  unsigned __int8 v12; // bl
  int v13; // eax
  int v15; // [esp+14h] [ebp-18h]
  int n6; // [esp+18h] [ebp-14h]
  int v17; // [esp+1Ch] [ebp-10h]
  int v18; // [esp+20h] [ebp-Ch] BYREF
  char v19[4]; // [esp+24h] [ebp-8h]
  _BYTE *SocketInfo_1; // [esp+28h] [ebp-4h]

  SocketInfo = (_BYTE *)GetSocketInfo((int)src_, n6a); /*0xffd09880*/
  n6_1 = 0; /*0xffd09882*/
  SocketInfo_1 = SocketInfo; /*0xffd09884*/
  v5 = 0; /*0xffd09889*/
  LOBYTE(n6) = 0; /*0xffd0988b*/
  v17 = 0; /*0xffd09890*/
  do /*0xffd09976*/
  {
    if ( *SocketInfo ) /*0xffd09894*/
    {
      CpuCount = GetCpuCount((int)src_, n6a, n6); /*0xffd098a9*/
      n2 = 0; /*0xffd098b2*/
      v19[0] = 0; /*0xffd098b7*/
      CpuCount_1 = (_BYTE *)CpuCount; /*0xffd098bb*/
      v9 = 0; /*0xffd098bd*/
      v15 = 0; /*0xffd098bf*/
      do /*0xffd0994a*/
      {
        if ( *CpuCount_1 ) /*0xffd098c3*/
        {
          AutoGenFunc6FF0(src_, n6a, n6, v19[0], &v18); /*0xffd098de*/
          v10 = (unsigned __int16)((__int16)v18 / 2); /*0xffd098f0*/
          v18 = v10; /*0xffd098f9*/
          v11 = 3 * (v17 + v15); /*0xffd098fd*/
          if ( (unsigned __int8)v10 < *(_BYTE *)(v11 + buf + 4) ) /*0xffd09904*/
            *(_BYTE *)(v11 + buf + 4) = v10; /*0xffd09906*/
          if ( (unsigned __int8)v10 > *(_BYTE *)(v11 + buf + 5) ) /*0xffd0990e*/
            *(_BYTE *)(v11 + buf + 5) = v10; /*0xffd09910*/
          v12 = *(_BYTE *)(v11 + buf + 5); /*0xffd09914*/
          v13 = 3 * (v17 + v15 + 2); /*0xffd0991b*/
          *(_BYTE *)(v13 + buf) = v10; /*0xffd0991e*/
          if ( (unsigned __int8)v10 > v12 || (unsigned __int8)v10 < *(_BYTE *)(v11 + buf + 4) ) /*0xffd09929*/
            *(_BYTE *)(v13 + buf) = *(_BYTE *)(v11 + buf + 5); /*0xffd0992f*/
          v9 = v15; /*0xffd09932*/
        }
        ++n2; /*0xffd09936*/
        CpuCount_1 += 1379; /*0xffd09938*/
        ++v9; /*0xffd0993e*/
        v19[0] = n2; /*0xffd0993f*/
        v15 = v9; /*0xffd09943*/
      }
      while ( (unsigned __int8)n2 < 2u ); /*0xffd0994a*/
      n6_1 = n6; /*0xffd09950*/
      SocketInfo = SocketInfo_1; /*0xffd09954*/
      v5 = v17; /*0xffd09958*/
    }
    ++n6_1; /*0xffd0995c*/
    SocketInfo += 7688; /*0xffd0995e*/
    v5 += 2; /*0xffd09964*/
    LOBYTE(n6) = n6_1; /*0xffd09967*/
    SocketInfo_1 = SocketInfo; /*0xffd0996b*/
    v17 = v5; /*0xffd0996f*/
  }
  while ( n6_1 < 6u ); /*0xffd09976*/
  return 0; /*0xffd0997c*/
}

// Function: IioTailFunc9986 @ 0xffd09986 (0x172 bytes)
// Index: 2258/2560

int __cdecl IioTailFunc9986(int n6, int buf, unsigned __int8 n6a, int n2)
{
  int v4; // edi
  unsigned __int8 n6_2; // bl
  int v6; // ebp
  int CpuCount; // eax
  unsigned __int8 n2_1; // cl
  int v9; // edx
  int v10; // esi
  unsigned __int8 n5; // al
  bool v12; // zf
  unsigned __int8 v13; // bh
  int v14; // edi
  int n6_1; // eax
  bool v16; // al
  int v17; // ecx
  int v18; // eax
  int v20; // [esp+10h] [ebp-18h]
  int v21; // [esp+14h] [ebp-14h]
  unsigned __int8 n2_2; // [esp+18h] [ebp-10h]
  unsigned __int8 n6_3; // [esp+1Ch] [ebp-Ch]
  unsigned __int8 v24; // [esp+20h] [ebp-8h]

  v4 = 0; /*0xffd0998d*/
  n6_2 = 0; /*0xffd0998f*/
  v21 = 0; /*0xffd09991*/
  v6 = 0; /*0xffd09995*/
  n6_3 = 0; /*0xffd09997*/
  do /*0xffd09ad9*/
  {
    if ( ((1 << v6) & n2) != 0 ) /*0xffd099a8*/
    {
      CpuCount = GetCpuCount(n6, n6a, n6_3); /*0xffd099ba*/
      n2_1 = 0; /*0xffd099bf*/
      v9 = 0; /*0xffd099c4*/
      n2_2 = 0; /*0xffd099c6*/
      v20 = 0; /*0xffd099ca*/
      v10 = CpuCount + 147; /*0xffd099ce*/
      do /*0xffd099d4*/
      {
        if ( *(_BYTE *)(v10 - 40) || !*(_BYTE *)(v10 - 147) || *(_WORD *)v10 != 0xAD00 ) /*0xffd099f3*/
          goto LABEL_24; /*0xffd099f3*/
        n5 = *(_BYTE *)(v10 - 29); /*0xffd099fd*/
        if ( *(_BYTE *)(v10 + 40) == 32 ) /*0xffd09a00*/
        {
          if ( n5 < 5u ) /*0xffd09a04*/
            goto LABEL_24; /*0xffd09a04*/
          if ( n5 != 5 ) /*0xffd09a0a*/
            goto LABEL_15; /*0xffd09a0a*/
          v12 = *(_BYTE *)(v10 + 31) == 77; /*0xffd09a0c*/
        }
        else
        {
          if ( n5 < 5u ) /*0xffd09a14*/
            goto LABEL_24; /*0xffd09a14*/
          if ( n5 != 5 ) /*0xffd09a1a*/
            goto LABEL_15; /*0xffd09a1a*/
          v12 = *(_BYTE *)(v10 + 33) == 77; /*0xffd09a1c*/
        }
        if ( !v12 ) /*0xffd09a20*/
        {
LABEL_15:
          v13 = 0; /*0xffd09a26*/
          v24 = 0; /*0xffd09a39*/
          v14 = v21; /*0xffd09a44*/
          if ( *(_BYTE *)(50813 * n6a + n6 + 10194) ) /*0xffd09a3d*/
          {
            n6_1 = n6; /*0xffd09a4c*/
            do /*0xffd09aa6*/
            {
              v16 = KtiFunc89E9(n6_1, n6a, n6_3, n2_2, v24, 0); /*0xffd09a63*/
              v9 = v20; /*0xffd09a68*/
              if ( !v16 ) /*0xffd09a71*/
              {
                v17 = v20 + 2 * v6; /*0xffd09a76*/
                v18 = buf + v13; /*0xffd09a79*/
                if ( *(_BYTE *)(v10 - 43) ) /*0xffd09a7d*/
                  *(_BYTE *)(v18 + 4 * v17 + 6974) = 4; /*0xffd09a83*/
                else
                  *(_BYTE *)(v18 + 4 * v17 + 6974) = 2; /*0xffd09a8d*/
              }
              n6_1 = n6; /*0xffd09a95*/
              v24 = ++v13; /*0xffd09a9b*/
            }
            while ( v13 < *(_BYTE *)(50813 * n6a + n6 + 10194) ); /*0xffd09aa6*/
            v14 = v21; /*0xffd09aa8*/
            n2_1 = n2_2; /*0xffd09aac*/
          }
          v4 = v14 + 1; /*0xffd09ab0*/
          v21 = v4; /*0xffd09ab1*/
        }
LABEL_24:
        ++n2_1; /*0xffd09ab5*/
        v10 += 1379; /*0xffd09ab7*/
        ++v9; /*0xffd09abd*/
        n2_2 = n2_1; /*0xffd09abe*/
        v20 = v9; /*0xffd09ac2*/
      }
      while ( n2_1 < 2u ); /*0xffd099d4*/
    }
    ++n6_2; /*0xffd09acf*/
    ++v6; /*0xffd09ad1*/
    n6_3 = n6_2; /*0xffd09ad2*/
  }
  while ( n6_2 < 6u ); /*0xffd09ad9*/
  *(_BYTE *)(buf + 6973) = v4 != 0; /*0xffd09ae8*/
  return v4; /*0xffd09af0*/
}

// Function: IioTailFunc9AF8 @ 0xffd09af8 (0x114 bytes)
// Index: 2259/2560

int __cdecl IioTailFunc9AF8(
        unsigned __int8 *__return_address,
        int a2,
        int n4,
        int n6,
        int a5,
        int n2,
        unsigned __int8 i)
{
  unsigned __int8 j; // al
  unsigned int v8; // eax

  LOBYTE(n2) = n2 & 3; /*0xffd09af8*/
  if ( *(_WORD *)(1379 * (unsigned __int8)a5 + GetCpuCount((int)__return_address, n4, n6) + 147) == 0xAD00 ) /*0xffd09b31*/
  {
    DdrTrainFunc7080(__return_address, n4, n6, 0xFFu); /*0xffd09b3f*/
    if ( !__return_address[257313] && __return_address[48704 * (unsigned __int8)n4 + 258703] ) /*0xffd09b59*/
      RmtFunc765((int)__return_address, n4, n6, a5, n2, 0x18u, 0xB0u); /*0xffd09b75*/
    for ( j = i; j < 0x40u; i = j ) /*0xffd09b83*/
    {
      v8 = *(unsigned __int16 *)(a2 + 2 * j + 7022); /*0xffd09b8d*/
      if ( !(_WORD)v8 ) /*0xffd09b98*/
        break; /*0xffd09b98*/
      if ( (v8 & 0x80u) == 0 ) /*0xffd09b9c*/
        break; /*0xffd09b9c*/
      RmtFunc349(__return_address, n4, n6, a5, n2, v8, 0); /*0xffd09bac*/
      j = i + 1; /*0xffd09bb8*/
    }
    if ( !__return_address[257313] && __return_address[48704 * (unsigned __int8)n4 + 258703] ) /*0xffd09bd5*/
      RmtFunc765((int)__return_address, n4, n6, a5, n2, 0, 0xB0u); /*0xffd09bf1*/
    DdrTrainFunc7080(__return_address, n4, n6, 0); /*0xffd09bfe*/
  }
  return 0; /*0xffd09c06*/
}

// Function: IioTailFunc9C0C @ 0xffd09c0c (0x8b bytes)
// Index: 2260/2560

int __cdecl IioTailFunc9C0C(unsigned __int8 *__return_address, unsigned __int8 buf, int n2)
{
  int n6; // ebx
  char v4; // si
  char v6; // [esp+8h] [ebp-8h]
  int v7; // [esp+Ch] [ebp-4h]

  n6 = 0; /*0xffd09c12*/
  LOBYTE(v7) = 0; /*0xffd09c15*/
  v4 = 0; /*0xffd09c18*/
  do /*0xffd09c8d*/
  {
    if ( ((1 << v4) & n2) != 0 ) /*0xffd09c24*/
    {
      MiscIoCheck(__return_address, buf, v7, 0xB004548u, -65535); /*0xffd09c39*/
      v6 = DdrTrainFunc45AB((int)__return_address, buf, v7); /*0xffd09c51*/
      if ( (MailBoxFunc8E0B(n6, (int)__return_address, buf, v6, 117459068) & 4) == 0 ) /*0xffd09c67*/
        MiscIoCheck(__return_address, buf, v7, 0xB004554u, 255); /*0xffd09c7c*/
    }
    LOBYTE(n6) = n6 + 1; /*0xffd09c84*/
    ++v4; /*0xffd09c86*/
    LOBYTE(v7) = n6; /*0xffd09c87*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd09c8d*/
  return 0; /*0xffd09c8f*/
}

// Function: IioTailFunc9C97 @ 0xffd09c97 (0x3a5 bytes)
// Index: 2261/2560

char __cdecl IioTailFunc9C97(
        unsigned __int8 *__return_address,
        int buf,
        unsigned __int8 n4,
        int n2,
        char a5,
        char n27,
        char a7,
        _BYTE *a8,
        char a9)
{
  unsigned int v10; // esi
  unsigned __int8 n6; // dl
  int v12; // ebp
  int CpuCount; // ebx
  int v14; // eax
  int v15; // ebp
  char n68; // cl
  int v17; // eax
  int bufa_1; // edx
  int bufa_4; // edi
  char n5; // al
  int v21; // eax
  char v22; // al
  int v23; // edi
  int v24; // ecx
  int v25; // eax
  char n0x20; // cl
  char v27; // ch
  char v28; // bl
  _BYTE *v29; // esi
  char v30; // bp
  int v31; // eax
  char v32; // bl
  int v33; // eax
  bool v34; // zf
  int bufa_5; // eax
  char v36; // [esp+2h] [ebp-2Ah]
  char v37; // [esp+3h] [ebp-29h]
  int n6_1; // [esp+4h] [ebp-28h]
  int bufa_8; // [esp+8h] [ebp-24h]
  int bufa_2; // [esp+Ch] [ebp-20h]
  int bufa_3; // [esp+10h] [ebp-1Ch]
  int bufa_6; // [esp+14h] [ebp-18h]
  int v43; // [esp+18h] [ebp-14h]
  unsigned int v44; // [esp+1Ch] [ebp-10h]
  int v45; // [esp+20h] [ebp-Ch]
  int bufa; // [esp+24h] [ebp-8h] BYREF
  int bufa_7; // [esp+28h] [ebp-4h]
  int v48; // [esp+50h] [ebp+24h]
  char n0x20_1; // [esp+50h] [ebp+24h]
  char i; // [esp+50h] [ebp+24h]

  v36 = 0; /*0xffd09c9f*/
  if ( !a9 ) /*0xffd09ca4*/
    return 0; /*0xffd09ca8*/
  memset_save_flags(&bufa, 0, 8u); /*0xffd09cba*/
  v10 = v44; /*0xffd09cbf*/
  n6 = 0; /*0xffd09cc3*/
  LOBYTE(n6_1) = 0; /*0xffd09cc8*/
  v12 = 0; /*0xffd09ccc*/
  v43 = 0; /*0xffd09cce*/
  do
  {
    if ( ((1 << v12) & n2) == 0 ) /*0xffd09cdd*/
      goto LABEL_48; /*0xffd09cdd*/
    CpuCount = GetCpuCount((int)__return_address, n4, n6_1); /*0xffd09cf8*/
    v14 = (unsigned __int8)a8[6 * (unsigned __int8)a5 + v12]; /*0xffd09d0e*/
    v15 = 1379 * v14; /*0xffd09d11*/
    v48 = v14; /*0xffd09d17*/
    if ( *(_BYTE *)(CpuCount + 1379 * v14 + 187) == 32 ) /*0xffd09d23*/
      n68 = *(_BYTE *)(CpuCount + v15 + 178); /*0xffd09d25*/
    else
      n68 = *(_BYTE *)(CpuCount + v15 + 180); /*0xffd09d2e*/
    if ( (unsigned __int8)n27 < 0x1Bu )
    {
      n5 = *(_BYTE *)(CpuCount + v15 + 118); /*0xffd09d5f*/
      if ( n5 == 6 )
      {
        if ( *(_BYTE *)(CpuCount + v15 + 104) )
        {
          if ( (unsigned int)(unsigned __int8)n27 + 9 < 0x20 ) /*0xffd09d98*/
          {
            v23 = 4 * (unsigned __int8)n27; /*0xffd09d9a*/
            bufa_1 = dword_FFD5CBC4[v23]; /*0xffd09d9d*/
            v22 = byte_FFD5CBC8[v23 * 4]; /*0xffd09da3*/
            bufa_4 = dword_FFD5CBD0[v23]; /*0xffd09da9*/
LABEL_21:
            v36 = v22; /*0xffd09df3*/
            goto LABEL_22; /*0xffd09df3*/
          }
          AssertPrint(
            __return_address,
            255,
            (int)"\n\nRC_ASSERT! %s: %u   %s ",
            "e:\\hs\\PurleySktPkg\\Library\\ProcMemInit\\Chip\\Mem\\SkhynixSmartTest_AMT.c",
            861,
            "FALSE");
          ProcMemInitCheck((int)__return_address, 242, 92); /*0xffd09dd5*/
          goto LABEL_24; /*0xffd09dd5*/
        }
      }
      else if ( n5 != 5 || n68 != 68 ) /*0xffd09d6e*/
      {
        v21 = 4 * (unsigned __int8)n27; /*0xffd09d73*/
        bufa_1 = dword_FFD5CB34[v21]; /*0xffd09d76*/
        v22 = byte_FFD5CB38[v21 * 4]; /*0xffd09d7c*/
LABEL_20:
        bufa_4 = bufa_1; /*0xffd09df1*/
        goto LABEL_21; /*0xffd09df1*/
      }
      if ( (unsigned int)(unsigned __int8)n27 + 18 < 0x20 ) /*0xffd09de0*/
      {
        v24 = 4 * (unsigned __int8)n27; /*0xffd09de2*/
        bufa_1 = dword_FFD5CC54[v24]; /*0xffd09de5*/
        v22 = byte_FFD5CC58[v24 * 4]; /*0xffd09deb*/
        goto LABEL_20; /*0xffd09deb*/
      }
      AssertPrint(
        __return_address,
        255,
        (int)"\n\nRC_ASSERT! %s: %u   %s ",
        "e:\\hs\\PurleySktPkg\\Library\\ProcMemInit\\Chip\\Mem\\SkhynixSmartTest_AMT.c",
        869,
        "FALSE");
      ProcMemInitCheck((int)__return_address, 242, 93); /*0xffd09e2e*/
LABEL_24:
      bufa_1 = bufa; /*0xffd09e33*/
      bufa_4 = bufa_7; /*0xffd09e3a*/
      goto LABEL_25; /*0xffd09e3a*/
    }
    v17 = 4 * (unsigned __int8)n27; /*0xffd09d41*/
    bufa_1 = dword_FFD5CB34[v17]; /*0xffd09d4a*/
    bufa_4 = dword_FFD5CB40[v17]; /*0xffd09d50*/
    v36 = byte_FFD5CB38[v17 * 4]; /*0xffd09d56*/
LABEL_22:
    bufa = bufa_1; /*0xffd09df7*/
    bufa_7 = bufa_4; /*0xffd09dfb*/
LABEL_25:
    if ( a7 ) /*0xffd09e43*/
    {
      bufa_1 = ~bufa_1; /*0xffd09e45*/
      bufa_4 = ~bufa_4; /*0xffd09e47*/
      bufa = bufa_1; /*0xffd09e49*/
      bufa_7 = bufa_4; /*0xffd09e4d*/
    }
    v25 = v48 + 2 * v43; /*0xffd09e59*/
    if ( *(_BYTE *)(v25 + buf + 49) ) /*0xffd09e60*/
    {
      n0x20 = 0; /*0xffd09e6f*/
      bufa_2 = 0; /*0xffd09e74*/
      bufa_3 = 0; /*0xffd09e78*/
      bufa_8 = 0; /*0xffd09e7c*/
      bufa_6 = 0; /*0xffd09e80*/
      v27 = *(_BYTE *)(CpuCount + v15 + 104); /*0xffd09e84*/
      v28 = 0; /*0xffd09e8f*/
      n0x20_1 = 0; /*0xffd09e97*/
      v37 = v27; /*0xffd09e9b*/
      v29 = (_BYTE *)(72 * ((a5 & 1) + 8 * v25) + buf + 93); /*0xffd09e9f*/
      do /*0xffd09f1f*/
      {
        v30 = n0x20 & (4 * (v27 != 0) - 8); /*0xffd09eb7*/
        v45 = 1 << (v30 + *(v29 - 32)); /*0xffd09ec0*/
        if ( (v45 & bufa_1) != 0 ) /*0xffd09ec6*/
          bufa_2 |= 1 << v28; /*0xffd09ecf*/
        v31 = 1 << (v30 + *v29); /*0xffd09edb*/
        if ( (v31 & bufa_1) != 0 ) /*0xffd09edf*/
          bufa_3 |= 1 << v28; /*0xffd09ee8*/
        if ( (bufa_4 & v45) != 0 ) /*0xffd09ef0*/
          bufa_8 |= 1 << v28; /*0xffd09ef9*/
        if ( (v31 & bufa_4) != 0 ) /*0xffd09eff*/
          bufa_6 |= 1 << v28; /*0xffd09f08*/
        v27 = v37; /*0xffd09f10*/
        n0x20 = n0x20_1 + 1; /*0xffd09f14*/
        ++v28; /*0xffd09f16*/
        n0x20_1 = n0x20; /*0xffd09f17*/
        ++v29; /*0xffd09f1b*/
      }
      while ( (unsigned __int8)n0x20 < 0x20u ); /*0xffd09f1f*/
      v10 = v44; /*0xffd09f21*/
      bufa_4 = bufa_6; /*0xffd09f25*/
    }
    else
    {
      bufa_2 = bufa_1; /*0xffd09f2b*/
      bufa_3 = bufa_1; /*0xffd09f2f*/
      bufa_8 = bufa_4; /*0xffd09f33*/
      bufa_6 = bufa_4; /*0xffd09f37*/
    }
    v32 = 0; /*0xffd09f3b*/
    MiscIoCheck(__return_address, n4, n6_1, 0xB0044A0u, 0); /*0xffd09f4f*/
    MiscIoCheck(__return_address, n4, n6_1, 0xB004500u, 0); /*0xffd09f66*/
    for ( i = 0; (unsigned __int8)i < 8u; ++i ) /*0xffd09f73*/
    {
      v10 = ((v32 & 7) << 6) | v10 & 0xFFFFFE00; /*0xffd09f85*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB014530u, v10); /*0xffd09f99*/
      v33 = 1 << v32; /*0xffd09fa6*/
      if ( (i & 1) != 0 ) /*0xffd09fad*/
      {
        v34 = (unsigned __int8)(v33 & v36) == 0; /*0xffd09faf*/
        bufa_5 = bufa_8; /*0xffd09fb1*/
      }
      else
      {
        bufa_4 = bufa_3; /*0xffd09fb7*/
        v34 = (unsigned __int8)(v33 & v36) == 0; /*0xffd09fbb*/
        bufa_5 = bufa_2; /*0xffd09fbd*/
      }
      if ( !v34 ) /*0xffd09fc1*/
      {
        bufa_4 = ~bufa_4; /*0xffd09fc3*/
        bufa_5 = ~bufa_5; /*0xffd09fc5*/
      }
      MiscIoCheck(__return_address, n4, n6_1, 0xB014550u, bufa_5); /*0xffd09fd9*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB014554u, bufa_4); /*0xffd09ff0*/
      bufa_4 = bufa_6; /*0xffd09fff*/
      ++v32; /*0xffd0a005*/
    }
    n6 = n6_1; /*0xffd0a012*/
    v12 = v43; /*0xffd0a016*/
    v44 = v10; /*0xffd0a01a*/
LABEL_48:
    ++n6; /*0xffd0a01e*/
    ++v12; /*0xffd0a020*/
    LOBYTE(n6_1) = n6; /*0xffd0a021*/
    v43 = v12; /*0xffd0a025*/
  }
  while ( n6 < 6u );
  return 1; /*0xffd0a038*/
}

// Function: DebugLogPrint_11 @ 0xffd0a03c (0x4ce bytes)
// Index: 2262/2560

int __cdecl DebugLogPrint_11(unsigned __int8 *n6, _DWORD *buf, int n6a, int n2, char n0x20)
{
  int SocketInfo; // esi
  _BYTE *v6; // edx
  unsigned __int8 p_n8_1; // al
  int n2_1; // esi
  int v9; // eax
  char *v10; // ecx
  int v11; // ebp
  int CpuCount; // eax
  int v13; // ecx
  char n77; // dl
  unsigned __int8 n5; // al
  _DWORD *buf_7; // ebp
  char v18; // [esp+12h] [ebp-14Eh] BYREF
  unsigned __int8 n3[4]; // [esp+13h] [ebp-14Dh]
  char v20[4]; // [esp+17h] [ebp-149h]
  char v21; // [esp+1Bh] [ebp-145h] BYREF
  int p_n8; // [esp+1Ch] [ebp-144h] BYREF
  int n6_1; // [esp+20h] [ebp-140h]
  _BYTE *v24; // [esp+24h] [ebp-13Ch]
  unsigned __int8 *v25; // [esp+28h] [ebp-138h]
  char n4[4]; // [esp+2Ch] [ebp-134h]
  int v27; // [esp+30h] [ebp-130h]
  char *v28; // [esp+34h] [ebp-12Ch]
  int buf_6[2]; // [esp+38h] [ebp-128h] BYREF
  _BYTE buf_4[48]; // [esp+40h] [ebp-120h] BYREF
  _BYTE buf_5[48]; // [esp+70h] [ebp-F0h] BYREF
  _BYTE buf_1[48]; // [esp+A0h] [ebp-C0h] BYREF
  int buf_3[12]; // [esp+D0h] [ebp-90h] BYREF
  int buf_2[12]; // [esp+100h] [ebp-60h] BYREF
  _BYTE bufa[48]; // [esp+130h] [ebp-30h] BYREF

  LOBYTE(p_n8) = 0; /*0xffd0a055*/
  v18 = 0; /*0xffd0a059*/
  memset_save_flags(bufa, 0, 0x30u); /*0xffd0a05d*/
  memset_save_flags(buf_1, 0, 0x30u); /*0xffd0a06c*/
  memset_save_flags(buf_2, 0, 0x30u); /*0xffd0a07b*/
  memset_save_flags(buf_3, 0, 0x30u); /*0xffd0a08a*/
  memset_save_flags(buf_4, 0, 0x30u); /*0xffd0a096*/
  memset_save_flags(buf_5, 0, 0x30u); /*0xffd0a0a5*/
  memset_save_flags(buf_6, 0, 8u); /*0xffd0a0b5*/
  n4[0] = *((_BYTE *)buf + 6973) == 0 ? 0 : 4;
  SocketInfo = GetSocketInfo((int)n6, n6a); /*0xffd0a0e7*/
  AutoGenFunc45F4(n6, n6a, bufa, buf_1, buf_2, buf_3, buf_4, &p_n8, &v18, buf_5, 16); /*0xffd0a124*/
  if ( (unsigned __int8)p_n8 >= 8u ) /*0xffd0a131*/
    LOBYTE(p_n8) = 7; /*0xffd0a133*/
  v6 = (_BYTE *)(SocketInfo + 6262); /*0xffd0a138*/
  v20[0] = 0; /*0xffd0a13e*/
  v27 = SocketInfo + 6262; /*0xffd0a143*/
  do /*0xffd0a4e5*/
  {
    p_n8_1 = 0; /*0xffd0a147*/
    n3[0] = 0; /*0xffd0a149*/
    do /*0xffd0a4d1*/
    {
      n2_1 = n2; /*0xffd0a14d*/
      v9 = 6 * p_n8_1; /*0xffd0a15e*/
      LOBYTE(n6_1) = 0; /*0xffd0a161*/
      v24 = v6; /*0xffd0a166*/
      v10 = (char *)buf_3 + v9; /*0xffd0a16a*/
      v11 = 0; /*0xffd0a16c*/
      v28 = (char *)buf_3 + v9; /*0xffd0a16e*/
      v25 = &buf_4[v9]; /*0xffd0a176*/
      do /*0xffd0a272*/
      {
        n2_1 &= ~((v10[v11] == 0) << v11); /*0xffd0a190*/
        if ( ProcCommonFunc24FA((int)n6, n6a, n6_1, 0) && !*v24 && v20[0] ) /*0xffd0a1ac*/
          n2_1 &= ~(1 << v11); /*0xffd0a1ae*/
        CpuCount = GetCpuCount((int)n6, n6a, n6_1); /*0xffd0a1b7*/
        v13 = 1379 * *v25; /*0xffd0a1cd*/
        if ( *(_WORD *)(v13 + CpuCount + 142) == 0xAD00 ) /*0xffd0a1db*/
        {
          if ( *(_BYTE *)(v13 + CpuCount + 187) == 32 ) /*0xffd0a1ea*/
            n77 = *(_BYTE *)(v13 + CpuCount + 178); /*0xffd0a1ec*/
          else
            n77 = *(_BYTE *)(v13 + CpuCount + 180); /*0xffd0a1f5*/
          n5 = *(_BYTE *)(v13 + CpuCount + 118); /*0xffd0a1fc*/
          if ( n5 < 5u || n5 == 5 && n77 == 77 ) /*0xffd0a209*/
            n2_1 &= ~(1 << v11); /*0xffd0a20b*/
          if ( n5 == 6 && n77 == 67 || n5 == 5 && n77 == 69 ) /*0xffd0a21e*/
            DdrTrainFunc6CD5(n6, n6a, n6_1, *((_BYTE *)buf + 40) + 1, &v21); /*0xffd0a234*/
          else
            DdrTrainFunc6CD5(n6, n6a, n6_1, *((_BYTE *)buf + 40), &v21); /*0xffd0a24d*/
        }
        else
        {
          n2_1 &= ~(1 << v11); /*0xffd0a1dd*/
        }
        v24 += 7688; /*0xffd0a259*/
        v10 = v28; /*0xffd0a263*/
        ++v11; /*0xffd0a267*/
        ++v25; /*0xffd0a268*/
        LOBYTE(n6_1) = n6_1 + 1; /*0xffd0a26c*/
      }
      while ( (unsigned __int8)n6_1 < 6u ); /*0xffd0a272*/
      if ( n2_1 ) /*0xffd0a27a*/
      {
        if ( n0x20 == 1 ) /*0xffd0a288*/
        {
          IioTailFuncA50A(n6, n6a, n2_1); /*0xffd0a291*/
          buf_7 = buf; /*0xffd0a296*/
          IioTailFunc9C97(n6, (int)buf, n6a, n2_1, n3[0], 28, 0, buf_4, 1); /*0xffd0a2b0*/
          IIOFuncA616( /*0xffd0a302*/
            n6,
            (int)buf,
            n6a,
            n2_1,
            n3[0],
            v20[0],
            (int)bufa,
            (int)buf_1,
            (int)buf_2,
            (int)buf_3,
            (int)buf_4,
            (int)buf_6,
            p_n8,
            (int)buf_5,
            1,
            0,
            n4[0]);
          MailBoxFuncDA23((int)n6, n6a, n2_1); /*0xffd0a30d*/
          IioTailFuncAAAB(n6, (int)buf, n6a, n2_1, 1, n3[0], *(int *)v20, buf_4, buf_1, buf_5); /*0xffd0a332*/
          MailBoxFuncDADC((int)n6, n6a, n2_1); /*0xffd0a33a*/
        }
        else
        {
          buf_7 = buf; /*0xffd0a344*/
        }
        IioTailFuncA50A(n6, n6a, n2_1); /*0xffd0a34e*/
        IioTailFunc9C97(n6, (int)buf_7, n6a, n2_1, n3[0], n0x20, 0, buf_4, 1); /*0xffd0a36b*/
        IIOFuncA616( /*0xffd0a3bd*/
          n6,
          (int)buf_7,
          n6a,
          n2_1,
          n3[0],
          v20[0],
          (int)bufa,
          (int)buf_1,
          (int)buf_2,
          (int)buf_3,
          (int)buf_4,
          (int)buf_6,
          p_n8,
          (int)buf_5,
          1,
          2,
          n4[0]);
        MailBoxFuncDA23((int)n6, n6a, n2_1); /*0xffd0a3c8*/
        IioTailFuncAAAB(n6, (int)buf_7, n6a, n2_1, 1, n3[0], *(int *)v20, buf_4, buf_1, buf_5); /*0xffd0a3ed*/
        MailBoxFuncDADC((int)n6, n6a, n2_1); /*0xffd0a3f5*/
        DdrTrainPatternCfg(n6, buf_7, n6a, n2_1, *(_DWORD *)n3, buf_4); /*0xffd0a40a*/
        DebugPrint((int)n6, 3, n6a, 255, 255, 255, 255, 255, "."); /*0xffd0a422*/
        IioTailFuncA50A(n6, n6a, n2_1); /*0xffd0a42a*/
        IIOFuncA616( /*0xffd0a476*/
          n6,
          (int)buf_7,
          n6a,
          n2_1,
          n3[0],
          v20[0],
          (int)bufa,
          (int)buf_1,
          (int)buf_2,
          (int)buf_3,
          (int)buf_4,
          (int)buf_6,
          p_n8,
          (int)buf_5,
          0,
          0,
          0);
        MailBoxFuncDA23((int)n6, n6a, n2_1); /*0xffd0a47e*/
        IioTailFuncAAAB(n6, (int)buf_7, n6a, n2_1, 0, n3[0], *(int *)v20, buf_4, buf_1, buf_5); /*0xffd0a4a6*/
        MailBoxFuncDADC((int)n6, n6a, n2_1); /*0xffd0a4ae*/
      }
      else
      {
        buf_7 = buf; /*0xffd0a4b8*/
      }
      v6 = (_BYTE *)v27; /*0xffd0a4c3*/
      p_n8_1 = n3[0] + 1; /*0xffd0a4c7*/
      n3[0] = p_n8_1; /*0xffd0a4c9*/
    }
    while ( p_n8_1 <= (unsigned __int8)p_n8 ); /*0xffd0a4d1*/
    ++v20[0]; /*0xffd0a4dd*/
  }
  while ( (unsigned int)v20[0] <= (unsigned __int8)v18 ); /*0xffd0a4e5*/
  IioDdrAutoGenResourceSum(n6, buf_7, n6a, n2); /*0xffd0a4f5*/
  return 0; /*0xffd0a4ff*/
}

// Function: IioTailFuncA50A @ 0xffd0a50a (0x10c bytes)
// Index: 2263/2560

int __cdecl IioTailFuncA50A(unsigned __int8 *__return_address, unsigned __int8 n4, int n2)
{
  unsigned __int8 n6; // dl
  char v4; // bp
  int n6_1; // [esp+10h] [ebp-4h]

  n6 = 0; /*0xffd0a510*/
  v4 = 0; /*0xffd0a519*/
  LOBYTE(n6_1) = 0; /*0xffd0a51b*/
  do /*0xffd0a608*/
  {
    if ( ((1 << v4) & n2) != 0 ) /*0xffd0a52a*/
    {
      MiscIoCheck(__return_address, n4, n6_1, 0xB004544u, 8356096); /*0xffd0a541*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB004538u, 0); /*0xffd0a550*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB00453Cu, 0); /*0xffd0a55f*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB004540u, 0); /*0xffd0a56e*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB014534u, 16457); /*0xffd0a583*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB01450Cu, 11184810); /*0xffd0a595*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB014510u, 13421772); /*0xffd0a5a7*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB014514u, 15790320); /*0xffd0a5b9*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB014518u, 11184810); /*0xffd0a5ce*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB01451Cu, 13421772); /*0xffd0a5e0*/
      MiscIoCheck(__return_address, n4, n6_1, 0xB014520u, 15790320); /*0xffd0a5f2*/
      n6 = n6_1; /*0xffd0a5f7*/
    }
    ++n6; /*0xffd0a5fe*/
    ++v4; /*0xffd0a600*/
    LOBYTE(n6_1) = n6; /*0xffd0a601*/
  }
  while ( n6 < 6u ); /*0xffd0a608*/
  return 0; /*0xffd0a60e*/
}

// Function: IIOFuncA616 @ 0xffd0a616 (0x495 bytes)
// Index: 2264/2560

unsigned __int8 __cdecl IIOFuncA616(
        unsigned __int8 *__return_address,
        int buf,
        int buf_2,
        int n2,
        unsigned __int8 n3,
        char a6,
        int bufa,
        int a8,
        int a9,
        int a10,
        int a11,
        int a12,
        int n8,
        int a14,
        char a15,
        char n2a,
        char n4)
{
  int buf_1; // ebx
  unsigned __int8 *__return_address_1; // ebp
  int v19; // edi
  int v20; // ebx
  int v21; // eax
  char n2_3; // al
  int v23; // eax
  __int16 n3a_2; // ax
  int n2_1; // esi
  unsigned __int8 v27; // [esp+12h] [ebp-42h]
  char v28; // [esp+12h] [ebp-42h]
  unsigned __int8 v29; // [esp+13h] [ebp-41h]
  int n6; // [esp+14h] [ebp-40h]
  int v31; // [esp+18h] [ebp-3Ch]
  int n2_2; // [esp+1Ch] [ebp-38h]
  __int16 n3a_1; // [esp+20h] [ebp-34h]
  int v34; // [esp+24h] [ebp-30h]
  char *v35; // [esp+28h] [ebp-2Ch]
  int n1946157284; // [esp+2Ch] [ebp-28h]
  int v37; // [esp+30h] [ebp-24h]
  int v38; // [esp+34h] [ebp-20h]
  int v39; // [esp+38h] [ebp-1Ch]
  int n3_1; // [esp+3Ch] [ebp-18h]
  int SocketInfo; // [esp+44h] [ebp-10h]
  int CpuCount; // [esp+48h] [ebp-Ch]
  int v43; // [esp+4Ch] [ebp-8h]
  unsigned __int8 n3a; // [esp+68h] [ebp+14h]

  buf_1 = buf_2; /*0xffd0a61a*/
  __return_address_1 = __return_address; /*0xffd0a61f*/
  v34 = 0; /*0xffd0a62c*/
  v39 = 0; /*0xffd0a631*/
  SocketInfo = GetSocketInfo((int)__return_address, buf_2); /*0xffd0a636*/
  n3_1 = n3; /*0xffd0a63f*/
  LOBYTE(n6) = 0; /*0xffd0a64e*/
  v35 = (char *)(buf + n3 + 6974); /*0xffd0a653*/
  do /*0xffd0aa8e*/
  {
    v19 = 0; /*0xffd0a65b*/
    v38 = 0; /*0xffd0a65d*/
    n1946157284 = 0; /*0xffd0a661*/
    v27 = 0; /*0xffd0a66b*/
    IioTailFuncB787(__return_address_1, buf_1, n2, n6, 0); /*0xffd0a672*/
    DdrTrainFunc45AB((int)__return_address_1, buf_1, n6); /*0xffd0a67a*/
    if ( ((1 << v34) & n2) == 0 /*0xffd0a6c5*/
      || !__return_address_1[48704 * (unsigned __int8)buf_1 + 258722 + v39]
      || !*(_BYTE *)(v39 + SocketInfo + 6262) && a6 )
    {
      IioTailFuncC131(__return_address_1, buf_1, n6); /*0xffd0aa65*/
      n2_1 = n2; /*0xffd0aa6a*/
      goto LABEL_34; /*0xffd0aa6a*/
    }
    CpuCount = GetCpuCount((int)__return_address_1, buf_1, n6); /*0xffd0a6da*/
    v20 = v34 + 6 * n3_1; /*0xffd0a6eb*/
    LOBYTE(v31) = *(_BYTE *)(v20 + a11); /*0xffd0a6f6*/
    v29 = *(_BYTE *)(v20 + bufa) - 3; /*0xffd0a711*/
    n3a = *(_BYTE *)(v20 + a8); /*0xffd0a71f*/
    v28 = *(_BYTE *)(v20 + a9); /*0xffd0a733*/
    n3a_1 = n3a; /*0xffd0a752*/
    v43 = 8 * (((1 << v29) - 1) & 0x3FFFF | ((((unsigned __int8)(1 << v28) - 1) & 0xF) << 21)); /*0xffd0a75d*/
    v37 = ((1 << n3a) - 1) & 0x3FFFF; /*0xffd0a772*/
    MiscIoCheck(__return_address, buf_2, n6, 0xB00454Cu, 0); /*0xffd0a776*/
    MiscIoCheck(__return_address, buf_2, n6, 0xB004550u, 0); /*0xffd0a78d*/
    __return_address_1 = __return_address; /*0xffd0a79d*/
    MiscIoCheck(__return_address, buf_2, n6, 0xB004554u, 0); /*0xffd0a7a5*/
    LOBYTE(n2_2) = *(_BYTE *)(v20 + a14); /*0xffd0a7c2*/
    if ( !*(_BYTE *)(buf + 6973) || (v21 = 1379 * (unsigned __int8)v31, *(_WORD *)(v21 + CpuCount + 147) != 0xAD00) ) /*0xffd0a7e8*/
    {
LABEL_23:
      buf_1 = buf_2; /*0xffd0a94b*/
      goto LABEL_24; /*0xffd0a94b*/
    }
    if ( *(_BYTE *)(v21 + CpuCount + 104) && *v35 == 4 && n4 == 4 ) /*0xffd0a808*/
    {
      buf_1 = buf_2; /*0xffd0a80e*/
      n3a -= 2; /*0xffd0a820*/
      n3a_1 = n3a; /*0xffd0a82b*/
      v37 = ((1 << n3a) - 1) & 0x3FFFF; /*0xffd0a83a*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0); /*0xffd0a83e*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0xAu); /*0xffd0a858*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0xFu); /*0xffd0a85f*/
      goto LABEL_24; /*0xffd0a85f*/
    }
    n2_3 = *v35; /*0xffd0a861*/
    if ( *v35 == 2 && n4 == 4 ) /*0xffd0a86a*/
    {
      buf_1 = buf_2; /*0xffd0a870*/
      n3a_1 = --n3a; /*0xffd0a88d*/
      v37 = ((1 << n3a) - 1) & 0x3FFFF; /*0xffd0a89c*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0); /*0xffd0a8a0*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0xAu); /*0xffd0a8bc*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0x14u); /*0xffd0a8d8*/
    }
    else if ( n2_3 != 4 || n4 ) /*0xffd0a8e8*/
    {
      if ( n2_3 != 2 ) /*0xffd0a927*/
        goto LABEL_23; /*0xffd0a927*/
      buf_1 = buf_2; /*0xffd0a929*/
      if ( !n4 ) /*0xffd0a92f*/
      {
        IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0xBu); /*0xffd0a942*/
        IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0x15u); /*0xffd0a949*/
      }
    }
    else
    {
      buf_1 = buf_2; /*0xffd0a8ea*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0xBu); /*0xffd0a8ff*/
      IioTailFunc9AF8(__return_address, buf, buf_2, n6, v31, n2_2, 0x10u); /*0xffd0a91b*/
    }
LABEL_24:
    v27 = v29 + n3a + v28; /*0xffd0a94f*/
    DdrTrainFuncE35((int)__return_address, buf_1, n6, 1 << n3_1, 0xAu, a6); /*0xffd0a97b*/
    v23 = MiscConfigCheck(__return_address, buf_1, n6, 117525076); /*0xffd0a98b*/
    MiscIoCheck(__return_address, buf_1, n6, 0x7014A54u, v23 & 0xFFFF3FFF); /*0xffd0a9a1*/
    if ( !n2a ) /*0xffd0a9b3*/
    {
      n3a_2 = n3a_1; /*0xffd0a9d8*/
      v19 = ((v29 & 0x1F) << 26) | 1; /*0xffd0a9e2*/
      n1946157284 = 1946157284; /*0xffd0a9e5*/
      goto LABEL_28; /*0xffd0a9e5*/
    }
    if ( n2a == 2 ) /*0xffd0a9b9*/
    {
      n3a_2 = n3a_1; /*0xffd0a9bb*/
      n1946157284 = 1946157281; /*0xffd0a9c4*/
      v19 = (n3a_1 & 0x1F | 0x40) << 8; /*0xffd0a9cf*/
LABEL_28:
      v38 = (16 * (v29 + n3a_2)) & 0x1F0; /*0xffd0a9ed*/
    }
    if ( a15 == 1 ) /*0xffd0aa05*/
      MailBoxFunc902D((int)__return_address, buf_1, n6, 117459984, 80, 34603137); /*0xffd0aa0c*/
    else
      MailBoxFunc902D((int)__return_address, buf_1, n6, 117459984, 80, 33554561); /*0xffd0aa20*/
    MemChipFuncBB76(__return_address, buf_1, n6, v19, v38, 0, 0, v43, v37, n1946157284); /*0xffd0aa41*/
    n2_1 = n2; /*0xffd0aa4a*/
    IioTailFuncB787(__return_address, buf_1, n2, n6, v27); /*0xffd0aa58*/
LABEL_34:
    v39 += 7688; /*0xffd0aa71*/
    ++v34; /*0xffd0aa7f*/
    v35 += 8; /*0xffd0aa83*/
    LOBYTE(n6) = n6 + 1; /*0xffd0aa88*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd0aa8e*/
  IioTailFunc9C0C(__return_address_1, buf_1, n2_1); /*0xffd0aa97*/
  return v27; /*0xffd0aaa3*/
}

// Function: IioTailFuncAAAB @ 0xffd0aaab (0x22f bytes)
// Index: 2265/2560

int __cdecl IioTailFuncAAAB(
        unsigned __int8 *__return_address,
        int buf,
        int n4,
        int n2,
        int a5,
        unsigned __int8 n3,
        int a7,
        _BYTE *bufa,
        _BYTE *a9,
        _BYTE *a10)
{
  unsigned __int8 v10; // bl
  unsigned int v11; // esi
  int n2_1; // ecx
  int n2_2; // ebx
  __int64 v14; // kr00_8
  __int64 v15; // kr08_8
  unsigned int v16; // ecx
  unsigned __int8 n2_4; // al
  unsigned __int8 n2_5; // [esp+13h] [ebp-21h]
  unsigned int n2_3; // [esp+14h] [ebp-20h]
  unsigned int v21; // [esp+18h] [ebp-1Ch]
  int v22; // [esp+1Ch] [ebp-18h]
  char v23; // [esp+20h] [ebp-14h]
  unsigned __int8 n6; // [esp+24h] [ebp-10h]
  char v25; // [esp+28h] [ebp-Ch]
  char v26; // [esp+2Ch] [ebp-8h]

  v10 = 0; /*0xffd0aab4*/
  v11 = 0; /*0xffd0aab7*/
  v23 = 0; /*0xffd0aab9*/
  LOBYTE(v22) = 0; /*0xffd0aabe*/
  n6 = 0; /*0xffd0aac2*/
  v21 = 0; /*0xffd0aac6*/
  do /*0xffd0ac9f*/
  {
    n2_1 = n2; /*0xffd0aad1*/
    if ( ((1 << v11) & n2) != 0 ) /*0xffd0aad7*/
    {
      v25 = DdrTrainFunc45AB((int)__return_address, n4, n6); /*0xffd0aaf4*/
      n2_5 = __return_address[9475]; /*0xffd0aaf8*/
      if ( ((unsigned __int8)(1 << v25) & (unsigned __int8)v22) == 0 ) /*0xffd0ab0e*/
      {
        n2_2 = n2; /*0xffd0ab1a*/
        v14 = KtiFunc9D6(); /*0xffd0ab21*/
        while ( 1 ) /*0xffd0ab39*/
        {
          v26 = MailBoxFunc8E0B(n2, (int)__return_address, n4, v25, 117459712); /*0xffd0ab39*/
          if ( (unsigned int)KtiFuncA21((int)__return_address, v14, SHIDWORD(v14)) > 0x8F0D180 ) /*0xffd0ab4a*/
            break; /*0xffd0ab4a*/
          IioTailX_FFD0B118(__return_address, buf, n4, n2, a5, n3, a7, bufa, (int)a9, (int)a10); /*0xffd0ab6e*/
          if ( (v26 & 4) == 0 && (v26 & 1) == 0 ) /*0xffd0ab80*/
            goto LABEL_10; /*0xffd0ab80*/
        }
        v23 = 1; /*0xffd0ab84*/
LABEL_10:
        v15 = KtiFunc9D6(); /*0xffd0ab89*/
        while ( 1 ) /*0xffd0ab9d*/
        {
          LOBYTE(n2_3) = 1; /*0xffd0ab9d*/
          v16 = MailBoxFunc8E0B(n2_2, (int)__return_address, n4, v25, 117459716); /*0xffd0abac*/
          n2_4 = n2_5; /*0xffd0abb1*/
          if ( n2_5 ) /*0xffd0abb7*/
          {
            n2_4 = n2_5; /*0xffd0abc4*/
            if ( !(v21 % n2_5) ) /*0xffd0abc2*/
              n2_3 = HIWORD(v16) & 0xFFFFFF01; /*0xffd0abd7*/
          }
          if ( n2_4 > 1u ) /*0xffd0abdd*/
          {
            if ( v21 % n2_4 == 1 ) /*0xffd0abed*/
              LOBYTE(n2_3) = (v16 >> 17) & n2_3; /*0xffd0abf4*/
            n2_4 = n2_5; /*0xffd0abf8*/
          }
          if ( n2_4 <= 2u ) /*0xffd0abfe*/
          {
            n2_2 = n2_3; /*0xffd0ac1b*/
          }
          else
          {
            n2_2 = n2_3; /*0xffd0ac0b*/
            if ( v21 % n2_4 == 2 ) /*0xffd0ac12*/
              LOBYTE(n2_2) = (v16 >> 18) & n2_3; /*0xffd0ac17*/
          }
          if ( (_BYTE)n2_2 == 1 ) /*0xffd0ac22*/
            v22 = (unsigned __int8)v22 | (1 << v25); /*0xffd0ac32*/
          IioTailX_FFD0B118(__return_address, buf, n4, n2, a5, n3, a7, bufa, (int)a9, (int)a10); /*0xffd0ac5b*/
          if ( (unsigned int)KtiFuncA21((int)__return_address, v15, SHIDWORD(v15)) > 0x8F0D180 ) /*0xffd0ac70*/
            break; /*0xffd0ac70*/
          if ( (_BYTE)n2_2 ) /*0xffd0ac74*/
          {
            v10 = v23; /*0xffd0ac7a*/
            goto LABEL_28; /*0xffd0ac7e*/
          }
        }
        v10 = 1; /*0xffd0ac80*/
        v23 = 1; /*0xffd0ac82*/
LABEL_28:
        v11 = v21; /*0xffd0ac86*/
      }
      n2_1 = n2; /*0xffd0ac8a*/
    }
    ++v11; /*0xffd0ac94*/
    ++n6; /*0xffd0ac95*/
    v21 = v11; /*0xffd0ac99*/
  }
  while ( n6 < 6u ); /*0xffd0ac9f*/
  IioTailX_FFD0B118(__return_address, buf, n4, n2_1, a5, n3, a7, bufa, (int)a9, (int)a10); /*0xffd0acc7*/
  return v10; /*0xffd0acd2*/
}

// Function: IIOFuncACDA @ 0xffd0acda (0x43e bytes)
// Index: 2266/2560

int __cdecl IIOFuncACDA(unsigned __int8 *__return_address, int buf, int n4, int n2)
{
  int n4_2; // ebp
  unsigned __int8 p_n8_1; // al
  int buf_7; // esi
  int n2_1; // ebx
  int p_n8_2; // ecx
  int v9; // eax
  unsigned __int8 *v10; // edx
  int v11; // eax
  char v12; // si
  int CpuCount; // eax
  unsigned __int8 n3_1; // si
  int n2_3; // ebp
  char n6_2; // dl
  _BYTE *v17; // ecx
  unsigned int n3_3; // eax
  int n2_2; // eax
  int n4_3; // ebx
  int v21; // ebp
  int v22; // edx
  int n6_3; // ebx
  unsigned __int8 i; // cl
  int v25; // eax
  unsigned __int8 n3_2; // [esp-20h] [ebp-180h]
  unsigned __int8 n6; // [esp+13h] [ebp-14Dh]
  char n6_1; // [esp+13h] [ebp-14Dh]
  char v30; // [esp+17h] [ebp-149h] BYREF
  _BYTE *v31; // [esp+18h] [ebp-148h]
  int p_n8; // [esp+1Ch] [ebp-144h] BYREF
  int n2_4; // [esp+20h] [ebp-140h]
  unsigned __int8 n3[4]; // [esp+24h] [ebp-13Ch]
  unsigned __int8 *v35; // [esp+28h] [ebp-138h]
  _BYTE *v36; // [esp+2Ch] [ebp-134h]
  int n4_1; // [esp+30h] [ebp-130h]
  int v38; // [esp+34h] [ebp-12Ch]
  int buf_6[2]; // [esp+38h] [ebp-128h] BYREF
  _BYTE buf_4[48]; // [esp+40h] [ebp-120h] BYREF
  _BYTE buf_5[48]; // [esp+70h] [ebp-F0h] BYREF
  _BYTE buf_1[48]; // [esp+A0h] [ebp-C0h] BYREF
  int buf_3[12]; // [esp+D0h] [ebp-90h] BYREF
  int buf_2[12]; // [esp+100h] [ebp-60h] BYREF
  _BYTE bufa[48]; // [esp+130h] [ebp-30h] BYREF

  n2_4 = 0; /*0xffd0acf6*/
  LOBYTE(p_n8) = 0; /*0xffd0acfa*/
  v30 = 0; /*0xffd0acfe*/
  GetSocketInfo((int)__return_address, n4); /*0xffd0ad02*/
  IioTailFuncB70C(__return_address, n4); /*0xffd0ad10*/
  memset_save_flags(bufa, 0, 0x30u); /*0xffd0ad23*/
  memset_save_flags(buf_1, 0, 0x30u); /*0xffd0ad33*/
  memset_save_flags(buf_2, 0, 0x30u); /*0xffd0ad43*/
  memset_save_flags(buf_3, 0, 0x30u); /*0xffd0ad53*/
  memset_save_flags(buf_4, 0, 0x30u); /*0xffd0ad63*/
  memset_save_flags(buf_5, 0, 0x30u); /*0xffd0ad73*/
  memset_save_flags(buf_6, 0, 8u); /*0xffd0ad81*/
  n4_1 = (unsigned __int8)n4; /*0xffd0ad8b*/
  __return_address[(unsigned __int8)n4 + 214129] = 0; /*0xffd0ad8f*/
  AutoGenFunc114B((int)__return_address, n4); /*0xffd0ad97*/
  GetSocketInfo((int)__return_address, n4); /*0xffd0ad9e*/
  AutoGenFunc45F4(__return_address, n4, bufa, buf_1, buf_2, buf_3, buf_4, &p_n8, &v30, buf_5, 16); /*0xffd0ade1*/
  if ( (unsigned __int8)p_n8 >= 8u ) /*0xffd0adee*/
    LOBYTE(p_n8) = 7; /*0xffd0adf0*/
  LOBYTE(n4_2) = n4; /*0xffd0adf5*/
  p_n8_1 = 0; /*0xffd0adfc*/
  buf_7 = buf; /*0xffd0adfe*/
  n3[0] = 0; /*0xffd0ae05*/
  while ( 1 ) /*0xffd0ae09*/
  {
    v38 = 0; /*0xffd0ae09*/
    n2_1 = n2; /*0xffd0ae12*/
    p_n8_2 = p_n8_1; /*0xffd0ae19*/
    v9 = 6 * p_n8_1; /*0xffd0ae1c*/
    n6 = 0; /*0xffd0ae1f*/
    v10 = &buf_4[v9]; /*0xffd0ae24*/
    v35 = &buf_4[v9]; /*0xffd0ae26*/
    v31 = (char *)buf_3 + v9; /*0xffd0ae31*/
    v11 = buf_7 + 6974; /*0xffd0ae35*/
    v12 = 0; /*0xffd0ae3b*/
    v36 = (_BYTE *)(p_n8_2 + v11); /*0xffd0ae41*/
    do /*0xffd0aec4*/
    {
      n2_1 &= ~((*v31 == 0) << v12); /*0xffd0ae56*/
      ProcCommonFunc24FA((int)__return_address, n4_2, n6, *v10); /*0xffd0ae62*/
      CpuCount = GetCpuCount((int)__return_address, n4_2, n6); /*0xffd0ae6d*/
      n4_2 = n4; /*0xffd0ae8f*/
      if ( *(_WORD *)(1379 * *v35 + CpuCount + 142) != 0xAD00 ) /*0xffd0ae96*/
        n2_1 &= ~(1 << v12); /*0xffd0ae98*/
      if ( !*v36 ) /*0xffd0ae9f*/
        n2_1 &= ~(1 << v12); /*0xffd0aea4*/
      v36 += 8; /*0xffd0aeb0*/
      ++v12; /*0xffd0aeb4*/
      ++n6; /*0xffd0aeb5*/
      ++v31; /*0xffd0aeb9*/
      v10 = ++v35; /*0xffd0aebd*/
    }
    while ( n6 < 6u ); /*0xffd0aec4*/
    buf_7 = buf; /*0xffd0aeca*/
    if ( n2_1 ) /*0xffd0aed3*/
      break; /*0xffd0aed3*/
    n4_3 = n4_1; /*0xffd0b0a3*/
LABEL_22:
    p_n8_1 = n3[0] + 4; /*0xffd0b0a7*/
    n3[0] = p_n8_1; /*0xffd0b0ad*/
    if ( p_n8_1 > (unsigned __int8)p_n8 ) /*0xffd0b0b5*/
      goto LABEL_23; /*0xffd0b0b5*/
  }
  IioTailFuncA50A(__return_address, n4, n2_1); /*0xffd0aedc*/
  n3_1 = n3[0]; /*0xffd0aee1*/
  IioTailFunc9C97(__return_address, buf, n4, n2_1, n3[0], 27, 0, buf_4, 1); /*0xffd0aefb*/
  IIOFuncA616( /*0xffd0af4c*/
    __return_address,
    buf,
    n4,
    n2_1,
    n3_1,
    0,
    (int)bufa,
    (int)buf_1,
    (int)buf_2,
    (int)buf_3,
    (int)buf_4,
    (int)buf_6,
    p_n8,
    (int)buf_5,
    1,
    0,
    4);
  MailBoxFuncDA23((int)__return_address, n4, n2_1); /*0xffd0af57*/
  IioTailFuncAAAB(__return_address, buf, n4, n2_1, 1, n3_1, 0, buf_4, buf_1, buf_5); /*0xffd0af7d*/
  MailBoxFuncDADC((int)__return_address, n4, n2_1); /*0xffd0af85*/
  IioTailFuncA50A(__return_address, n4, n2_1); /*0xffd0af90*/
  IIOFuncA616( /*0xffd0afd9*/
    __return_address,
    buf,
    n4,
    n2_1,
    n3_1,
    0,
    (int)bufa,
    (int)buf_1,
    (int)buf_2,
    (int)buf_3,
    (int)buf_4,
    (int)buf_6,
    p_n8,
    (int)buf_5,
    0,
    0,
    0);
  MailBoxFuncDA23((int)__return_address, n4, n2_1); /*0xffd0afe4*/
  n3_2 = n3_1; /*0xffd0affd*/
  buf_7 = buf; /*0xffd0affe*/
  IioTailFuncAAAB(__return_address, buf, n4, n2_1, 0, n3_2, 0, buf_4, buf_1, buf_5); /*0xffd0b00b*/
  MailBoxFuncDADC((int)__return_address, n4, n2_1); /*0xffd0b013*/
  n2_3 = n2_4; /*0xffd0b018*/
  n6_2 = 0; /*0xffd0b01c*/
  n6_1 = 0; /*0xffd0b021*/
  v17 = 0; /*0xffd0b025*/
  v31 = 0; /*0xffd0b027*/
  do /*0xffd0b05e*/
  {
    if ( ((1 << (char)v17) & n2_1) != 0 ) /*0xffd0b032*/
    {
      n3_3 = AutoGenFunc1129(__return_address, n6_1); /*0xffd0b039*/
      n6_2 = n6_1; /*0xffd0b03e*/
      v17 = v31; /*0xffd0b044*/
      if ( n3_3 >= 3 ) /*0xffd0b04b*/
        n2_3 |= 1 << (char)v31; /*0xffd0b04d*/
    }
    ++n6_2; /*0xffd0b050*/
    ++v17; /*0xffd0b052*/
    n6_1 = n6_2; /*0xffd0b053*/
    v31 = v17; /*0xffd0b057*/
  }
  while ( (unsigned __int8)n6_2 < 6u ); /*0xffd0b05e*/
  n2_4 = n2_3; /*0xffd0b060*/
  n2_2 = n2_3; /*0xffd0b064*/
  n4_2 = n4; /*0xffd0b068*/
  *(_BYTE *)(buf + 6973) = n2_2 != n2_1; /*0xffd0b073*/
  n4_3 = n4_1; /*0xffd0b083*/
  __return_address[n4_1 + 214129] = 0; /*0xffd0b089*/
  AutoGenFunc114B((int)__return_address, n4); /*0xffd0b091*/
  if ( *(_BYTE *)(buf + 6973) ) /*0xffd0b096*/
    goto LABEL_22; /*0xffd0b09f*/
LABEL_23:
  IioTailFuncB70C(__return_address, n4_2); /*0xffd0b0bb*/
  if ( !*(_BYTE *)(buf_7 + 6973) ) /*0xffd0b0cc*/
  {
    v21 = 50813 * n4_3; /*0xffd0b0d5*/
    v22 = 0; /*0xffd0b0db*/
    n6_3 = 6; /*0xffd0b0df*/
    do /*0xffd0b109*/
    {
      for ( i = 0; i < __return_address[v21 + 10194]; *(_BYTE *)(v25 + buf_7 + 6974) = 0 ) /*0xffd0b0e2*/
        v25 = v22 + i++; /*0xffd0b0ee*/
      v22 += 8; /*0xffd0b103*/
      --n6_3; /*0xffd0b106*/
    }
    while ( n6_3 ); /*0xffd0b109*/
  }
  return 0; /*0xffd0b10b*/
}

// Function: IioTailX_FFD0B118 @ 0xffd0b118 (0x92 bytes)
// Index: 2267/2560

int __cdecl IioTailX_FFD0B118(
        unsigned __int8 *__return_address,
        int buf,
        int buf_1,
        int n2,
        int a5,
        unsigned __int8 n3,
        int a7,
        _BYTE *bufa,
        int a9,
        int a10)
{
  int n2_1; // eax
  char v11; // bl
  int n6; // ebp
  _BYTE v14[8]; // [esp+0h] [ebp-8h] BYREF

  ProcCommonFuncFBF1((int)__return_address); /*0xffd0b11e*/
  if ( !(_BYTE)a5 ) /*0xffd0b129*/
  {
    n2_1 = n2; /*0xffd0b12b*/
    v11 = 0; /*0xffd0b134*/
    n6 = 6; /*0xffd0b136*/
    do /*0xffd0b196*/
    {
      if ( ((1 << v11) & n2_1) != 0 ) /*0xffd0b140*/
      {
        LOBYTE(a5) = AutoGenFunc4E2C((int)__return_address, buf_1, 1 << v11, 2u); /*0xffd0b15a*/
        MemAdvTestFailureCheck(__return_address, buf_1, 1 << v11, (int)bufa, a10, n3, a9 + 6 * n3, a5, 0x10u, v14, 1); /*0xffd0b186*/
        n2_1 = n2; /*0xffd0b18b*/
      }
      ++v11; /*0xffd0b192*/
      --n6; /*0xffd0b193*/
    }
    while ( n6 ); /*0xffd0b196*/
  }
  ProcCommonFuncFBFD((int)__return_address); /*0xffd0b19f*/
  return 0; /*0xffd0b1a9*/
}

// Function: IioDdrAutoGenResourceSum @ 0xffd0b28e (0x49 bytes)
// Index: 2268/2560

int __cdecl IioDdrAutoGenResourceSum(unsigned __int8 *n6, _DWORD *buf, int n6a, int n2)
{
  int v4; // ebx
  char n6_2; // dl
  char v6; // si
  int v7; // eax
  char n6_1; // [esp+Ch] [ebp-4h]

  v4 = 0; /*0xffd0b293*/
  n6_2 = 0; /*0xffd0b296*/
  v6 = 0; /*0xffd0b298*/
  n6_1 = 0; /*0xffd0b29e*/
  do /*0xffd0b2c7*/
  {
    if ( ((1 << v6) & n2) != 0 ) /*0xffd0b2aa*/
    {
      v7 = AutoGenFunc1129(n6, n6_1); /*0xffd0b2b2*/
      n6_2 = n6_1; /*0xffd0b2b7*/
      v4 += v7; /*0xffd0b2ba*/
    }
    ++n6_2; /*0xffd0b2be*/
    ++v6; /*0xffd0b2c0*/
    n6_1 = n6_2; /*0xffd0b2c1*/
  }
  while ( (unsigned __int8)n6_2 < 6u ); /*0xffd0b2c7*/
  *buf = v4; /*0xffd0b2d0*/
  return v4; /*0xffd0b2ce*/
}

// Function: IioFuncB2D7 @ 0xffd0b2d7 (0x2ce bytes)
// Index: 2269/2560

int __cdecl IioFuncB2D7(unsigned __int8 *n6, _DWORD *buf, int a3)
{
  __int16 v3; // di
  __int16 v4; // dx
  char v5; // cl
  char v6; // bl
  __int16 v7; // cx
  __int16 v8; // cx
  int v9; // esi
  unsigned __int8 v10; // bh
  __int16 v11; // ax
  char v12; // bl
  __int16 v13; // di
  __int16 v14; // dx
  char *v15; // ecx
  int n31; // edx
  int n31_1; // eax
  unsigned __int8 v19; // [esp+Eh] [ebp-1Ah]
  char v20; // [esp+Fh] [ebp-19h]
  __int16 v21; // [esp+10h] [ebp-18h]
  int n31_2; // [esp+18h] [ebp-10h]
  int n31_3; // [esp+20h] [ebp-8h]
  unsigned int v24; // [esp+34h] [ebp+Ch]

  n31_3 = 0; /*0xffd0b2e4*/
  v24 = a3 ^ 0xA9910201; /*0xffd0b2ec*/
  v3 = ((v24 >> 4) & 0xF) << 8; /*0xffd0b316*/
  *((_WORD *)buf + 3511) = v3 | BYTE2(v24); /*0xffd0b321*/
  n31_2 = 0; /*0xffd0b32a*/
  v4 = ((v24 >> 4) & 0xF) << (v24 & 0xF) << 8; /*0xffd0b338*/
  *((_WORD *)buf + 3512) = BYTE2(v24) | v4; /*0xffd0b340*/
  v21 = (v24 & 0xF) << 8; /*0xffd0b35e*/
  v5 = (v24 >> 4) & ~(_BYTE)v24 & 0xF; /*0xffd0b362*/
  *((_WORD *)buf + 3513) = BYTE2(v24) | v21; /*0xffd0b36f*/
  v6 = ((v24 >> 4) & 0xF) + (v24 & 0xF); /*0xffd0b382*/
  v19 = BYTE2(v24) << v5; /*0xffd0b392*/
  v7 = (unsigned __int8)((BYTE2(v24) << v5) | (BYTE2(v24) >> v6)); /*0xffd0b396*/
  *((_WORD *)buf + 3514) = v3 | v7; /*0xffd0b39d*/
  *((_WORD *)buf + 3515) = v4 | v7; /*0xffd0b3ac*/
  *((_WORD *)buf + 3516) = v21 | v7; /*0xffd0b3b5*/
  v8 = BYTE2(v24) | v24 & 0xF; /*0xffd0b3c2*/
  *((_WORD *)buf + 3517) = v3 | v8; /*0xffd0b3cb*/
  *((_WORD *)buf + 3518) = v4 | v8; /*0xffd0b3d8*/
  v9 = (unsigned __int8)v24 >> 4; /*0xffd0b3f0*/
  *((_WORD *)buf + 3519) = v21 | v8; /*0xffd0b3f6*/
  *((_WORD *)buf + 3521) = v21 | BYTE1(v24); /*0xffd0b3fd*/
  v20 = (v24 & 0xF) << (v9 << (v24 & 0xF)); /*0xffd0b421*/
  v10 = BYTE2(v24) & ~v20; /*0xffd0b42b*/
  *((_WORD *)buf + 3522) = v21 | v24 & 0xF | v10; /*0xffd0b439*/
  LOBYTE(v8) = 2 * (v24 & 0xF); /*0xffd0b44c*/
  v11 = v21 | (unsigned __int8)(v6 | (BYTE2(v24) << v9)); /*0xffd0b457*/
  v12 = (v24 >> 4) & 0xF; /*0xffd0b45a*/
  *((_WORD *)buf + 3523) = v11; /*0xffd0b45e*/
  v13 = v21 | (unsigned __int8)(BYTE2(v24) & ~(BYTE1(v24) >> v8)); /*0xffd0b47e*/
  *((_WORD *)buf + 3524) = v13; /*0xffd0b490*/
  *((_WORD *)buf + 3526) = v21 | (unsigned __int8)(BYTE1(v24) | (8 >> (v24 & 0xF))); /*0xffd0b4a0*/
  v14 = v21 | (unsigned __int8)((BYTE2(v24) << v9) | (v12 + v8)); /*0xffd0b4a7*/
  LOWORD(v9) = v21 | v10; /*0xffd0b4b1*/
  *((_WORD *)buf + 3527) = v9; /*0xffd0b4b8*/
  *((_WORD *)buf + 3528) = v14; /*0xffd0b4bf*/
  *((_WORD *)buf + 3529) = v13; /*0xffd0b4c6*/
  *((_WORD *)buf + 3531) = v21 | (unsigned __int8)(BYTE1(v24) | (4 >> (v24 & 0xF))); /*0xffd0b4e0*/
  *((_WORD *)buf + 3532) = v9; /*0xffd0b4e7*/
  *((_WORD *)buf + 3533) = v14; /*0xffd0b4f0*/
  *((_WORD *)buf + 3534) = v13; /*0xffd0b4f7*/
  *((_WORD *)buf + 3536) = v21 | v24 & 0xF | v19; /*0xffd0b514*/
  *((_WORD *)buf + 3537) = v21 | (unsigned __int8)(BYTE1(v24) ^ (v12 << (v24 & 0xF))); /*0xffd0b52b*/
  *((_WORD *)buf + 3538) = v21 | (unsigned __int8)(v10 - v12); /*0xffd0b538*/
  v15 = (char *)buf + 7022; /*0xffd0b545*/
  *((_WORD *)buf + 3539) = v21 | (unsigned __int8)(BYTE1(v24) | v20); /*0xffd0b551*/
  *((_WORD *)buf + 3540) = v13; /*0xffd0b558*/
  n31 = 31; /*0xffd0b55f*/
  do /*0xffd0b574*/
  {
    n31_1 = n31_2; /*0xffd0b563*/
    if ( *v15 < 0 ) /*0xffd0b567*/
      n31_1 = ++n31_2; /*0xffd0b569*/
    v15 += 2; /*0xffd0b56e*/
    --n31; /*0xffd0b571*/
  }
  while ( n31 ); /*0xffd0b574*/
  if ( n31_1 < 31 && n31_1 != 26 ) /*0xffd0b57e*/
  {
    n31_3 = n31_1; /*0xffd0b58c*/
    memset_save_flags((char *)buf + 6973, 0, 0xB1u); /*0xffd0b591*/
  }
  return n31_3; /*0xffd0b59e*/
}

// Function: IioDdrChkSumValidate @ 0xffd0b5a5 (0x5a bytes)
// Index: 2270/2560

bool __cdecl IioDdrChkSumValidate(int a1)
{
  char v1; // bl
  unsigned int v2; // edx
  int i; // ecx
  unsigned int v4; // eax
  unsigned int j; // ecx
  char v6; // bl
  char v8; // [esp+6h] [ebp-2h]
  char v9; // [esp+7h] [ebp-1h]

  v1 = 0; /*0xffd0b5ad*/
  v2 = a1 ^ 0xA9910201; /*0xffd0b5af*/
  v9 = 0; /*0xffd0b5b5*/
  for ( i = 0; i < 24; i += 4 ) /*0xffd0b5b8*/
  {
    v4 = v2 >> i; /*0xffd0b5bc*/
    v9 += v4 & 0xF; /*0xffd0b5c3*/
  }
  for ( j = 0; j < 0x20; ++j ) /*0xffd0b5cb*/
    v1 += (v2 >> j) & 1; /*0xffd0b5d5*/
  v8 = v1; /*0xffd0b5e3*/
  v6 = 0; /*0xffd0b5e8*/
  if ( v9 == (HIBYTE(v2) & 0x7F) ) /*0xffd0b5ec*/
    return (v8 & 1) == 0; /*0xffd0b5f7*/
  return v6; /*0xffd0b5fa*/
}

// Function: DdrTrainPatternCfg @ 0xffd0b5ff (0x10d bytes)
// Index: 2271/2560

int __cdecl DdrTrainPatternCfg(unsigned __int8 *n6, _DWORD *buf, int n6a, int n2, int a5, _BYTE *a6)
{
  unsigned __int8 n6_1; // bl
  _DWORD *bufa_1; // edx
  int v9; // eax
  int v10; // ecx
  int v12; // [esp+8h] [ebp-Ch]
  int v13; // [esp+Ch] [ebp-8h]
  int n2_1; // [esp+10h] [ebp-4h]
  _DWORD *bufa; // [esp+1Ch] [ebp+8h]

  n6_1 = 0; /*0xffd0b608*/
  n2_1 = 0; /*0xffd0b60a*/
  if ( *(_WORD *)((char *)buf + 43) ) /*0xffd0b60e*/
  {
    IioTailFunc9868(n6, (int)buf, n6a); /*0xffd0b625*/
    KtiFunc8C4((int)n6, 0x1F400u); /*0xffd0b630*/
    DdrTrainFunc70B9(n6, n6a, 0xFFu); /*0xffd0b63c*/
    v12 = 0; /*0xffd0b644*/
    while ( 1 ) /*0xffd0b652*/
    {
      KtiFunc8C4((int)n6, 0x3E8u); /*0xffd0b652*/
      bufa_1 = 0; /*0xffd0b658*/
      LOBYTE(v13) = 0; /*0xffd0b65a*/
      bufa = 0; /*0xffd0b65f*/
      do /*0xffd0b6c8*/
      {
        if ( ((1 << (char)bufa_1) & n2) != 0 ) /*0xffd0b66e*/
        {
          v9 = sub_FFD0B1AA(n6, buf, n6a, (_BYTE)v13, a5, a6); /*0xffd0b683*/
          v10 = v12; /*0xffd0b688*/
          if ( v12 == v9 ) /*0xffd0b691*/
          {
            n2_1 |= 1 << (char)bufa; /*0xffd0b6a4*/
            DdrTrainFunc7080(n6, n6a, v13, 0); /*0xffd0b6aa*/
            v10 = v12; /*0xffd0b6af*/
          }
          bufa_1 = bufa; /*0xffd0b6b6*/
        }
        else
        {
          v10 = v12; /*0xffd0b706*/
        }
        ++n6_1; /*0xffd0b6ba*/
        bufa_1 = (_DWORD *)((char *)bufa_1 + 1); /*0xffd0b6bc*/
        LOBYTE(v13) = n6_1; /*0xffd0b6bd*/
        bufa = bufa_1; /*0xffd0b6c1*/
      }
      while ( n6_1 < 6u ); /*0xffd0b6c8*/
      if ( n2_1 == n2 ) /*0xffd0b6d2*/
        break; /*0xffd0b6d2*/
      v12 = v10 + 1; /*0xffd0b6d5*/
      if ( v10 + 1 >= 350 ) /*0xffd0b6df*/
        break; /*0xffd0b6df*/
      n6_1 = 0; /*0xffd0b64a*/
    }
    DdrTrainFunc70B9(n6, n6a, 0); /*0xffd0b6e9*/
    KtiFunc8C4((int)n6, 0x1F400u); /*0xffd0b6f4*/
  }
  return 0; /*0xffd0b6fe*/
}

// Function: IioTailFuncB70C @ 0xffd0b70c (0x7b bytes)
// Index: 2272/2560

int __cdecl IioTailFuncB70C(unsigned __int8 *__return_address, int n4)
{
  int v3; // esi
  unsigned __int8 n4_3; // [esp+1Bh] [ebp+Fh]

  v3 = 50813 * (unsigned __int8)n4; /*0xffd0b717*/
  n4_3 = __return_address[v3 + 58727]; /*0xffd0b729*/
  ProcCommonFuncFBF1((int)__return_address); /*0xffd0b72c*/
  DdrTrainFunc15A1(__return_address, n4, 0xFFu); /*0xffd0b738*/
  KtiFunc8C4((int)__return_address, 0xAu); /*0xffd0b740*/
  MailBoxFunc2B5B((int)__return_address, n4); /*0xffd0b747*/
  __return_address[v3 + 58727] = 0; /*0xffd0b750*/
  KtiFuncD59F(__return_address, n4, 63); /*0xffd0b758*/
  DdrTrainFunc15A1(__return_address, n4, 0); /*0xffd0b761*/
  KtiFunc8C4((int)__return_address, 0xAu); /*0xffd0b769*/
  __return_address[v3 + 58727] = n4_3; /*0xffd0b774*/
  return ProcCommonFuncFBFD((int)__return_address); /*0xffd0b782*/
}

// Function: IioTailFuncB787 @ 0xffd0b787 (0x47 bytes)
// Index: 2273/2560

int __cdecl IioTailFuncB787(
        unsigned __int8 *__return_address,
        unsigned __int8 buf,
        int n2,
        unsigned __int8 n6,
        unsigned __int8 a5)
{
  int v5; // eax

  v5 = 0; /*0xffd0b790*/
  if ( ((1 << n6) & n2) != 0 && a5 ) /*0xffd0b79e*/
    v5 = ((a5 + 1) << 10) & 0x7C00 | 0x198; /*0xffd0b7ac*/
  MailBoxFunc902D((int)__return_address, buf, n6, 117459720, 4, v5); /*0xffd0b7c2*/
  return 0; /*0xffd0b7cc*/
}

// Function: DebugLogPrint_20 @ 0xffd0b7ce (0xfd bytes)
// Index: 2274/2560

int __cdecl DebugLogPrint_20(unsigned __int8 *n6, _DWORD *buf, int n6a, int n2)
{
  _BYTE *v4; // ebp

  v4 = (char *)buf + 6973; /*0xffd0b7dd*/
  memset_save_flags((char *)buf + 6973, 0, 0xB1u); /*0xffd0b7e4*/
  if ( !IioTailFunc9986((int)n6, (int)buf, n6a, n2) ) /*0xffd0b802*/
  {
    DebugPrint((int)n6, 2, n6a, 255, 255, 255, 255, 255, "CompressMode not support!!!\n"); /*0xffd0b8bb*/
    return 1; /*0xffd0b8bb*/
  }
  if ( !IioDdrChkSumValidate(*(_DWORD *)(n6 + 250)) ) /*0xffd0b80e*/
  {
    *v4 = 0; /*0xffd0b818*/
    DebugPrint((int)n6, 2, n6a, 255, 255, 255, 255, 255, "SmartTest Key[0x%08X] is invalid!!!\n", *(_DWORD *)(n6 + 250)); /*0xffd0b834*/
    return 1; /*0xffd0b8c5*/
  }
  IioFuncB2D7(n6, buf, *(_DWORD *)(n6 + 250)); /*0xffd0b849*/
  if ( *v4 ) /*0xffd0b851*/
    IIOFuncACDA(n6, (int)buf, n6a, n2); /*0xffd0b85e*/
  DebugPrint((int)n6, 2, n6a, 255, 255, 255, 255, 255, "Into CompressMode : ");
  if ( *v4 ) /*0xffd0b881*/
    DebugPrint((int)n6, 2, 255, 255, 255, 255, 255, 255, "Enable\n"); /*0xffd0b88c*/
  else
    DebugPrint((int)n6, 2, 255, 255, 255, 255, 255, 255, "Disable\n"); /*0xffd0b89c*/
  return 0; /*0xffd0b8c6*/
}

// Function: IioDdrTimeoutCfg @ 0xffd0b8cb (0x36 bytes)
// Index: 2275/2560

unsigned int __cdecl IioDdrTimeoutCfg(unsigned __int8 *n6, _DWORD *buf)
{
  unsigned int result; // eax

  *((_BYTE *)buf + 40) = 8; /*0xffd0b8d7*/
  *(_WORD *)((char *)buf + 43) = 8; /*0xffd0b8de*/
  *(_DWORD *)((char *)buf + 45) = 30; /*0xffd0b8e2*/
  result = 0x94C5F00u / KtiFuncC0FC((int)n6); /*0xffd0b8f9*/
  *(_WORD *)((char *)buf + 41) = result; /*0xffd0b8fb*/
  return result; /*0xffd0b8ff*/
}

// Function: IioTailCommandInit @ 0xffd0b901 (0x18e bytes)
// Index: 2276/2560

int __cdecl IioTailCommandInit(
        unsigned __int8 *n6,
        _DWORD *buf,
        int n6a,
        unsigned __int8 a4,
        unsigned __int8 n2,
        unsigned __int8 *n50331906)
{
  int v6; // edi
  unsigned __int8 n2_1; // bl
  unsigned __int8 *n50331906_1; // esi
  unsigned __int8 v9; // dh
  int n18; // eax
  unsigned __int8 n0x38; // dl
  char v12; // dl
  char *v13; // ebp
  char v14; // cl
  int v15; // eax
  bool v16; // zf
  int result; // eax
  int n4; // [esp+14h] [ebp-6Ch]
  int n18_1; // [esp+18h] [ebp-68h]
  int v20; // [esp+1Ch] [ebp-64h]
  _DWORD v21[24]; // [esp+20h] [ebp-60h] BYREF

  v21[0] = 50462976; /*0xffd0b909*/
  v6 = 0; /*0xffd0b912*/
  v21[1] = 33751296; /*0xffd0b914*/
  v21[2] = 50397696; /*0xffd0b91c*/
  n2_1 = 0; /*0xffd0b924*/
  v21[3] = 16974336; /*0xffd0b926*/
  v21[4] = 33620736; /*0xffd0b92e*/
  v21[5] = 16909056; /*0xffd0b936*/
  v21[6] = 50462721; /*0xffd0b93e*/
  v21[7] = 33751041; /*0xffd0b946*/
  v21[8] = 50332161; /*0xffd0b94e*/
  v21[9] = 197121; /*0xffd0b956*/
  v21[10] = 33555201; /*0xffd0b95e*/
  v21[11] = 131841; /*0xffd0b966*/
  v21[12] = 50397186; /*0xffd0b96e*/
  v21[13] = 16973826; /*0xffd0b976*/
  v21[14] = 50331906; /*0xffd0b97e*/
  v21[15] = 196866; /*0xffd0b986*/
  v21[16] = 16777986; /*0xffd0b98e*/
  v21[17] = 66306; /*0xffd0b996*/
  v21[18] = 33619971; /*0xffd0b99e*/
  v21[19] = 16908291; /*0xffd0b9a6*/
  v21[20] = 33554691; /*0xffd0b9ae*/
  v21[21] = 131331; /*0xffd0b9b6*/
  v21[22] = 16777731; /*0xffd0b9be*/
  v21[23] = 66051; /*0xffd0b9c6*/
  v20 = 0; /*0xffd0b9ce*/
  do /*0xffd0ba81*/
  {
    n50331906_1 = n50331906; /*0xffd0b9d2*/
    v9 = 0; /*0xffd0b9d9*/
    n18 = 18; /*0xffd0b9dd*/
    n18_1 = 18; /*0xffd0b9de*/
    do /*0xffd0ba6e*/
    {
      n0x38 = *n50331906_1; /*0xffd0b9e2*/
      if ( *n50331906_1 && n0x38 <= 0x38u ) /*0xffd0b9eb*/
      {
        v12 = n0x38 - 1; /*0xffd0ba01*/
        n4 = 4; /*0xffd0ba05*/
        v13 = (char *)&v21[v12 & 0x1F]; /*0xffd0ba2a*/
        do /*0xffd0ba5c*/
        {
          v14 = *v13; /*0xffd0ba2e*/
          if ( n2_1 ) /*0xffd0ba33*/
          {
            if ( (v14 & 1) != 0 ) /*0xffd0ba38*/
              v14 &= 0xEu; /*0xffd0ba3a*/
            else
              v14 |= 1u; /*0xffd0ba3f*/
          }
          if ( (v12 & 0x20) != 0 ) /*0xffd0ba47*/
            v14 += 4; /*0xffd0ba49*/
          v15 = 72 * (v6 + 8 * (n2 + 2 * a4)) + v9++; /*0xffd0ba4c*/
          ++v13; /*0xffd0ba52*/
          v16 = n4-- == 1; /*0xffd0ba53*/
          *((_BYTE *)buf + v15 + 61) = v14; /*0xffd0ba58*/
        }
        while ( !v16 ); /*0xffd0ba5c*/
        v6 = v20; /*0xffd0ba5e*/
        n18 = n18_1; /*0xffd0ba62*/
      }
      ++n50331906_1; /*0xffd0ba66*/
      n18_1 = --n18; /*0xffd0ba6a*/
    }
    while ( n18 ); /*0xffd0ba6e*/
    ++n2_1; /*0xffd0ba74*/
    v20 = ++v6; /*0xffd0ba77*/
    result = 0; /*0xffd0ba7d*/
  }
  while ( n2_1 < 2u ); /*0xffd0ba81*/
  return result; /*0xffd0ba87*/
}

// Function: DebugLogPrint_15 @ 0xffd0ba8f (0x42e bytes)
// Index: 2277/2560

int __cdecl DebugLogPrint_15(unsigned __int8 *n6, _DWORD *buf, int n6a, int n2, _BYTE *a5)
{
  int n6a_1; // esi
  int n2_1; // edi
  int SocketInfo; // eax
  unsigned __int8 n6_2; // dl
  int n2_3; // ecx
  unsigned __int8 *v10; // ebp
  int CpuCount; // edx
  unsigned __int8 v12; // al
  int v13; // edi
  unsigned __int8 *v14; // edi
  unsigned int v15; // edi
  unsigned int *v16; // esi
  unsigned int v17; // edi
  int v18; // eax
  int v19; // eax
  unsigned __int8 n6_3; // dl
  int v21; // ebp
  unsigned __int8 *v22; // esi
  int v23; // eax
  unsigned __int8 v24; // cl
  int v25; // ecx
  char n6a_2; // cl
  unsigned __int8 v28; // [esp+13h] [ebp-1Dh]
  int n6_1; // [esp+14h] [ebp-1Ch]
  int v30; // [esp+18h] [ebp-18h]
  int n2_2; // [esp+1Ch] [ebp-14h]
  int n20; // [esp+20h] [ebp-10h]
  unsigned __int8 *v33; // [esp+20h] [ebp-10h]
  int CpuCount_1; // [esp+24h] [ebp-Ch]
  unsigned int v35; // [esp+24h] [ebp-Ch]
  int v36; // [esp+24h] [ebp-Ch]
  unsigned __int8 *v37; // [esp+28h] [ebp-8h]
  int v38; // [esp+28h] [ebp-8h]

  n6a_1 = n6a; /*0xffd0ba99*/
  n2_1 = n2; /*0xffd0ba9e*/
  v28 = 0; /*0xffd0baa5*/
  IioTailFuncB70C(n6, n6a); /*0xffd0baaa*/
  SocketInfo = GetSocketInfo((int)n6, n6a); /*0xffd0bab1*/
  n6_2 = 0; /*0xffd0bab6*/
  n2_3 = 0; /*0xffd0babb*/
  LOBYTE(n6_1) = 0; /*0xffd0babd*/
  n2_2 = 0; /*0xffd0bac1*/
  v10 = (unsigned __int8 *)(SocketInfo + 3); /*0xffd0bac5*/
  v37 = (unsigned __int8 *)(SocketInfo + 3); /*0xffd0bac8*/
  do /*0xffd0bcca*/
  {
    if ( ((1 << n2_3) & n2_1) != 0 ) /*0xffd0bad3*/
    {
      CpuCount = GetCpuCount((int)n6, n6a_1, n6_1); /*0xffd0bae4*/
      v12 = 0; /*0xffd0bae9*/
      CpuCount_1 = CpuCount; /*0xffd0baeb*/
      for ( LOBYTE(v30) = 0; v12 < *v10; LOBYTE(v30) = v12 ) /*0xffd0baf3*/
      {
        v13 = 1379 * v12; /*0xffd0baff*/
        if ( *(_BYTE *)(v13 + CpuCount) && *(_WORD *)(v13 + CpuCount + 147) == 0xAD00 ) /*0xffd0bb1c*/
        {
          DebugPrint((int)n6, 2, n6a_1, n6_1, v30, 255, 255, 255, "["); /*0xffd0bb3b*/
          n20 = 20; /*0xffd0bb4d*/
          v14 = (unsigned __int8 *)(CpuCount_1 + v13 + 172); /*0xffd0bb55*/
          do /*0xffd0bb9f*/
          {
            if ( *v14 ) /*0xffd0bb57*/
              DebugPrint((int)n6, 2, 255, 255, 255, 255, 255, 255, "%c", *v14); /*0xffd0bb74*/
            else
              DebugPrint((int)n6, 2, 255, 255, 255, 255, 255, 255, " "); /*0xffd0bb91*/
            ++v14; /*0xffd0bb99*/
            --n20; /*0xffd0bb9a*/
          }
          while ( n20 ); /*0xffd0bb9f*/
          DebugPrint((int)n6, 2, 255, 255, 255, 255, 255, 255, "]\n"); /*0xffd0bbb4*/
          v12 = v30; /*0xffd0bbb9*/
          CpuCount = CpuCount_1; /*0xffd0bbc0*/
        }
        ++v12; /*0xffd0bbc4*/
      }
      v15 = 0; /*0xffd0bbd7*/
      v35 = 0; /*0xffd0bbda*/
      if ( AutoGenFunc1129(n6, n6_1) ) /*0xffd0bbde*/
      {
        do /*0xffd0bc98*/
        {
          ++v28; /*0xffd0bbfc*/
          v16 = (unsigned int *)AutoGenFunc110E((int)n6, n6_1, v15); /*0xffd0bc13*/
          v17 = *v16; /*0xffd0bc1a*/
          v18 = AutoGenFunc1129(n6, n6_1); /*0xffd0bc1d*/
          DebugPrint( /*0xffd0bc7c*/
            (int)n6,
            2,
            255,
            255,
            255,
            255,
            255,
            255,
            "*[%03d] - N:%d, C:%d, Rank:%d, subRank:%d, Ba:0x%X, Row:0x%05X, valid:%X, Mask:[%02X_%08X_%08X], Max:%d/%d -\n",
            v35,
            (unsigned __int8)n6a,
            n2_2,
            HIBYTE(v17) & 7,
            (v17 >> 21) & 7,
            (v17 >> 25) & 8 | (v17 >> 18) & 7,
            v17 & 0x3FFFF,
            v17 >> 31,
            v16[4],
            v16[3],
            v16[2],
            v18,
            v28);
          v15 = v35 + 1; /*0xffd0bc85*/
          v35 = v15; /*0xffd0bc87*/
        }
        while ( v15 < AutoGenFunc1129(n6, n6_1) ); /*0xffd0bc98*/
        n6a_1 = n6a; /*0xffd0bc9e*/
        v10 = v37; /*0xffd0bca2*/
      }
      n2_3 = n2_2; /*0xffd0bca6*/
      n6_2 = n6_1; /*0xffd0bcaa*/
    }
    n2_1 = n2; /*0xffd0bcae*/
    ++n6_2; /*0xffd0bcb2*/
    ++n2_3; /*0xffd0bcb4*/
    LOBYTE(n6_1) = n6_2; /*0xffd0bcb5*/
    v10 += 7688; /*0xffd0bcb9*/
    n2_2 = n2_3; /*0xffd0bcbf*/
    v37 = v10; /*0xffd0bcc3*/
  }
  while ( n6_2 < 6u ); /*0xffd0bcca*/
  DebugPrint((int)n6, 2, n6a, 255, 255, 255, 255, 255, "Total Error Count = %d \n", v28); /*0xffd0bcec*/
  if ( v28 ) /*0xffd0bcf9*/
  {
    if ( *((_BYTE *)buf + 6973) ) /*0xffd0bd03*/
    {
      if ( n6[1043] == 1 ) /*0xffd0bd17*/
      {
        DebugPrint((int)n6, 2, n6a, 255, 255, 255, 255, 255, "Vendor Repair Phase - Enable \n"); /*0xffd0bd2e*/
        v19 = GetSocketInfo((int)n6, n6a); /*0xffd0bd38*/
        n6_3 = 0; /*0xffd0bd3d*/
        v21 = 0; /*0xffd0bd42*/
        LOBYTE(n6_1) = 0; /*0xffd0bd44*/
        v36 = 0; /*0xffd0bd48*/
        v22 = (unsigned __int8 *)(v19 + 3); /*0xffd0bd4c*/
        v33 = (unsigned __int8 *)(v19 + 3); /*0xffd0bd4f*/
        do /*0xffd0be6d*/
        {
          if ( ((1 << v21) & n2) != 0 ) /*0xffd0bd60*/
          {
            v23 = GetCpuCount((int)n6, n6a, n6_1); /*0xffd0bd70*/
            v24 = 0; /*0xffd0bd75*/
            v38 = v23; /*0xffd0bd77*/
            LOBYTE(v30) = 0; /*0xffd0bd7e*/
            if ( *v22 ) /*0xffd0bd82*/
            {
              do /*0xffd0be47*/
              {
                v25 = 1379 * v24; /*0xffd0bd91*/
                if ( *(_BYTE *)(v25 + v23) && *(_WORD *)(v25 + v23 + 147) == 0xAD00 ) /*0xffd0bdae*/
                {
                  n6a_2 = n6a; /*0xffd0bdb4*/
                  LOBYTE(n2_2) = 0; /*0xffd0bdc1*/
                  if ( n6[50813 * (unsigned __int8)n6a + 10194] ) /*0xffd0bdc6*/
                  {
                    while ( 1 ) /*0xffd0bdd8*/
                    {
                      if ( !KtiFunc89E9((int)n6, n6a_2, n6_1, v30, n2_2, 0) ) /*0xffd0bde5*/
                      {
                        IioTailFunc9AF8(n6, (int)buf, n6a, n6_1, v30, n2_2, 0); /*0xffd0be02*/
                        IioTailFunc9AF8(n6, (int)buf, n6a, n6_1, v30, n2_2, 0x19u); /*0xffd0be18*/
                      }
                      LOBYTE(n2_2) = n2_2 + 1; /*0xffd0be26*/
                      if ( (unsigned __int8)n2_2 >= n6[50813 * (unsigned __int8)n6a + 10194] ) /*0xffd0be31*/
                        break; /*0xffd0be31*/
                      n6a_2 = n6a; /*0xffd0bdd4*/
                    }
                    v22 = v33; /*0xffd0be33*/
                  }
                  v23 = v38; /*0xffd0be37*/
                }
                v24 = v30 + 1; /*0xffd0be3f*/
                LOBYTE(v30) = v24; /*0xffd0be41*/
              }
              while ( v24 < *v22 ); /*0xffd0be47*/
              v21 = v36; /*0xffd0be4d*/
            }
            n6_3 = n6_1; /*0xffd0be51*/
          }
          ++n6_3; /*0xffd0be55*/
          v22 += 7688; /*0xffd0be57*/
          ++v21; /*0xffd0be5d*/
          LOBYTE(n6_1) = n6_3; /*0xffd0be5e*/
          v36 = v21; /*0xffd0be62*/
          v33 = v22; /*0xffd0be66*/
        }
        while ( n6_3 < 6u ); /*0xffd0be6d*/
      }
    }
    else
    {
      DebugPrint((int)n6, 2, n6a, 255, 255, 255, 255, 255, "Repair Phase - Enable \n"); /*0xffd0be86*/
    }
    AutoGenFunc5973(n6, n6a, n2, 16, 2u, a5); /*0xffd0bea0*/
    IioTailFuncB70C(n6, n6a); /*0xffd0beab*/
  }
  return 0; /*0xffd0beb3*/
}

// Function: IioTailX_FFD0BEBD @ 0xffd0bebd (0x111 bytes)
// Index: 2278/2560

char __cdecl IioTailX_FFD0BEBD(int __return_address)
{
  int n4; // edx
  _BYTE *v2; // eax
  int n4_1; // ebx
  int v4; // edi
  _DWORD *v5; // ecx
  _BYTE *v6; // edx
  int n3; // ebp
  unsigned __int8 n3_1; // al
  int v9; // esi
  int n4_2; // edi
  _BYTE *v11; // ecx
  unsigned int *v12; // edx
  int n3_2; // ebx
  char result; // al

  n4 = 4; /*0xffd0bec8*/
  v2 = (_BYTE *)(__return_address + 8309); /*0xffd0bec9*/
  do /*0xffd0bee0*/
  {
    *(v2 - 16) = 1; /*0xffd0bed1*/
    *v2++ = 2; /*0xffd0bed9*/
    --n4; /*0xffd0bedd*/
  }
  while ( n4 ); /*0xffd0bee0*/
  *(_WORD *)(__return_address + 8300) = 3840; /*0xffd0bee6*/
  n4_1 = 4; /*0xffd0beef*/
  *(_WORD *)(__return_address + 8297) = 0; /*0xffd0bef0*/
  v4 = __return_address + 8328; /*0xffd0bef7*/
  *(_DWORD *)(__return_address + 8303) = 33619969; /*0xffd0befd*/
  *(_BYTE *)(__return_address + 8302) = 1; /*0xffd0bf07*/
  *(_WORD *)(__return_address + 8307) = 513; /*0xffd0bf0e*/
  *(_WORD *)(__return_address + 8324) = 514; /*0xffd0bf17*/
  *(_BYTE *)(__return_address + 8326) = 1; /*0xffd0bf20*/
  *(_DWORD *)(__return_address + 8313) = 33686017; /*0xffd0bf27*/
  *(_DWORD *)(__return_address + 8317) = 131074; /*0xffd0bf31*/
  *(_WORD *)(__return_address + 8321) = 256; /*0xffd0bf3b*/
  do /*0xffd0bf7d*/
  {
    v5 = (_DWORD *)(v4 + 6); /*0xffd0bf47*/
    v6 = (_BYTE *)v4; /*0xffd0bf4a*/
    n3 = 3; /*0xffd0bf4c*/
    do /*0xffd0bf75*/
    {
      *v6 &= ~1u; /*0xffd0bf4d*/
      n3_1 = *(_BYTE *)(__return_address + 8314); /*0xffd0bf50*/
      if ( n3_1 >= 3u ) /*0xffd0bf58*/
        *v5 &= 0xFFFFFFF8; /*0xffd0bf66*/
      else
        *v5 ^= (*v5 ^ n3_1) & 7; /*0xffd0bf62*/
      *v6 |= 0xFEu; /*0xffd0bf69*/
      ++v5; /*0xffd0bf6c*/
      v6 += 2; /*0xffd0bf6f*/
      --n3; /*0xffd0bf72*/
    }
    while ( n3 ); /*0xffd0bf75*/
    v4 += 18; /*0xffd0bf77*/
    --n4_1; /*0xffd0bf7a*/
  }
  while ( n4_1 ); /*0xffd0bf7d*/
  AutoGenFunc8E72(__return_address + 8400, byte_FFD5CD34, 18); /*0xffd0bf8d*/
  v9 = __return_address + 8418; /*0xffd0bf95*/
  n4_2 = 4; /*0xffd0bf9d*/
  do /*0xffd0bfc8*/
  {
    v11 = (_BYTE *)(v9 + 12); /*0xffd0bfa1*/
    v12 = (unsigned int *)v9; /*0xffd0bfa4*/
    n3_2 = 3; /*0xffd0bfa6*/
    do /*0xffd0bfc0*/
    {
      *v12 = *v12 & 0xFFFFFFC0 | 0x2A; /*0xffd0bfaf*/
      ++v12; /*0xffd0bfb1*/
      result = *v11 & 0xFC | 2; /*0xffd0bfb8*/
      *v11++ = result; /*0xffd0bfba*/
      --n3_2; /*0xffd0bfbd*/
    }
    while ( n3_2 ); /*0xffd0bfc0*/
    v9 += 15; /*0xffd0bfc2*/
    --n4_2; /*0xffd0bfc5*/
  }
  while ( n4_2 ); /*0xffd0bfc8*/
  return result; /*0xffd0bfca*/
}

// Function: IioTailCmdInitCfg @ 0xffd0bfce (0x163 bytes)
// Index: 2279/2560

int __cdecl IioTailCmdInitCfg(_DWORD *i)
{
  int v1; // esi
  bool v2; // zf
  char *v3; // eax
  char *v4; // ecx
  int n3; // edx
  int buf_; // [esp+10h] [ebp-48h] BYREF
  char v8; // [esp+14h] [ebp-44h]
  char v9; // [esp+15h] [ebp-43h]
  __int16 n257; // [esp+16h] [ebp-42h]
  bool v11; // [esp+18h] [ebp-40h]
  bool v12; // [esp+19h] [ebp-3Fh]
  int n16843009; // [esp+1Bh] [ebp-3Dh]
  int n16843009_1; // [esp+1Fh] [ebp-39h]
  char v15; // [esp+23h] [ebp-35h]
  __int16 n32; // [esp+24h] [ebp-34h]
  int v17; // [esp+26h] [ebp-32h]
  int n7; // [esp+2Ah] [ebp-2Eh]
  __int16 n255; // [esp+38h] [ebp-20h]
  int v20; // [esp+3Ah] [ebp-1Eh]
  char v21; // [esp+3Eh] [ebp-1Ah]
  bool v22; // [esp+3Fh] [ebp-19h]
  bool v23; // [esp+40h] [ebp-18h]
  char v24; // [esp+41h] [ebp-17h]
  char v25; // [esp+42h] [ebp-16h]
  char v26; // [esp+43h] [ebp-15h] BYREF
  char v27; // [esp+49h] [ebp-Fh] BYREF

  v1 = *(_DWORD *)(i[3] + 4); /*0xffd0bfe1*/
  v9 = 2 * (*(_BYTE *)(v1 + 178) != 0) + 1; /*0xffd0bff5*/
  v11 = *(_BYTE *)(v1 + 179) != 0; /*0xffd0c000*/
  v12 = *(_BYTE *)(v1 + 174) != 0; /*0xffd0c00c*/
  v22 = *(_BYTE *)(v1 + 175) != 0; /*0xffd0c018*/
  v2 = *(_BYTE *)(v1 + 176) == 0; /*0xffd0c01d*/
  v8 = -1; /*0xffd0c024*/
  v23 = !v2; /*0xffd0c028*/
  n257 = 257; /*0xffd0c02d*/
  buf_ = -1; /*0xffd0c034*/
  if ( *(_BYTE *)(v1 + 180) ) /*0xffd0c039*/
  {
    LOBYTE(n16843009) = *(_BYTE *)(v1 + 181); /*0xffd0c048*/
    BYTE1(n16843009) = *(_BYTE *)(v1 + 183); /*0xffd0c052*/
    BYTE2(n16843009) = *(_BYTE *)(v1 + 182); /*0xffd0c05c*/
    HIBYTE(n16843009) = *(_BYTE *)(v1 + 184); /*0xffd0c066*/
    LOWORD(n16843009_1) = *(_WORD *)(v1 + 185); /*0xffd0c070*/
    HIWORD(n16843009_1) = *(_WORD *)(v1 + 188); /*0xffd0c084*/
    v15 = *(_BYTE *)(v1 + 190); /*0xffd0c098*/
  }
  else
  {
    n16843009 = 16843009; /*0xffd0c09e*/
    n16843009_1 = 16843009; /*0xffd0c0a6*/
    v15 = 1; /*0xffd0c0ae*/
  }
  v24 = *(_BYTE *)(v1 + 191); /*0xffd0c0be*/
  v17 = *(unsigned __int8 *)(v1 + 177); /*0xffd0c0cb*/
  v3 = &v27; /*0xffd0c0cf*/
  n255 = 255; /*0xffd0c0d3*/
  v4 = &v26; /*0xffd0c0d8*/
  n32 = 32; /*0xffd0c0dc*/
  n7 = 7; /*0xffd0c0e1*/
  v20 = 0; /*0xffd0c0e9*/
  v21 = 1; /*0xffd0c0ed*/
  v25 = 0; /*0xffd0c0f2*/
  n3 = 3; /*0xffd0c0f6*/
  do /*0xffd0c109*/
  {
    *(_WORD *)v4 = 32; /*0xffd0c0f7*/
    v4 += 2; /*0xffd0c0fa*/
    *(_DWORD *)v3 = 16; /*0xffd0c0fd*/
    v3 += 4; /*0xffd0c103*/
    --n3; /*0xffd0c106*/
  }
  while ( n3 ); /*0xffd0c109*/
  ProcCommonFuncFE01(v1, 0); /*0xffd0c10d*/
  ProcCommonFuncFE1B(v1, 0); /*0xffd0c114*/
  IioFunc6A16(i, (int)&buf_); /*0xffd0c11f*/
  return 0; /*0xffd0c129*/
}

// Function: IioTailFuncC131 @ 0xffd0c131 (0x55 bytes)
// Index: 2280/2560

int __cdecl IioTailFuncC131(unsigned __int8 *__return_address, int buf, int n6)
{
  int v3; // eax

  DebugPrint((int)__return_address, 32, buf, n6, 255, 255, 255, 255, "CpgcDisableGlobalStart\n"); /*0xffd0c14e*/
  v3 = MailBoxFunc8E6B((int)__return_address, buf, n6, 117459720, 4); /*0xffd0c164*/
  return MailBoxFunc902D((int)__return_address, buf, n6, 117459720, 4, v3 & 0xFFFFFF7F); /*0xffd0c183*/
}

// Function: DdrTrainMailboxPhyConfig @ 0xffd0c186 (0x293 bytes)
// Index: 2281/2560

int __cdecl DdrTrainMailboxPhyConfig(unsigned __int8 *n6, int n4, int n6a, unsigned __int8 *a4)
{
  unsigned __int8 v4; // bl
  unsigned __int8 v5; // bh
  int v6; // esi
  int v7; // edi
  char v8; // al
  int v9; // edi
  int v10; // eax
  int v11; // eax
  char v12; // al
  int v13; // edx
  unsigned __int8 v15; // [esp+11h] [ebp-17h]
  unsigned __int8 v16; // [esp+12h] [ebp-16h]
  unsigned __int8 v17; // [esp+13h] [ebp-15h]
  unsigned __int8 v18; // [esp+14h] [ebp-14h]
  unsigned __int8 v19; // [esp+15h] [ebp-13h]
  unsigned __int8 v20; // [esp+16h] [ebp-12h]
  unsigned __int8 v21; // [esp+17h] [ebp-11h]
  unsigned __int8 v22; // [esp+18h] [ebp-10h]
  unsigned __int8 v23; // [esp+19h] [ebp-Fh]
  unsigned __int8 v24; // [esp+1Ah] [ebp-Eh]
  unsigned __int8 v25; // [esp+1Bh] [ebp-Dh]
  int v26; // [esp+1Ch] [ebp-Ch]
  int v27; // [esp+20h] [ebp-8h]
  char v28; // [esp+24h] [ebp-4h]

  v28 = DdrTrainFunc45AB((int)n6, n4, n6a); /*0xffd0c1a3*/
  v18 = *a4; /*0xffd0c1b2*/
  v20 = a4[1]; /*0xffd0c1b9*/
  v19 = a4[2]; /*0xffd0c1c0*/
  v4 = a4[14]; /*0xffd0c1c7*/
  v5 = a4[15]; /*0xffd0c1ca*/
  v23 = a4[3]; /*0xffd0c1cd*/
  v22 = a4[4]; /*0xffd0c1d4*/
  v21 = a4[5]; /*0xffd0c1db*/
  v16 = a4[6]; /*0xffd0c1e2*/
  v24 = a4[7]; /*0xffd0c1e9*/
  v25 = a4[8]; /*0xffd0c1f0*/
  v17 = a4[9]; /*0xffd0c1f7*/
  v15 = a4[10]; /*0xffd0c203*/
  v6 = MiscConfigCheck(n6, n4, n6a, 184567108); /*0xffd0c215*/
  v7 = MiscConfigCheck(n6, n4, n6a, 184567096); /*0xffd0c22a*/
  v26 = MiscConfigCheck(n6, n4, n6a, 184567100); /*0xffd0c23f*/
  v27 = MiscConfigCheck(n6, n4, n6a, 184567104) & 0x7FFFFFC0; /*0xffd0c25b*/
  MiscIoCheck(n6, n4, n6a, 0xB004544u, v6 & 0xFFFFFF00); /*0xffd0c26f*/
  MiscIoCheck(n6, n4, n6a, 0xB004538u, v4 | v7 & 0xFFFFFF00); /*0xffd0c28b*/
  MiscIoCheck(n6, n4, n6a, 0xB00453Cu, v5 | v26 & 0xFFFFFF00); /*0xffd0c2ab*/
  MiscIoCheck(n6, n4, n6a, 0xB004540u, v27); /*0xffd0c2bc*/
  v8 = MailBoxFunc8E6B((int)n6, n4, n6a, 117459720, 4); /*0xffd0c2cf*/
  MailBoxFunc902D( /*0xffd0c312*/
    (int)n6,
    n4,
    n6a,
    117459720,
    4,
    (16 * (v20 & 1 | ((v19 & 0x1F | (((16 * v18) | v17 & 0xF) << 9)) << 6) | 0x18)) | v8 & 0x6F);
  v9 = v22 & 0x7F; /*0xffd0c32f*/
  v10 = MailBoxFunc8E6B((int)n6, n4, n6a, 117459984, 80); /*0xffd0c332*/
  MailBoxFunc902D((int)n6, n4, n6a, 117459984, 80, v9 | ((v21 | ((v23 & 0xF | 0x40) << 12)) << 8) | v10 & 0xFF000000); /*0xffd0c363*/
  if ( v15 != 0xFF ) /*0xffd0c370*/
  {
    v11 = MailBoxFunc8E6B((int)n6, n4, n6a, 117459992, 80); /*0xffd0c37c*/
    MailBoxFunc902D((int)n6, n4, n6a, 117459992, 80, v9 | ((v21 | ((v15 & 0xF | 0x40) << 12)) << 8) | v11 & 0xFF000000); /*0xffd0c3aa*/
  }
  v12 = MailBoxFunc8E0B(n6a, (int)n6, n4, v28, 117459712); /*0xffd0c3c5*/
  v13 = v16; /*0xffd0c3ca*/
  if ( (v12 & 0x20) != 0 ) /*0xffd0c3d4*/
    v13 = v16 & 3; /*0xffd0c3d6*/
  MiscIoCheck(n6, n4, n6a, 0xB004548u, (v13 << 16) | (v24 << 24) | ((a4[16] & 1 | ((v25 & 7) << 6)) << 6) | 1); /*0xffd0c407*/
  return 0; /*0xffd0c411*/
}

// Function: IioTailX_FFD0C419 @ 0xffd0c419 (0x7e bytes)
// Index: 2282/2560

int __cdecl IioTailX_FFD0C419(unsigned __int8 *n6, int n4, int n6a, int a4, unsigned __int8 a5)
{
  unsigned __int8 v6[7]; // [esp+4h] [ebp-14h] BYREF
  int v7; // [esp+Bh] [ebp-Dh]
  int n256; // [esp+Fh] [ebp-9h]
  __int16 v9; // [esp+13h] [ebp-5h]

  v6[2] = a5; /*0xffd0c422*/
  *(_WORD *)v6 = 0; /*0xffd0c428*/
  v9 = 0; /*0xffd0c42c*/
  *(_DWORD *)&v6[3] = -16777216; /*0xffd0c437*/
  v7 = -16776193; /*0xffd0c441*/
  n256 = 256; /*0xffd0c44b*/
  DdrTrainMailboxPhyConfig(n6, n4, n6a, v6); /*0xffd0c452*/
  IioTailFuncC62A(n6, n4, n6a, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0); /*0xffd0c471*/
  MiscIoCheck(n6, n4, n6a, 0xB004500u, 0); /*0xffd0c488*/
  return 0; /*0xffd0c492*/
}

// Function: IioTailX_FFD0C497 @ 0xffd0c497 (0x193 bytes)
// Index: 2283/2560

unsigned __int8 __cdecl IioTailX_FFD0C497(unsigned __int8 *__return_address, int buf, int a3, char a4, char a5)
{
  int v5; // ebp
  int v6; // eax
  int v7; // eax
  int v8; // eax
  unsigned __int8 n6_1; // al
  int n6; // [esp+10h] [ebp-10h]
  char v11; // [esp+14h] [ebp-Ch]
  int SocketInfo; // [esp+18h] [ebp-8h]

  v11 = 0; /*0xffd0c4ad*/
  v5 = 0; /*0xffd0c4b2*/
  SocketInfo = GetSocketInfo((int)__return_address, buf); /*0xffd0c4b4*/
  LOBYTE(n6) = 0; /*0xffd0c4bf*/
  do /*0xffd0c61c*/
  {
    DdrTrainFunc45AB((int)__return_address, buf, n6); /*0xffd0c4cf*/
    if ( ((1 << v11) & a3) != 0 /*0xffd0c516*/
      && __return_address[48704 * (unsigned __int8)buf + 258722 + v5]
      && (*(_BYTE *)(SocketInfo + v5 + 6262) || !a5) )
    {
      MiscIoCheck(__return_address, buf, n6, 0xB00454Cu, 0); /*0xffd0c526*/
      MiscIoCheck(__return_address, buf, n6, 0xB004550u, 0); /*0xffd0c535*/
      if ( __return_address[257312] ) /*0xffd0c53d*/
        MiscIoCheck(__return_address, buf, n6, 0xB004554u, 0); /*0xffd0c548*/
      else
        MiscIoCheck(__return_address, buf, n6, 0xB004554u, 255); /*0xffd0c557*/
      v6 = MiscConfigCheck(__return_address, buf, n6, 184567112); /*0xffd0c567*/
      MiscIoCheck(__return_address, buf, n6, 0xB004548u, v6 | 0xFF000000); /*0xffd0c57a*/
      v7 = MailBoxFunc8E6B((int)__return_address, buf, n6, 117459720, 4); /*0xffd0c589*/
      MailBoxFunc902D((int)__return_address, buf, n6, 117459720, 4, v7 & 0xFF8783EF | 0x400); /*0xffd0c5a3*/
      DdrTrainFuncE35((int)__return_address, buf, n6, 1 << a4, 0xAu, a5); /*0xffd0c5c0*/
      v8 = MiscConfigCheck(__return_address, buf, n6, 117525076); /*0xffd0c5cd*/
      MiscIoCheck(__return_address, buf, n6, 0x7014A54u, v8 & 0xFFFF3FFF); /*0xffd0c5e0*/
      MailBoxFunc902D((int)__return_address, buf, n6, 117459820, 4, 0); /*0xffd0c5f1*/
    }
    else
    {
      IioTailFuncC131(__return_address, buf, n6); /*0xffd0c5fe*/
    }
    v5 += 7688; /*0xffd0c60a*/
    n6_1 = n6 + 1; /*0xffd0c610*/
    ++v11; /*0xffd0c612*/
    LOBYTE(n6) = n6_1; /*0xffd0c616*/
  }
  while ( n6_1 < 6u ); /*0xffd0c61c*/
  return n6_1; /*0xffd0c622*/
}

// Function: IioTailFuncC62A @ 0xffd0c62a (0x12b bytes)
// Index: 2284/2560

int __cdecl IioTailFuncC62A(
        unsigned __int8 *n6,
        unsigned __int8 n4,
        int n6a,
        char a4,
        char a5,
        char a6,
        char a7,
        char a8,
        char a9,
        int a10,
        int a11,
        int n0x4000000,
        int a13,
        int a14,
        int a15,
        int n1946157284)
{
  MiscIoCheck(n6, n4, n6a, 0xB014534u, a9 & 3 | (8 * (a9 & 3 | (8 * (a9 & 3 | 0x300))))); /*0xffd0c65c*/
  MiscIoCheck(n6, n4, n6a, 0xB0044A0u, a4 & 0x1F | (32 * (a5 & 1 | (8 * (a6 & 0x3F | ((a7 & 0x3F) << 8)))))); /*0xffd0c699*/
  if ( a8 ) /*0xffd0c6ab*/
  {
    MiscIoCheck(n6, n4, n6a, 0xB01450Cu, 11184810); /*0xffd0c6b6*/
    MiscIoCheck(n6, n4, n6a, 0xB014510u, 13421772); /*0xffd0c6c8*/
    MiscIoCheck(n6, n4, n6a, 0xB014514u, 15790320); /*0xffd0c6da*/
  }
  MiscIoCheck(n6, n4, n6a, 0xB014518u, 11184810); /*0xffd0c6eb*/
  MiscIoCheck(n6, n4, n6a, 0xB01451Cu, 13421772); /*0xffd0c6fd*/
  MiscIoCheck(n6, n4, n6a, 0xB014520u, 15790320); /*0xffd0c70f*/
  return MemChipFuncBB76(n6, n4, n6a, a10, a11, n0x4000000, a13, a14, a15, n1946157284); /*0xffd0c750*/
}

// Function: IioTailFuncC755 @ 0xffd0c755 (0x1f bytes)
// Index: 2285/2560

unsigned int __cdecl IioTailFuncC755(int a1, unsigned __int8 a2, unsigned __int8 a3, unsigned __int16 a4)
{
  return KtiFunc4541(*(_DWORD *)(a1 + 8588), a2, a3, a4); /*0xffd0c773*/
}

// Function: IioTailFuncC774 @ 0xffd0c774 (0x5a bytes)
// Index: 2286/2560

__int16 __cdecl IioTailFuncC774(int src, __int16 n4, char a3, char n31, char n2, __int16 n64)
{
  _DWORD v7[4]; // [esp+0h] [ebp-10h] BYREF

  v7[3] = 0; /*0xffd0c782*/
  v7[1] = (unsigned __int8)n4; /*0xffd0c786*/
  v7[2] = 256; /*0xffd0c794*/
  v7[0] = n64 & 0xFFF | ((n2 & 7 | (8 * (n31 & 0x1F | (32 * (unsigned __int8)a3)))) << 12); /*0xffd0c7bb*/
  AutoGenFunc3C4((int)v7, (int)&n4); /*0xffd0c7bf*/
  return n4; /*0xffd0c7ca*/
}

// Function: IioTailFuncC7CE @ 0xffd0c7ce (0x59 bytes)
// Index: 2287/2560

int __cdecl IioTailFuncC7CE(int src, int n4, unsigned __int8 a3, char n7, char n2, __int16 n19272)
{
  _DWORD v7[4]; // [esp+0h] [ebp-10h] BYREF

  v7[3] = 0; /*0xffd0c7dc*/
  v7[1] = (unsigned __int8)n4; /*0xffd0c7e0*/
  v7[2] = 512; /*0xffd0c7ee*/
  v7[0] = n19272 & 0xFFF | ((n2 & 7 | (8 * (n7 & 0x1F | (32 * a3)))) << 12); /*0xffd0c815*/
  AutoGenFunc3C4((int)v7, (int)&n4); /*0xffd0c819*/
  return n4; /*0xffd0c823*/
}

// Function: IioTailFuncC827 @ 0xffd0c827 (0x56 bytes)
// Index: 2288/2560

char __cdecl IioTailFuncC827(int src, int n4, unsigned __int8 a3, char srcb, char n2, __int16 n64)
{
  _DWORD v7[4]; // [esp+0h] [ebp-10h] BYREF

  v7[3] = 0; /*0xffd0c835*/
  v7[2] = 0; /*0xffd0c839*/
  v7[1] = (unsigned __int8)n4; /*0xffd0c83d*/
  v7[0] = n64 & 0xFFF | ((n2 & 7 | (8 * (srcb & 0x1F | (32 * a3)))) << 12); /*0xffd0c86b*/
  AutoGenFunc3C4((int)v7, (int)&n4 + 3); /*0xffd0c86f*/
  return HIBYTE(n4); /*0xffd0c879*/
}

// Function: IioTailFuncC87D @ 0xffd0c87d (0x56 bytes)
// Index: 2289/2560

int IioTailFuncC87D(int src, unsigned __int8 n4, unsigned __int8 a3, char srcb, char n2, __int16 a6, ...)
{
  _DWORD v7[4]; // [esp+0h] [ebp-10h] BYREF
  va_list va; // [esp+30h] [ebp+20h] BYREF

  va_start(va, a6);
  v7[3] = 0; /*0xffd0c88b*/
  v7[1] = n4; /*0xffd0c88f*/
  v7[2] = 8448; /*0xffd0c89d*/
  v7[0] = a6 & 0xFFF | ((n2 & 7 | (8 * (srcb & 0x1F | (32 * a3)))) << 12); /*0xffd0c8c4*/
  return AutoGenFunc3DB((int)v7, (int)va); /*0xffd0c8cf*/
}

// Function: IioTailFuncC8D3 @ 0xffd0c8d3 (0x56 bytes)
// Index: 2290/2560

int IioTailFuncC8D3(int a1, unsigned __int8 a2, unsigned __int8 a3, char a4, char a5, __int16 a6, ...)
{
  _DWORD v7[4]; // [esp+0h] [ebp-10h] BYREF
  va_list va; // [esp+30h] [ebp+20h] BYREF

  va_start(va, a6);
  v7[3] = 0; /*0xffd0c8e1*/
  v7[1] = a2; /*0xffd0c8e5*/
  v7[2] = 8704; /*0xffd0c8f3*/
  v7[0] = a6 & 0xFFF | ((a5 & 7 | (8 * (a4 & 0x1F | (32 * a3)))) << 12); /*0xffd0c91a*/
  return AutoGenFunc3DB((int)v7, (int)va); /*0xffd0c925*/
}

// Function: IioTailFuncC929 @ 0xffd0c929 (0x56 bytes)
// Index: 2291/2560

int IioTailFuncC929(int src, unsigned __int8 n4, unsigned __int8 a3, char srcb, char n2, __int16 n214, ...)
{
  _DWORD v7[4]; // [esp+0h] [ebp-10h] BYREF
  va_list va; // [esp+30h] [ebp+20h] BYREF

  va_start(va, n214);
  v7[3] = 0; /*0xffd0c937*/
  v7[1] = n4; /*0xffd0c93b*/
  v7[2] = 0x2000; /*0xffd0c949*/
  v7[0] = n214 & 0xFFF | ((n2 & 7 | (8 * (srcb & 0x1F | (32 * a3)))) << 12); /*0xffd0c970*/
  return AutoGenFunc3DB((int)v7, (int)va); /*0xffd0c97b*/
}

// Function: IioTailFuncC97F @ 0xffd0c97f (0x1f bytes)
// Index: 2292/2560

int __cdecl IioTailFuncC97F(int a1, unsigned __int8 a2, unsigned __int8 a3, int a4)
{
  return CpuIoRead(*(_DWORD *)(a1 + 8588), a2, a3, a4); /*0xffd0c99d*/
}

// Function: IioTailFuncC99E @ 0xffd0c99e (0x24 bytes)
// Index: 2293/2560

int __cdecl IioTailFuncC99E(int a1, unsigned __int8 a2, unsigned __int8 a3, int a4, unsigned __int16 a5)
{
  return CpuIoCfgWrite(*(_DWORD *)(a1 + 8588), a2, a3, a4, a5); /*0xffd0c9c0*/
}

// Function: IioTailFuncC9C2 @ 0xffd0c9c2 (0x22 bytes)
// Index: 2294/2560

int __cdecl IioTailFuncC9C2(int a1, unsigned __int8 a2, unsigned __int8 a3, int a4, int a5)
{
  return CpuIoCfgWrite(*(_DWORD *)(a1 + 8588), a2, a3, a4, a5); /*0xffd0c9e2*/
}

// Function: IioTailFuncC9E4 @ 0xffd0c9e4 (0x24 bytes)
// Index: 2295/2560

int __cdecl IioTailFuncC9E4(int a1, unsigned __int8 a2, unsigned __int8 a3, int a4, unsigned __int8 a5)
{
  return CpuIoCfgWrite(*(_DWORD *)(a1 + 8588), a2, a3, a4, a5); /*0xffd0ca06*/
}

// Function: IioTailFuncCA08 @ 0xffd0ca08 (0x5 bytes)
// Index: 2296/2560

// attributes: thunk
int __cdecl IioTailFuncCA08()
{
  return IioTailFuncCA12();
}

// Function: IioTailFuncCA0D @ 0xffd0ca0d (0x5 bytes)
// Index: 2297/2560

// attributes: thunk
char __cdecl IioTailFuncCA0D(int a1, char *a2, int a3)
{
  return AutoGenFunc8E72(a1, a2, a3);
}

// Function: IioTailFuncCA12 @ 0xffd0ca12 (0x2e bytes)
// Index: 2298/2560

int IioTailFuncCA12()
{
  int n255; // eax
  unsigned int n0xFE; // [esp+0h] [ebp-4h]

  n0xFE = 0; /*0xffd0ca16*/
  n255 = 255; /*0xffd0ca1d*/
  while ( n0xFE != 255 ) /*0xffd0ca3a*/
  {
    if ( n0xFE >= 0xFE ) /*0xffd0ca2b*/
      n0xFE = 0; /*0xffd0ca2d*/
    ++n0xFE; /*0xffd0ca34*/
  }
  return n255; /*0xffd0ca3c*/
}

// Function: IioTailFuncCA40 @ 0xffd0ca40 (0x16 bytes)
// Index: 2299/2560

unsigned __int8 __cdecl IioTailFuncCA40(int a1, unsigned int i)
{
  return KtiFunc8C4(*(_DWORD *)(a1 + 8588), i); /*0xffd0ca55*/
}

// Function: IioTailFuncCA56 @ 0xffd0ca56 (0xac bytes)
// Index: 2300/2560

char __cdecl IioTailFuncCA56(int a1, unsigned __int8 a2, unsigned __int8 a3)
{
  char v3; // bl
  int v4; // edi

  v3 = 0; /*0xffd0ca62*/
  v4 = *(unsigned __int8 *)(a1 + 8 * a3 + 7487); /*0xffd0ca6c*/
  if ( *(_BYTE *)(a1 + 8 * a3 + 7487) ) /*0xffd0ca65*/
  {
    switch ( *(_BYTE *)(a1 + 8 * a3 + 7487) ) /*0xffd0ca7c*/
    {
      case 1: /*0xffd0ca7c*/
        return *(_BYTE *)(a2 + a1 + 1187); /*0xffd0caf4*/
      case 5: /*0xffd0ca7c*/
        return *(_BYTE *)(a2 + a1 + 1191); /*0xffd0cae7*/
      case 9: /*0xffd0ca7c*/
        return *(_BYTE *)(a2 + a1 + 1195); /*0xffd0cada*/
      case 0xD: /*0xffd0ca7c*/
        return *(_BYTE *)(a2 + a1 + 1199); /*0xffd0cacd*/
      case 0x11: /*0xffd0ca7c*/
        return *(_BYTE *)(a2 + a1 + 1203); /*0xffd0cac0*/
      default:
        nullsub_5(a1, 0x80000000); /*0xffd0caab*/
        IioTailFuncCA08(a1, v4); /*0xffd0cab2*/
        break;
    }
  }
  return v3; /*0xffd0cafb*/
}

// Function: IioTailFuncCB02 @ 0xffd0cb02 (0x23 bytes)
// Index: 2301/2560

bool __cdecl IioTailFuncCB02(int src, unsigned __int8 n4, char n0x15)
{
  return *(_BYTE *)(n4 + src + 7446) == 3 && (unsigned __int8)(n0x15 - 13) <= 3u; /*0xffd0cb21*/
}

// Function: IioTailFuncCB25 @ 0xffd0cb25 (0x26 bytes)
// Index: 2302/2560

bool __cdecl IioTailFuncCB25(int a1, unsigned __int8 a2, unsigned __int8 a3)
{
  char n2; // al

  n2 = *(_BYTE *)(a3 + a1 + 21 * a2 + 7832); /*0xffd0cb36*/
  return n2 == 1 || n2 == 2; /*0xffd0cb47*/
}

// Function: IioTailFuncCB4B @ 0xffd0cb4b (0x87 bytes)
// Index: 2303/2560

char __cdecl IioTailFuncCB4B(int a1, int a2, int a3)
{
  char v3; // bl
  int v4; // eax
  char v5; // al

  v3 = 1; /*0xffd0cb51*/
  if ( !IioTailFuncCB25(a1, a2, a3) && !(unsigned __int8)IioTailFuncCEB0(a1, a2, a3) ) /*0xffd0cb6f*/
  {
    v4 = (unsigned __int8)IioTailFuncCC57(a1, a2, a3) - 1; /*0xffd0cb89*/
    if ( v4 ) /*0xffd0cb8c*/
    {
      if ( v4 != 1 ) /*0xffd0cb91*/
        return 0; /*0xffd0cb91*/
      if ( !(unsigned __int8)IioTailFuncD073(a1, a2, a3) ) /*0xffd0cb96*/
      {
        v5 = *(_BYTE *)(a1 + 4812); /*0xffd0cba2*/
        if ( !v5 || v5 == 1 && !*(_BYTE *)((unsigned __int8)a3 + a1 + 21 * (unsigned __int8)a2 + 515) ) /*0xffd0cbbf*/
          return 0; /*0xffd0cbc9*/
      }
    }
  }
  return v3; /*0xffd0cbcb*/
}

// Function: IioTailFuncCBD2 @ 0xffd0cbd2 (0x11 bytes)
// Index: 2304/2560

unsigned __int8 __cdecl IioTailFuncCBD2(unsigned __int8 n0xD)
{
  unsigned __int8 n0xD_1; // al

  n0xD_1 = n0xD; /*0xffd0cbd2*/
  if ( n0xD ) /*0xffd0cbd8*/
    return (n0xD >= 0xDu) + 1; /*0xffd0cbe0*/
  return n0xD_1; /*0xffd0cbda*/
}

// Function: IioTailFuncCBE3 @ 0xffd0cbe3 (0x4a bytes)
// Index: 2305/2560

char __cdecl IioTailFuncCBE3(int src, unsigned __int8 n4, unsigned __int8 n4a)
{
  char v3; // bl

  v3 = 0; /*0xffd0cbe8*/
  if ( !n4a || n4a >= 4u ) /*0xffd0cbf0*/
    return 0; /*0xffd0cc29*/
  if ( *(_BYTE *)((unsigned __int8)(n4a - 1) + 3 * (n4 + 1530) + src) ) /*0xffd0cc0a*/
  {
    v3 = 1; /*0xffd0cc1b*/
    nullsub_5(); /*0xffd0cc1d*/
  }
  return v3; /*0xffd0cc27*/
}

// Function: IioTailFuncCC2D @ 0xffd0cc2d (0x2a bytes)
// Index: 2306/2560

char __cdecl IioTailFuncCC2D(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  char n2; // cl

  n2 = 2; /*0xffd0cc48*/
  if ( *(_BYTE *)(n0x15 + src + 21 * n4 + 1322) != 2 && *(_BYTE *)(n0x15 + src + 21 * n4 + 1322) != 7 ) /*0xffd0cc50*/
    return 0; /*0xffd0cc52*/
  return n2; /*0xffd0cc56*/
}

// Function: IioTailFuncCC57 @ 0xffd0cc57 (0x27 bytes)
// Index: 2307/2560

char __cdecl IioTailFuncCC57(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  char result; // al

  result = *(_BYTE *)(n0x15 + src + 21 * n4 + 2078); /*0xffd0cc68*/
  if ( result != 1 )
    return result == 0 ? 0 : 2;
  return result; /*0xffd0cc73*/
}

// Function: IioTailFuncCC7E @ 0xffd0cc7e (0x1f bytes)
// Index: 2308/2560

char __cdecl IioTailFuncCC7E(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  char result; // al

  result = *(_BYTE *)(n0x15 + src + 21 * n4 + 2582); /*0xffd0cc8f*/
  if ( !result ) /*0xffd0cc98*/
    return 3; /*0xffd0cc9a*/
  return result; /*0xffd0cc9c*/
}

// Function: IioTailFuncCC9D @ 0xffd0cc9d (0x19f bytes)
// Index: 2309/2560

int __cdecl IioTailFuncCC9D(int src)
{
  unsigned __int8 n4; // bl
  int result; // eax
  int v3; // ebp
  unsigned __int8 n0x15; // bh
  unsigned int n2; // eax
  char v6; // [esp+14h] [ebp-18h]
  unsigned __int8 n4_1; // [esp+18h] [ebp-14h]
  int v8; // [esp+1Ch] [ebp-10h]
  int v9; // [esp+20h] [ebp-Ch]
  int v10; // [esp+24h] [ebp-8h]
  unsigned int v11; // [esp+28h] [ebp-4h]

  nullsub_5(); /*0xffd0ccb0*/
  n4 = 0; /*0xffd0ccb5*/
  result = src + 6924; /*0xffd0ccb7*/
  n4_1 = 0; /*0xffd0ccc0*/
  v3 = 0; /*0xffd0ccc4*/
  v10 = src + 6924; /*0xffd0ccc6*/
  do /*0xffd0ce2e*/
  {
    if ( *(_BYTE *)(src + v3 + 6776) ) /*0xffd0ccca*/
    {
      n0x15 = 0; /*0xffd0ccda*/
      v6 = 0; /*0xffd0cce2*/
      v8 = result; /*0xffd0cce6*/
      v9 = src + 7481; /*0xffd0ccea*/
      do /*0xffd0ce13*/
      {
        if ( IioTailFuncD055(src, n4_1, v6) ) /*0xffd0cd0a*/
        {
          if ( IioTailFuncCEB0(src, n4_1, v6) != 1 ) /*0xffd0cd2d*/
          {
            LOWORD(v11) = IioTailFuncC97F(src, n4_1, v6, 234889378); /*0xffd0cd4c*/
            n2 = (v11 >> 4) & 0x3F; /*0xffd0cd58*/
            if ( n2 <= 2 || n2 == 4 || (_WORD)n2 == 8 || n2 == 16 ) /*0xffd0cdac*/
            {
              nullsub_5(); /*0xffd0cdcc*/
              nullsub_5(); /*0xffd0cdec*/
            }
          }
        }
        v6 = ++n0x15; /*0xffd0ce04*/
        ++v8; /*0xffd0ce08*/
        v9 += 8; /*0xffd0ce0c*/
      }
      while ( n0x15 < 0x15u ); /*0xffd0ce13*/
      result = v10; /*0xffd0ce19*/
    }
    ++n4; /*0xffd0ce1d*/
    result += 21; /*0xffd0ce1f*/
    ++v3; /*0xffd0ce22*/
    n4_1 = n4; /*0xffd0ce23*/
    v10 = result; /*0xffd0ce27*/
  }
  while ( n4 < 4u ); /*0xffd0ce2e*/
  return result; /*0xffd0ce34*/
}

// Function: IioTailFuncCE3C @ 0xffd0ce3c (0x19 bytes)
// Index: 2310/2560

char __cdecl IioTailFuncCE3C(unsigned __int8 n4)
{
  if ( n4 ) /*0xffd0ce42*/
  {
    if ( n4 <= 4u ) /*0xffd0ce46*/
      return 4; /*0xffd0ce51*/
    if ( n4 != 5 ) /*0xffd0ce4a*/
      return 0; /*0xffd0ce4e*/
  }
  return 1; /*0xffd0ce4e*/
}

// Function: IioTailFuncCE55 @ 0xffd0ce55 (0x20 bytes)
// Index: 2311/2560

char __cdecl IioTailFuncCE55(char n0x15)
{
  switch ( n0x15 ) /*0xffd0ce5d*/
  {
    case 1: /*0xffd0ce5d*/
      return 0; /*0xffd0ce72*/
    case 5: /*0xffd0ce5d*/
      return 1; /*0xffd0ce6f*/
    case 9: /*0xffd0ce5d*/
      return 2; /*0xffd0ce6c*/
  }
  return -1; /*0xffd0ce6b*/
}

// Function: IioTailFuncCE75 @ 0xffd0ce75 (0x3b bytes)
// Index: 2312/2560

int __cdecl IioTailFuncCE75(int a1, unsigned __int8 a2, unsigned __int8 a3)
{
  int v3; // esi

  v3 = (unsigned __int8)IioTailFuncC97F(a1, a2, a3, 234885129); /*0xffd0ce94*/
  return v3 | ((unsigned __int16)IioTailFuncC97F(a1, a2, a3, 234889226) << 8); /*0xffd0cead*/
}

// Function: IioTailFuncCEB0 @ 0xffd0ceb0 (0x35 bytes)
// Index: 2313/2560

char __cdecl IioTailFuncCEB0(int a1, char a2, char a3)
{
  char result; // al

  result = IioTailFuncCEE5(a1, a2, a3); /*0xffd0cebc*/
  if ( result ) /*0xffd0cec6*/
    return IioTailFuncCE75(a1, a2, a3) == 393216; /*0xffd0cee0*/
  return result; /*0xffd0cec8*/
}

// Function: IioTailFuncCEE5 @ 0xffd0cee5 (0x13 bytes)
// Index: 2314/2560

bool __cdecl IioTailFuncCEE5(int a1, unsigned __int8 n4, unsigned __int8 n0x15)
{
  return n4 < 4u && n0x15 < 0x15u; /*0xffd0ceee*/
}

// Function: IioTailFuncCEF8 @ 0xffd0cef8 (0x15 bytes)
// Index: 2315/2560

bool __cdecl IioTailFuncCEF8(int a1, int a2)
{
  return (unsigned __int8)IioTailFuncD124(a1, a2) != 0; /*0xffd0cf0c*/
}

// Function: IioTailFuncCF0D @ 0xffd0cf0d (0x148 bytes)
// Index: 2316/2560

void __cdecl IioTailFuncCF0D(_BYTE *__return_address, unsigned __int8 n4)
{
  unsigned __int8 v3; // dl
  _BYTE *v4; // esi
  unsigned __int8 v5; // bl
  int v6; // ebx
  char n2; // [esp+10h] [ebp-10h]
  char v8; // [esp+14h] [ebp-Ch]
  unsigned __int8 n0xD; // [esp+24h] [ebp+4h]

  IioTailFuncCA0D((int)(__return_address + 7480), byte_FFD5CDB4, 168); /*0xffd0cf29*/
  v3 = 0; /*0xffd0cf3b*/
  n0xD = 0; /*0xffd0cf40*/
  n2 = 2; /*0xffd0cf44*/
  v4 = &__return_address[21 * n4 + 7748]; /*0xffd0cf5c*/
  do
  {
    v5 = *(v4 - 740); /*0xffd0cf5e*/
    if ( __return_address[6 * n4 + 6828 + v5] == 4 )
    {
      nullsub_5(); /*0xffd0cf7d*/
    }
    else
    {
      if ( ((unsigned __int8)(1 << v5) & __return_address[n4 + 6788]) == 0 ) /*0xffd0cf9a*/
        goto LABEL_13; /*0xffd0cf9a*/
      *v4 = 1; /*0xffd0cfa6*/
      v6 = v3 == 0 ? 218112000 : 234889216;
      if ( IioTailFuncCBD2(n0xD) == 1 ) /*0xffd0cfc3*/
        v8 = (1 << n2) & IioTailFuncC97F((int)__return_address, n4, 0, 67321996); /*0xffd0cfe3*/
      else
        v8 = 0; /*0xffd0cfe9*/
      if ( (unsigned __int16)IioTailFuncC97F((int)__return_address, n4, n0xD, v6) == 0x8086 && !v8 ) /*0xffd0d00f*/
      {
        *(v4 - 84) = 1; /*0xffd0d011*/
        goto LABEL_13; /*0xffd0d015*/
      }
      nullsub_5(); /*0xffd0d024*/
      *(v4 - 84) = 0; /*0xffd0d029*/
    }
    *v4 = 0; /*0xffd0d02d*/
LABEL_13:
    ++n2; /*0xffd0d033*/
    ++v4; /*0xffd0d03d*/
    v3 = ++n0xD; /*0xffd0d042*/
  }
  while ( n0xD < 0x15u );
}

// Function: IioTailFuncD055 @ 0xffd0d055 (0x1e bytes)
// Index: 2317/2560

BOOL __cdecl IioTailFuncD055(int a1, unsigned __int8 a2, unsigned __int8 a3)
{
  return *(_BYTE *)(a3 + a1 + 21 * a2 + 7748) != 0; /*0xffd0d072*/
}

// Function: IioTailFuncD073 @ 0xffd0d073 (0x6c bytes)
// Index: 2318/2560

char __cdecl IioTailFuncD073(int a1, int a2, int a3)
{
  char v3; // bl

  v3 = 0; /*0xffd0d07b*/
  if ( IioTailFuncCEB0(a1, a2, a3) || IioTailFuncD055(a1, a2, a3) && (unsigned __int8)IioTailFuncD0DF(a1, a2, a3) == 1 ) /*0xffd0d0b2*/
    return 1; /*0xffd0d0d6*/
  nullsub_5(a1, 2); /*0xffd0d0cc*/
  return v3; /*0xffd0d0d8*/
}

// Function: IioTailFuncD0DF @ 0xffd0d0df (0x20 bytes)
// Index: 2319/2560

bool __cdecl IioTailFuncD0DF(int a1, unsigned __int8 a2, unsigned __int8 a3)
{
  return (IioTailFuncC97F(a1, a2, a3, 234889378) & 0x2000) != 0; /*0xffd0d0fe*/
}

// Function: IioTailFuncD0FF @ 0xffd0d0ff (0x25 bytes)
// Index: 2320/2560

bool __cdecl IioTailFuncD0FF(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  return (IioTailFuncC97F(src, n4, n0x15, 234897588) & 0x3000) != 0; /*0xffd0d123*/
}

// Function: IioTailFuncD124 @ 0xffd0d124 (0x4a bytes)
// Index: 2321/2560

bool __cdecl IioTailFuncD124(int a1, unsigned __int8 a2)
{
  __int16 v2; // si

  v2 = IioTailFuncC97F(a1, a2, 0, 67322008); /*0xffd0d144*/
  return (IioTailFuncC97F(a1, a2, 0, 67321988) & 0x38) == 0x10 && (v2 & 0x3E00) == 0x600; /*0xffd0d168*/
}

// Function: IioTailFuncD16E @ 0xffd0d16e (0x54 bytes)
// Index: 2322/2560

char __cdecl IioTailFuncD16E(int n4, char n2)
{
  char n2_1; // bl

  n2_1 = IioTailFuncEC00(n4, -34659920) & 0xF; /*0xffd0d186*/
  nullsub_5(); /*0xffd0d19b*/
  if ( n2_1 != n2 ) /*0xffd0d1a8*/
    IioTailFuncEB54(n4, -34659920, 240, n2); /*0xffd0d1b4*/
  return 1; /*0xffd0d1bc*/
}

// Function: IioTailFuncD1C2 @ 0xffd0d1c2 (0xc0 bytes)
// Index: 2323/2560

int __cdecl IioTailFuncD1C2(_BYTE *n4)
{
  unsigned __int8 n4_1; // bl
  int v2; // edi
  int n4a; // [esp+Ch] [ebp-4h]

  IioTailFuncC755((int)n4, 0xE0u, 0, 0xFFu); /*0xffd0d1d9*/
  n4_1 = 0; /*0xffd0d1de*/
  LOBYTE(n4a) = 0; /*0xffd0d1e3*/
  v2 = 0; /*0xffd0d1e6*/
  do /*0xffd0d232*/
  {
    if ( n4[v2 + 6776] ) /*0xffd0d1e8*/
    {
      nullsub_5(); /*0xffd0d1fe*/
      IioTailFuncD34E(n4, n4a); /*0xffd0d207*/
      IioTailFuncD282(n4, n4a); /*0xffd0d210*/
      nullsub_5(); /*0xffd0d221*/
    }
    ++n4_1; /*0xffd0d229*/
    ++v2; /*0xffd0d22b*/
    LOBYTE(n4a) = n4_1; /*0xffd0d22c*/
  }
  while ( n4_1 < 4u ); /*0xffd0d232*/
  nullsub_5(); /*0xffd0d23f*/
  IioTailX_FFD1634D((int)n4); /*0xffd0d245*/
  nullsub_5(); /*0xffd0d255*/
  IioTailX_FFD0F226((unsigned int)n4, 0, 0); /*0xffd0d25f*/
  IioTailFuncC755((int)n4, 0xE5u, 0, 0xFFu); /*0xffd0d271*/
  return 0; /*0xffd0d27b*/
}

// Function: IioTailFuncD282 @ 0xffd0d282 (0x46 bytes)
// Index: 2324/2560

int __cdecl IioTailFuncD282(_BYTE *n4, int n4a)
{
  IioTailFuncC755((int)n4, 0xE4u, 3u, (unsigned __int8)n4a); /*0xffd0d299*/
  IioTailX_FFD0F989((int)n4, n4a); /*0xffd0d2a0*/
  IioTailFuncD2C8(n4, n4a); /*0xffd0d2a7*/
  IioTailFuncC755((int)n4, 0xE3u, 2u, (unsigned __int8)n4a); /*0xffd0d2b5*/
  return IioTailX_FFD0E0A3(n4, n4a); /*0xffd0d2c4*/
}

// Function: IioTailFuncD2C8 @ 0xffd0d2c8 (0x5b bytes)
// Index: 2325/2560

void __cdecl IioTailFuncD2C8(_BYTE *n4, int n4a)
{
  unsigned __int8 n0x15_1; // bl
  int n0x15; // [esp+4h] [ebp-4h]

  n0x15_1 = 0; /*0xffd0d2cd*/
  LOBYTE(n0x15) = 0; /*0xffd0d2cf*/
  do /*0xffd0d31c*/
  {
    if ( IioTailFuncD055((int)n4, n4a, n0x15) ) /*0xffd0d2db*/
    {
      if ( IioTailFuncCEB0((int)n4, n4a, n0x15) == 1 ) /*0xffd0d303*/
        IioTailX_FFD0EF8D(n4, n4a, n0x15); /*0xffd0d305*/
      else
        IioTailX_FFD13523(n4, n4a, n0x15); /*0xffd0d30c*/
    }
    LOBYTE(n0x15) = ++n0x15_1; /*0xffd0d316*/
  }
  while ( n0x15_1 < 0x15u ); /*0xffd0d31c*/
}

// Function: IioTailFuncD323 @ 0xffd0d323 (0x2b bytes)
// Index: 2326/2560

void __cdecl IioTailFuncD323(_BYTE *src, int n4)
{
  nullsub_5(); /*0xffd0d333*/
  IioTailFunc29D0(src, n4, 1); /*0xffd0d340*/
  JUMPOUT(0xFFD1436D); /*0xffd1436d*/
}

// Function: IioTailFuncD34E @ 0xffd0d34e (0x56 bytes)
// Index: 2327/2560

void __cdecl IioTailFuncD34E(_BYTE *n4, int n4a)
{
  nullsub_5(); /*0xffd0d363*/
  IioTailFuncC755((int)n4, 0xE1u, 1u, (unsigned __int8)n4a); /*0xffd0d378*/
  IioTailX_FFD0E39C((int)n4, n4a); /*0xffd0d37f*/
  IioTailFunc29D0(n4, n4a, 0); /*0xffd0d388*/
  IioTailX_FFD140CB(n4, n4a); /*0xffd0d38f*/
  nullsub_5(); /*0xffd0d397*/
}

// Function: IioTailFuncD3A4 @ 0xffd0d3a4 (0xa5 bytes)
// Index: 2328/2560

void __cdecl IioTailFuncD3A4(int src, int n4)
{
  int n4_1; // ebx
  char v3; // al
  int var3; // [esp+Dh] [ebp-3h] BYREF

  n4_1 = n4; /*0xffd0d3a9*/
  nullsub_5(); /*0xffd0d3bd*/
  if ( (unsigned __int8)n4_1 < 4u /*0xffd0d3f3*/
    && (IioTailX_FFD16085(src, n4_1, (int)&n4 + 3, (int)&var3, (int)&var3 + 2, (int)&var3 + 1),
        *(_BYTE *)((unsigned __int8)n4 + src + 6776))
    && HIBYTE(n4) < 0x15u )
  {
    nullsub_5(); /*0xffd0d402*/
    *(_BYTE *)(src + 4 * (unsigned __int8)n4 + 7649) = HIBYTE(n4); /*0xffd0d40d*/
    *(_BYTE *)(src + 4 * (unsigned __int8)n4 + 7650) = BYTE2(var3); /*0xffd0d417*/
    v3 = BYTE1(var3); /*0xffd0d41e*/
    *(_BYTE *)(src + 4 * (unsigned __int8)n4 + 7648) = 1; /*0xffd0d421*/
    *(_BYTE *)(src + 4 * (unsigned __int8)n4 + 7651) = v3; /*0xffd0d429*/
  }
  else
  {
    nullsub_5(); /*0xffd0d43a*/
  }
}

// Function: IioTailFuncD449 @ 0xffd0d449 (0x151 bytes)
// Index: 2329/2560

_BYTE *__cdecl IioTailFuncD449(int *n4, unsigned __int8 n4a)
{
  int n4a_1; // edi
  _BYTE *n4b_1; // eax
  int v4; // edx
  unsigned __int8 n5; // cl
  _BYTE *v6; // edx
  _BYTE *v7; // ebx
  int n4_1; // ebp
  _BYTE *v9; // edx
  _BYTE *v10; // ebx
  int n4_2; // ebp
  _BYTE *v12; // edx
  int v13; // ebx
  int n4_3; // ebp
  _BYTE *v15; // edx
  int v16; // ebx
  int n4_4; // ebp
  _BYTE *v18; // edx
  int v19; // ebx
  int n4_5; // ebp
  int v21; // [esp+Ch] [ebp-4h]
  _BYTE *n4b; // [esp+18h] [ebp+8h]

  n4a_1 = n4a; /*0xffd0d451*/
  nullsub_5(); /*0xffd0d45f*/
  if ( n4a < 4u ) /*0xffd0d46c*/
  {
    v4 = 21 * n4a; /*0xffd0d49c*/
    n4b_1 = &unk_FFD5CD48; /*0xffd0d49f*/
    n5 = 0; /*0xffd0d4a4*/
    n4b = &unk_FFD5CD48; /*0xffd0d4a6*/
    v21 = v4; /*0xffd0d4ab*/
    *((_BYTE *)n4 + v4 + 7916) = 4; /*0xffd0d4af*/
    do /*0xffd0d58e*/
    {
      if ( *((_BYTE *)n4 + n4a_1 + 1187) == n5 ) /*0xffd0d4be*/
      {
        v6 = (char *)n4 + v4 + 7917; /*0xffd0d4c8*/
        v7 = (_BYTE *)(n4b_1 - v6); /*0xffd0d4cc*/
        n4_1 = 4; /*0xffd0d4ce*/
        do /*0xffd0d4d8*/
        {
          *v6 = v6[(_DWORD)v7]; /*0xffd0d4d2*/
          ++v6; /*0xffd0d4d4*/
          --n4_1; /*0xffd0d4d5*/
        }
        while ( n4_1 ); /*0xffd0d4d8*/
        n4b_1 = n4b; /*0xffd0d4da*/
        v4 = v21; /*0xffd0d4de*/
      }
      if ( *((_BYTE *)n4 + n4a_1 + 1191) == n5 ) /*0xffd0d4e9*/
      {
        v9 = (char *)n4 + v4 + 7921; /*0xffd0d4f3*/
        v10 = (_BYTE *)(n4b_1 - v9); /*0xffd0d4f7*/
        n4_2 = 4; /*0xffd0d4f9*/
        do /*0xffd0d503*/
        {
          *v9 = v9[(_DWORD)v10]; /*0xffd0d4fd*/
          ++v9; /*0xffd0d4ff*/
          --n4_2; /*0xffd0d500*/
        }
        while ( n4_2 ); /*0xffd0d503*/
      }
      if ( *((_BYTE *)n4 + n4a_1 + 1195) == n5 ) /*0xffd0d50c*/
      {
        v12 = (char *)n4 + v21 + 7925; /*0xffd0d518*/
        v13 = n4b - v12; /*0xffd0d51e*/
        n4_3 = 4; /*0xffd0d520*/
        do /*0xffd0d52a*/
        {
          *v12 = v12[v13]; /*0xffd0d524*/
          ++v12; /*0xffd0d526*/
          --n4_3; /*0xffd0d527*/
        }
        while ( n4_3 ); /*0xffd0d52a*/
      }
      if ( *((_BYTE *)n4 + n4a_1 + 1199) == n5 ) /*0xffd0d533*/
      {
        v15 = (char *)n4 + v21 + 7929; /*0xffd0d53f*/
        v16 = n4b - v15; /*0xffd0d545*/
        n4_4 = 4; /*0xffd0d547*/
        do /*0xffd0d551*/
        {
          *v15 = v15[v16]; /*0xffd0d54b*/
          ++v15; /*0xffd0d54d*/
          --n4_4; /*0xffd0d54e*/
        }
        while ( n4_4 ); /*0xffd0d551*/
      }
      if ( *((_BYTE *)n4 + n4a_1 + 1203) == n5 ) /*0xffd0d55a*/
      {
        v18 = (char *)n4 + v21 + 7933; /*0xffd0d566*/
        v19 = n4b - v18; /*0xffd0d56c*/
        n4_5 = 4; /*0xffd0d56e*/
        do /*0xffd0d578*/
        {
          *v18 = v18[v19]; /*0xffd0d572*/
          ++v18; /*0xffd0d574*/
          --n4_5; /*0xffd0d575*/
        }
        while ( n4_5 ); /*0xffd0d578*/
      }
      ++n5; /*0xffd0d57e*/
      v4 = v21; /*0xffd0d580*/
      n4b_1 = n4b + 4; /*0xffd0d584*/
      n4b += 4; /*0xffd0d587*/
    }
    while ( n5 < 5u ); /*0xffd0d58e*/
  }
  else
  {
    nullsub_5(); /*0xffd0d488*/
    return (_BYTE *)IioTailFuncCA08(); /*0xffd0d48f*/
  }
  return n4b_1; /*0xffd0d595*/
}

// Function: IioTailFuncD59A @ 0xffd0d59a (0x2ab bytes)
// Index: 2330/2560

void __cdecl IioTailFuncD59A(int n4, unsigned __int8 n4a)
{
  int n4a_1; // edx
  int v3; // ebx
  int v4; // ebp
  int n4_1; // edi
  int v6; // eax
  int v7; // esi
  int v8; // ecx
  int n4_2; // ebp
  int v10; // edx
  int v11; // ecx
  _BYTE *v12; // edx
  int v13; // eax
  int v14; // eax
  bool v15; // zf
  char v16; // [esp+12h] [ebp-22h]
  unsigned __int8 v17; // [esp+13h] [ebp-21h]
  char v18; // [esp+14h] [ebp-20h]
  unsigned __int8 v19; // [esp+15h] [ebp-1Fh]
  char v20; // [esp+16h] [ebp-1Eh]
  unsigned __int8 v21; // [esp+17h] [ebp-1Dh]
  int v22; // [esp+1Ch] [ebp-18h]
  int v23; // [esp+20h] [ebp-14h]
  int v24; // [esp+20h] [ebp-14h]
  int v25; // [esp+24h] [ebp-10h]
  int n4_3; // [esp+28h] [ebp-Ch]
  int v27; // [esp+2Ch] [ebp-8h]
  int n3; // [esp+30h] [ebp-4h]

  n4a_1 = n4a; /*0xffd0d5a5*/
  v3 = 1; /*0xffd0d5a8*/
  v4 = 0; /*0xffd0d5ae*/
  v22 = 1; /*0xffd0d5b0*/
  n4_1 = n4; /*0xffd0d5b5*/
  v25 = 0; /*0xffd0d5b9*/
  n3 = 3; /*0xffd0d5bd*/
  do /*0xffd0d837*/
  {
    v27 = v4 + 1; /*0xffd0d5c8*/
    if ( ((unsigned __int8)(1 << (v4 + 1)) & *(_BYTE *)(n4a_1 + n4_1 + 6788)) != 0 /*0xffd0d5ed*/
      && *(_BYTE *)(v4 + 3 * (n4a_1 + 1530) + n4_1) )
    {
      nullsub_5(); /*0xffd0d601*/
      v6 = IioTailFuncC97F(n4_1, n4a, v3, 285491272); /*0xffd0d611*/
      if ( v6 == -1 ) /*0xffd0d620*/
      {
        nullsub_5(); /*0xffd0d62b*/
      }
      else
      {
        v7 = v6; /*0xffd0d63d*/
        v23 = 0; /*0xffd0d63f*/
        v8 = v4 + 3 * n4a; /*0xffd0d646*/
        n4_2 = 4; /*0xffd0d648*/
        n4_3 = 4; /*0xffd0d649*/
        v10 = 4 * v8 + 4602; /*0xffd0d64d*/
        v11 = 0; /*0xffd0d654*/
        v12 = (_BYTE *)(n4_1 + v10); /*0xffd0d658*/
        do /*0xffd0d682*/
        {
          if ( *v12 ) /*0xffd0d65a*/
          {
            v6 ^= ((unsigned __int8)v6 ^ (unsigned __int8)(v6 | (1 << v23))) & 0xF; /*0xffd0d66d*/
            v11 = v23; /*0xffd0d66f*/
            n4_2 = n4_3; /*0xffd0d671*/
          }
          ++v11; /*0xffd0d675*/
          ++v12; /*0xffd0d676*/
          --n4_2; /*0xffd0d677*/
          v23 = v11; /*0xffd0d67a*/
          n4_3 = n4_2; /*0xffd0d67e*/
        }
        while ( n4_2 ); /*0xffd0d682*/
        v24 = v6; /*0xffd0d68f*/
        IioTailFuncC9C2(n4_1, n4a, v3, 285491272, v6); /*0xffd0d694*/
        if ( (v24 & 0xF) != 0 ) /*0xffd0d6a5*/
        {
          v13 = IioTailFuncC97F(n4_1, n4a, v3, 285230456); /*0xffd0d6b2*/
          IioTailFuncC9C2(n4_1, n4a, v3, 285230456, v13 & 0xFFFFFF0F | 0x90); /*0xffd0d6cb*/
          v14 = IioTailFuncC97F(n4_1, n4a, v3, 285230464); /*0xffd0d6db*/
          IioTailFuncC9C2(n4_1, n4a, v3, 285230464, v14 & 0xFFFFFF0F | 0xA0); /*0xffd0d6f4*/
        }
        v16 = IioTailFuncC97F(n4_1, n4a, v3, 285478988); /*0xffd0d70c*/
        v17 = *(_BYTE *)(v25 + 3 * (n4a + 1554) + n4_1); /*0xffd0d72f*/
        IioTailFuncC9C2(n4_1, n4a, v3, 285478988, v17); /*0xffd0d734*/
        v18 = IioTailFuncC97F(n4_1, n4a, v3, 285478989); /*0xffd0d749*/
        v19 = *(_BYTE *)(v25 + 3 * (n4a + 1562) + n4_1); /*0xffd0d76d*/
        IioTailFuncC9C2(n4_1, n4a, v22, 285478989, v19); /*0xffd0d776*/
        v20 = IioTailFuncC97F(n4_1, n4a, v22, 285478990); /*0xffd0d791*/
        v21 = *(_BYTE *)(v25 + 3 * (n4a + 1570) + n4_1); /*0xffd0d7b5*/
        IioTailFuncC9C2(n4, n4a, v22, 285478990, v21); /*0xffd0d7c1*/
        n4_1 = n4; /*0xffd0d7c7*/
        nullsub_5(); /*0xffd0d7d9*/
        if ( v7 != v24 || v16 != v17 || v18 != v19 || v20 != v21 ) /*0xffd0d803*/
        {
          *(_BYTE *)(n4 + 8648) = 1; /*0xffd0d80d*/
          nullsub_5(); /*0xffd0d814*/
        }
        v3 = v22; /*0xffd0d81c*/
      }
      n4a_1 = n4a; /*0xffd0d820*/
    }
    v4 = v27; /*0xffd0d824*/
    LOBYTE(v3) = v3 + 1; /*0xffd0d828*/
    v15 = n3-- == 1; /*0xffd0d82a*/
    v25 = v27; /*0xffd0d82f*/
    v22 = v3; /*0xffd0d833*/
  }
  while ( !v15 ); /*0xffd0d837*/
}

// Function: IioDdrCfgUpdateByRank @ 0xffd0d845 (0x79 bytes)
// Index: 2331/2560

char __cdecl IioDdrCfgUpdateByRank(int n4, unsigned __int8 n4a, char a3)
{
  char result; // al
  int v4; // eax
  int v5; // eax
  unsigned __int8 v6; // [esp+8h] [ebp-4h]

  result = IioTailFuncCEB0(n4, n4a, a3); /*0xffd0d856*/
  if ( result != 1 && a3 == *(_BYTE *)(n4 + 8 * (unsigned __int8)a3 + 7487) ) /*0xffd0d86c*/
  {
    v6 = *(_BYTE *)((unsigned __int8)a3 + 21 * n4a + n4 + 7008); /*0xffd0d887*/
    v4 = IioTailFuncC97F(n4, n4a, v6, 302138924); /*0xffd0d88f*/
    if ( *(_BYTE *)(n4 + 4183) == 0xFF ) /*0xffd0d89e*/
      v5 = v4 & 0xFFFFFFF7; /*0xffd0d8a0*/
    else
      v5 = v4 | 8; /*0xffd0d8a5*/
    return IioTailFuncC9C2(n4, n4a, v6, 302138924, v5); /*0xffd0d8af*/
  }
  return result; /*0xffd0d8b8*/
}

// Function: IioFuncD8BE @ 0xffd0d8be (0x77d bytes)
// Index: 2332/2560

unsigned __int8 IioFuncD8BE(int src, int n4, int a3, int n64, const char *IIO_%d__MCP1_%d._n, ...)
{
  unsigned __int8 n0x15; // bl
  int v6; // esi
  char **_0_; // ebp
  int v9; // eax
  unsigned __int8 v10; // cl
  unsigned __int8 v11; // al
  int v12; // eax
  int v13; // eax
  int v14; // eax
  int v15; // eax
  unsigned __int8 n4_1; // bl
  int v17; // edx
  int v18; // esi
  char srca_1; // cl
  __int16 v20; // ax
  __int16 v21; // bx
  __int16 v22; // ax
  __int16 v23; // ax
  unsigned __int8 n0x10_1; // al
  unsigned __int16 v25; // [esp-4h] [ebp-34h]
  char n4_2; // [esp+13h] [ebp-1Dh]
  unsigned __int8 n0x15_1; // [esp+14h] [ebp-1Ch]
  unsigned __int8 n0x10; // [esp+14h] [ebp-1Ch]
  char v29; // [esp+18h] [ebp-18h]
  int v30; // [esp+19h] [ebp-17h]
  int v31; // [esp+1Dh] [ebp-13h]
  int v32; // [esp+21h] [ebp-Fh]
  int v33; // [esp+25h] [ebp-Bh]
  int v34; // [esp+29h] [ebp-7h]
  char srca; // [esp+34h] [ebp+4h]

  v29 = 0; /*0xffd0d8c7*/
  n0x15 = 0; /*0xffd0d8d0*/
  v30 =... [14445 chars total]

// Function: IioTailX_FFD0E0A3 @ 0xffd0e0a3 (0x2f9 bytes)
// Index: 2333/2560

int __cdecl IioTailX_FFD0E0A3(_BYTE *n4, int n4a)
{
  int n4a_1; // esi
  __int16 v5; // ax
  __int16 v6; // ax
  __int16 v7; // ax
  __int16 v8; // ax
  __int16 v9; // ax
  int result; // eax
  char v11; // [esp+11h] [ebp-3h]
  char v12; // [esp+12h] [ebp-2h]
  unsigned __int8 v13; // [esp+13h] [ebp-1h]
  char src; // [esp+18h] [ebp+4h]
  char n4b; // [esp+1Ch] [ebp+8h]

  nullsub_5(); /*0xffd0e0b6*/
  n4a_1 = (unsigned __int8)n4a; /*0xffd0e0bf*/
  src = n4[(unsigned __int8)n4a + 1187]; /*0xffd0e0c9*/
  nullsub_5(); /*0xffd0e0d9*/
  n4b = n4[(unsigned __int8)n4a + 1191]; /*0xffd0e0e5*/
  nullsub_5(); /*0xffd0e0f5*/
  v11 = n4[n4a_1 + 1195]; /*0xffd0e101*/
  nullsub_5(); /*0xffd0e111*/
  v12 = n4[n4a_1 + 1199]; /*0xffd0e120*/
  nullsub_5(); /*0xffd0e130*/
  v13 = n4[n4a_1 + 1203]; /*0xffd0e13c*/
  nullsub_5(); /*0xffd0e14c*/
  IioFuncD8BE((int)n4, n4a, (int)n4, 64, "IIO=%d, MCP1=%d.\n", n4a_1, v13); /*0xffd0e153*/
  if ( n4[4857] ) /*0xffd0e15d*/
  {
    IioTailX_FFD112B5((int)n4, n4a, 0); /*0xffd0e16d*/
    DdrPhyDqsSetup((int)n4, n4a, 0, (unsigned __int8)n4[4859], n4[4858], n4[4860]); /*0xffd0e18d*/
    DdrPhyDqsSetup((int)n4, n4a, 1u, (unsigned __int8)n4[4859], n4[4858], n4[4860]); /*0xffd0e1ae*/
    DdrPhyDqsSetup((int)n4, n4a, 5u, (unsigned __int8)n4[4859], n4[4858], n4[4860]); /*0xffd0e1cf*/
    DdrPhyDqsSetup((int)n4, n4a, 9u, (unsigned __int8)n4[4859], n4[4858], n4[4860]); /*0xffd0e1f3*/
    if ( IioTailFuncCEF8((int)n4, n4a) ) /*0xffd0e1fa*/
      DdrPhyDqsSetup((int)n4, n4a, 0xDu, (unsigned __int8)n4[4859], n4[4858], n4[4860]); /*0xffd0e222*/
  }
  if ( (_BYTE)n4a ) /*0xffd0e22c*/
    IioTailFuncC99E((int)n4, n4a, 0, 218112400, 8u); /*0xffd0e238*/
  v5 = IioTailFuncC97F((int)n4, n4a, 1u, 234889616); /*0xffd0e24a*/
  IioTailFuncC99E((int)n4, n4a, 1u, 234889616, src & 7 | 8 | v5 & 0xFFF8); /*0xffd0e275*/
  v6 = IioTailFuncC97F((int)n4, n4a, 5u, 234889616); /*0xffd0e27f*/
  IioTailFuncC99E((int)n4, n4a, 5u, 234889616, n4b & 7 | 8 | v6 & 0xFFF8); /*0xffd0e2a5*/
  v7 = IioTailFuncC97F((int)n4, n4a, 9u, 234889616); /*0xffd0e2b2*/
  IioTailFuncC99E((int)n4, n4a, 9u, 234889616, v11 & 7 | 8 | v7 & 0xFFF8); /*0xffd0e2d8*/
  v8 = IioTailFuncC97F((int)n4, n4a, 0xDu, 234889616); /*0xffd0e2e2*/
  IioTailFuncC99E((int)n4, n4a, 0xDu, 234889616, v12 & 7 | 8 | v8 & 0xFFF8); /*0xffd0e308*/
  v9 = IioTailFuncC97F((int)n4, n4a, 0x11u, 234889616); /*0xffd0e315*/
  result = IioTailFuncC99E((int)n4, n4a, 0x11u, 234889616, v13 & 7 | 8 | v9 & 0xFFF8); /*0xffd0e33b*/
  if ( n4[4857] ) /*0xffd0e343*/
  {
    IioFunc0D68((int)n4, n4a, 0); /*0xffd0e350*/
    IioFunc0D68((int)n4, n4a, 1); /*0xffd0e359*/
    IioFunc0D68((int)n4, n4a, 5); /*0xffd0e362*/
    IioFunc0D68((int)n4, n4a, 9); /*0xffd0e36b*/
    if ( IioTailFuncCEF8((int)n4, n4a) ) /*0xffd0e372*/
      IioFunc0D68((int)n4, n4a, 13); /*0xffd0e382*/
    return IioTailX_FFD112B5((int)n4, n4a, 1); /*0xffd0e38e*/
  }
  return result; /*0xffd0e396*/
}

// Function: IioTailX_FFD0E39C @ 0xffd0e39c (0x3f bytes)
// Index: 2334/2560

char __cdecl IioTailX_FFD0E39C(int n4, unsigned __int8 n4a)
{
  unsigned __int8 n0x15; // bl
  char result; // al
  char v4; // [esp+4h] [ebp-4h]

  n0x15 = 0; /*0xffd0e3a1*/
  v4 = 0; /*0xffd0e3a3*/
  do /*0xffd0e3d4*/
  {
    result = IioTailFuncD055(n4, n4a, v4); /*0xffd0e3af*/
    if ( result ) /*0xffd0e3b9*/
      result = IioDdrCfgUpdateByRank(n4, n4a, v4); /*0xffd0e3c4*/
    v4 = ++n0x15; /*0xffd0e3ce*/
  }
  while ( n0x15 < 0x15u ); /*0xffd0e3d4*/
  return result; /*0xffd0e3d6*/
}

// Function: IioDdrRegBitUpdate @ 0xffd0e3db (0x77 bytes)
// Index: 2335/2560

int __cdecl IioDdrRegBitUpdate(int i, int src, unsigned __int8 n4)
{
  unsigned __int8 n4_1; // dl
  unsigned __int8 n6; // bl
  char v5; // si
  int result; // eax
  int v7; // eax
  unsigned __int8 n6_1; // [esp+10h] [ebp-4h]

  n4_1 = n4; /*0xffd0e3dc*/
  n6 = 0; /*0xffd0e3e3*/
  v5 = 0; /*0xffd0e3ed*/
  n6_1 = 0; /*0xffd0e3ef*/
  do /*0xffd0e44a*/
  {
    result = 1 << v5; /*0xffd0e3f8*/
    if ( ((unsigned __int8)(1 << v5) & *(_BYTE *)(src + n4 + 6788)) != 0 && n4_1 && n6 && i == 4 ) /*0xffd0e410*/
    {
      v7 = IioTailFuncC97F(src, n4_1, n6_1, 302139096); /*0xffd0e41d*/
      result = IioTailFuncC9C2(src, n4, n6_1, 302139096, v7 | 1); /*0xffd0e434*/
      n4_1 = n4; /*0xffd0e439*/
    }
    ++n6; /*0xffd0e440*/
    ++v5; /*0xffd0e442*/
    n6_1 = n6; /*0xffd0e443*/
  }
  while ( n6 < 6u ); /*0xffd0e44a*/
  return result; /*0xffd0e44c*/
}

// Function: IioTailX_FFD0E452 @ 0xffd0e452 (0xf5 bytes)
// Index: 2336/2560

unsigned __int8 __cdecl IioTailX_FFD0E452(_BYTE *src, int n4)
{
  _BYTE *src_1; // edi
  unsigned __int8 i; // bl
  unsigned __int8 n0x15; // bh
  unsigned __int8 result; // al

  src_1 = src; /*0xffd0e458*/
  for ( i = 1; i <= 4u; i *= 2 ) /*0xffd0e45b*/
  {
    if ( i == 1 ) /*0xffd0e460*/
      IioTailFuncC755((int)src_1, 0xE7u, 1u, (unsigned __int8)n4); /*0xffd0e471*/
    n0x15 = 0; /*0xffd0e479*/
    LOBYTE(src) = 0; /*0xffd0e47b*/
    do /*0xffd0e4ce*/
    {
      if ( IioTailFuncD055((int)src_1, n4, (unsigned __int8)src) ) /*0xffd0e485*/
      {
        if ( IioTailFuncCEB0((int)src_1, n4, (char)src) == 1 ) /*0xffd0e4a5*/
          DxeInit_1(i, src_1, n4); /*0xffd0e4ac*/
        else
          DxeInit_0(i, src_1, n4, (int)src); /*0xffd0e4be*/
      }
      LOBYTE(src) = ++n0x15; /*0xffd0e4c8*/
    }
    while ( n0x15 < 0x15u ); /*0xffd0e4ce*/
  }
  IioTailFuncC755((int)src_1, 0xE8u, i, (unsigned __int8)n4); /*0xffd0e4ea*/
  IioDdrChannelRegInit((int)src_1, n4); /*0xffd0e4f3*/
  IioTailFuncC755((int)src_1, 0xE9u, i, (unsigned __int8)n4); /*0xffd0e502*/
  DxeInit(src_1, n4); /*0xffd0e50b*/
  IioTailFuncC755((int)src_1, 0xEBu, i, (unsigned __int8)n4); /*0xffd0e51a*/
  result = IioDdrRegBitUpdate(i, (int)src_1, n4); /*0xffd0e52a*/
  if ( src_1[4861] ) /*0xffd0e532*/
    return IioTailFunc15D2((int)src_1); /*0xffd0e53c*/
  return result; /*0xffd0e542*/
}

// Function: IioTailFuncE547 @ 0xffd0e547 (0x63 bytes)
// Index: 2337/2560

int __cdecl IioTailFuncE547(char *src)
{
  unsigned __int8 n4_1; // bl
  int v2; // edi
  int n4; // [esp+Ch] [ebp-4h]

  n4_1 = 0; /*0xffd0e550*/
  LOBYTE(n4) = 0; /*0xffd0e553*/
  v2 = 0; /*0xffd0e556*/
  do /*0xffd0e591*/
  {
    if ( src[v2 + 6776] ) /*0xffd0e558*/
    {
      nullsub_5(); /*0xffd0e56e*/
      IioTailFuncD323(src, n4); /*0xffd0e577*/
      IioTailFuncE5AA(src, n4); /*0xffd0e580*/
    }
    ++n4_1; /*0xffd0e588*/
    ++v2; /*0xffd0e58a*/
    LOBYTE(n4) = n4_1; /*0xffd0e58b*/
  }
  while ( n4_1 < 4u ); /*0xffd0e591*/
  IioTailFunc2AD8((int)src); /*0xffd0e594*/
  IioTailFuncCC9D((int)src); /*0xffd0e59a*/
  return 0; /*0xffd0e5a1*/
}

// Function: IioTailFuncE5AA @ 0xffd0e5aa (0x45 bytes)
// Index: 2338/2560

unsigned int __cdecl IioTailFuncE5AA(_BYTE *src, int n4)
{
  IioTailFuncC755((int)src, 0xE6u, 0, 0xFFu); /*0xffd0e5be*/
  IioTailX_FFD0E452(src, n4); /*0xffd0e5c9*/
  IioTailFuncE6C7(src, n4); /*0xffd0e5d4*/
  return IioTailFuncC755((int)src, 0xEEu, 0, 0xFFu); /*0xffd0e5ec*/
}

// Function: IioTailFuncE5EF @ 0xffd0e5ef (0xd8 bytes)
// Index: 2339/2560

int __cdecl IioTailFuncE5EF(unsigned __int8 n4, _BYTE *src)
{
  unsigned __int8 n4_1; // dl
  unsigned __int8 n6; // bl
  int n4_2; // edi
  char v5; // bp
  int result; // eax
  unsigned int v7; // eax
  int v8; // eax
  unsigned __int8 n6_1; // [esp+10h] [ebp-8h]

  n4_1 = n4; /*0xffd0e5f1*/
  n6 = 0; /*0xffd0e5fc*/
  n4_2 = n4; /*0xffd0e5ff*/
  v5 = 0; /*0xffd0e602*/
  n6_1 = 0; /*0xffd0e604*/
  do /*0xffd0e6ba*/
  {
    result = 1 << v5; /*0xffd0e611*/
    if ( ((unsigned __int8)(1 << v5) & src[n4_2 + 6788]) != 0 ) /*0xffd0e61a*/
    {
      v7 = IioTailFuncC97F((int)src, n4_1, n6_1, 285229504) & 0xFFFFFFFB; /*0xffd0e633*/
      if ( src[4340] ) /*0xffd0e636*/
        v7 |= 4u; /*0xffd0e63f*/
      if ( src[4348] == n4 && src[4349] == n6 ) /*0xffd0e654*/
        v7 |= 0x80000u; /*0xffd0e656*/
      result = IioTailFuncC9C2((int)src, n4, n6_1, 285229504, v7 | 0x100); /*0xffd0e66c*/
      if ( src[4341] ) /*0xffd0e674*/
      {
        v8 = IioTailFuncC97F((int)src, n4, n6_1, 302138992); /*0xffd0e68c*/
        result = IioTailFuncC9C2((int)src, n4, n6_1, 302138992, v8 & 0xFFFFFFF0); /*0xffd0e6a0*/
        n4_2 = n4; /*0xffd0e6a5*/
      }
      n4_1 = n4; /*0xffd0e6ac*/
    }
    ++n6; /*0xffd0e6b0*/
    ++v5; /*0xffd0e6b2*/
    n6_1 = n6; /*0xffd0e6b3*/
  }
  while ( n6 < 6u ); /*0xffd0e6ba*/
  return result; /*0xffd0e6c0*/
}

// Function: IioTailFuncE6C7 @ 0xffd0e6c7 (0xca bytes)
// Index: 2340/2560

int __cdecl IioTailFuncE6C7(_BYTE *src, int n4)
{
  _BYTE buf[768]; // [esp+Ch] [ebp-300h] BYREF

  IioTailFunc29D0((int)src, n4, 3); /*0xffd0e6dd*/
  IioTailFuncE5EF(n4, src); /*0xffd0e6e4*/
  IioTailX_FFD11D8F(src, n4); /*0xffd0e6eb*/
  IioTailX_FFD124FD(src, n4); /*0xffd0e6f2*/
  IioTailFuncE9F5(src, n4); /*0xffd0e6f9*/
  IioTailFuncC755((int)src, 0xECu, 0, (unsigned __int8)n4); /*0xffd0e70a*/
  IioTailX_FFD153BE(src, n4); /*0xffd0e711*/
  IioTailFunc29D0((int)src, n4, 8); /*0xffd0e71d*/
  nullsub_5(); /*0xffd0e724*/
  IioTailX_FFD136B6(src, n4); /*0xffd0e72b*/
  IioTailFuncE791(src, n4); /*0xffd0e732*/
  IioTailFuncC755((int)src, 0xEDu, 0, (unsigned __int8)n4); /*0xffd0e740*/
  IioTailX_FFD14954(src, n4); /*0xffd0e747*/
  memset_save_flags(buf, 0, 0x300u); /*0xffd0e75a*/
  IioTailX_FFD14756(src, n4, buf); /*0xffd0e76b*/
  IioTailX_FFD15354(src, n4); /*0xffd0e772*/
  return IioTailX_FFD14697(src, n4, 9, buf); /*0xffd0e78a*/
}

// Function: IioTailFuncE791 @ 0xffd0e791 (0x264 bytes)
// Index: 2341/2560

void __cdecl IioTailFuncE791(_BYTE *src, unsigned __int8 n4)
{
  int v2; // ebp
  int n4_1; // esi
  int v4; // edx
  int v5; // edi
  int v6; // eax
  int v7; // esi
  int v8; // edi
  int v9; // eax
  int n4_2; // ecx
  int v11; // esi
  _BYTE *v12; // edi
  int n4_3; // eax
  bool v14; // zf
  int v15; // [esp+10h] [ebp-18h]
  int n4_4; // [esp+18h] [ebp-10h]
  int n3; // [esp+1Ch] [ebp-Ch]

  v2 = 0; /*0xffd0e7a1*/
  n4_1 = n4; /*0xffd0e7a3*/
  v4 = 1; /*0xffd0e7a6*/
  v15 = 1; /*0xffd0e7ac*/
  n3 = 3; /*0xffd0e7b0*/
  do /*0xffd0e9e7*/
  {
    v5 = v2 + 1; /*0xffd0e7ba*/
    if ( ((unsigned __int8)(1 << (v2 + 1)) & src[n4_1 + 6788]) != 0 && src[3 * n4_1 + 4590 + v2] ) /*0xffd0e7de*/
    {
      if ( IioTailFuncC97F((int)src, n4, v4, 285491272) == -1 ) /*0xffd0e802*/
      {
        nullsub_5(); /*0xffd0e80d*/
      }
      else
      {
        v6 = IioTailFuncC97F((int)src, n4, v15, 285491216); /*0xffd0e829*/
        if ( src[3 * n4_1 + 4674 + v2] ) /*0xffd0e840*/
        {
          if ( src[3 * n4_1 + 4674 + v2] == 1 ) /*0xffd0e84c*/
          {
            v6 = v6 & 0xFFFFFFF1 | 4; /*0xffd0e85e*/
          }
          else if ( src[3 * n4_1 + 4674 + v2] == 2 ) /*0xffd0e851*/
          {
            v6 = v6 & 0xFFFFFFF1 | 0xC; /*0xffd0e856*/
          }
        }
        else
        {
          v6 &= 0xFFFFFFF1; /*0xffd0e863*/
        }
        IioTailFuncC9C2((int)src, n4, v15, 285491216, v6); /*0xffd0e876*/
        v7 = IioTailFuncC97F((int)src, n4, v15, 285491224); /*0xffd0e88b*/
        if ( src[3 * n4 + 4698 + v2] ) /*0xffd0e89e*/
        {
          if ( src[3 * n4 + 4698 + v2] == 1 ) /*0xffd0e8aa*/
          {
            v7 = v7 & 0xFFFFFFF1 | 4; /*0xffd0e8bc*/
          }
          else if ( src[3 * n4 + 4698 + v2] == 2 ) /*0xffd0e8af*/
          {
            v7 = v7 & 0xFFFFFFF1 | 0xC; /*0xffd0e8b4*/
          }
        }
        else
        {
          v7 &= 0xFFFFFFF1; /*0xffd0e8c1*/
        }
        IioTailFuncC9C2((int)src, n4, v15, 285491224, v7); /*0xffd0e8d0*/
        v8 = IioTailFuncC97F((int)src, n4, v15, 285491232); /*0xffd0e8e5*/
        if ( src[3 * n4 + 4722 + v2] ) /*0xffd0e8f8*/
        {
          if ( src[3 * n4 + 4722 + v2] == 1 ) /*0xffd0e904*/
          {
            v8 = v8 & 0xFFFFFFF1 | 4; /*0xffd0e916*/
          }
          else if ( src[3 * n4 + 4722 + v2] == 2 ) /*0xffd0e909*/
          {
            v8 = v8 & 0xFFFFFFF1 | 0xC; /*0xffd0e90e*/
          }
        }
        else
        {
          v8 &= 0xFFFFFFF1; /*0xffd0e91b*/
        }
        IioTailFuncC9C2((int)src, n4, v15, 285491232, v8); /*0xffd0e92d*/
        nullsub_5(); /*0xffd0e944*/
        v9 = IioTailFuncC97F((int)src, n4, v15, 285491268); /*0xffd0e959*/
        IioTailFuncC9C2((int)src, n4, v15, 285491268, v9 | 1); /*0xffd0e96c*/
        n4_2 = n4; /*0xffd0e971*/
        v11 = 0; /*0xffd0e981*/
        v12 = &src[12 * n4 + 4602 + 4 * v2]; /*0xffd0e987*/
        n4_3 = 4; /*0xffd0e98a*/
        n4_4 = 4; /*0xffd0e98b*/
        do /*0xffd0e9cc*/
        {
          if ( *v12 ) /*0xffd0e98f*/
          {
            src[21 * n4_2 + 4256 + 4 * v2 + v11] = 1; /*0xffd0e99d*/
            nullsub_5(); /*0xffd0e9b3*/
            n4_3 = n4_4; /*0xffd0e9b8*/
            n4_2 = n4; /*0xffd0e9bf*/
          }
          ++v11; /*0xffd0e9c3*/
          ++v12; /*0xffd0e9c4*/
          n4_4 = --n4_3; /*0xffd0e9c8*/
        }
        while ( n4_3 ); /*0xffd0e9cc*/
        n4_1 = n4; /*0xffd0e9ce*/
        v5 = v2 + 1; /*0xffd0e9d2*/
      }
      v4 = v15; /*0xffd0e9d6*/
    }
    LOBYTE(v4) = v4 + 1; /*0xffd0e9da*/
    v2 = v5; /*0xffd0e9dc*/
    v14 = n3-- == 1; /*0xffd0e9de*/
    v15 = v4; /*0xffd0e9e3*/
  }
  while ( !v14 ); /*0xffd0e9e7*/
}

// Function: IioTailFuncE9F5 @ 0xffd0e9f5 (0x13a bytes)
// Index: 2342/2560

void __cdecl IioTailFuncE9F5(_BYTE *src, unsigned __int8 n4)
{
  unsigned __int8 srca_1; // dl
  char v4; // si
  int v5; // eax
  int v6; // esi
  int v7; // eax
  unsigned __int8 srca; // [esp+8h] [ebp+4h]
  unsigned __int8 srcb; // [esp+8h] [ebp+4h]

  if ( src[4809] )
  {
    srca_1 = 0; /*0xffd0ea0c*/
    srca = 0; /*0xffd0ea10*/
    v4 = 0; /*0xffd0ea14*/
    do /*0xffd0ea69*/
    {
      if ( ((unsigned __int8)(1 << v4) & src[n4 + 6788]) != 0 && src[4809] == 1 ) /*0xffd0ea30*/
      {
        v5 = IioTailFuncC97F((int)src, n4, srca, 285229504); /*0xffd0ea3d*/
        IioTailFuncC9C2((int)src, n4, srca, 285229504, v5 | 0x1000); /*0xffd0ea53*/
        srca_1 = srca; /*0xffd0ea58*/
      }
      ++srca_1; /*0xffd0ea5f*/
      ++v4; /*0xffd0ea61*/
      srca = srca_1; /*0xffd0ea62*/
    }
    while ( srca_1 < 6u ); /*0xffd0ea69*/
    for ( srcb = 0; srcb < 0x15u; ++srcb )
    {
      if ( IioTailFuncD055((int)src, n4, srcb) && IioTailFuncC97F((int)src, n4, srcb, 234889216) == 32902 )
      {
        if ( !IioTailFuncCB25((int)src, n4, srcb) ) /*0xffd0eaa1*/
          IioTailFuncC99E((int)src, n4, srcb, 234889494, 0); /*0xffd0eab7*/
        v6 = IioTailFuncC97F((int)src, n4, srcb, 234897804) | 0x40; /*0xffd0ead6*/
        v7 = IioTailFuncC97F((int)src, n4, srcb, 234897800); /*0xffd0ead9*/
        IioTailFuncC9C2((int)src, n4, srcb, 234897800, (src[4809] != 1 ? 0x2000000 : 0x1000000) | v7);
        IioTailFuncC9C2((int)src, n4, srcb, 234897804, v6); /*0xffd0eb10*/
      }
    }
  }
}

// Function: IioTailFuncEB2F @ 0xffd0eb2f (0x25 bytes)
// Index: 2343/2560

int __cdecl IioTailFuncEB2F(int n4, int a2, int a3, int a4)
{
  int v4; // eax

  v4 = IioTailFuncEBC0(n4, a2); /*0xffd0eb38*/
  return IioTailFuncEC40(n4, a2, a4 | a3 & v4); /*0xffd0eb52*/
}

// Function: IioTailFuncEB54 @ 0xffd0eb54 (0x28 bytes)
// Index: 2344/2560

char __cdecl IioTailFuncEB54(int n4, int a2, char n240, char n2)
{
  char v4; // al

  v4 = IioTailFuncEC00(n4, a2); /*0xffd0eb5d*/
  return IioTailFuncEC81(n4, a2, n2 | n240 & v4); /*0xffd0eb7a*/
}

// Function: IioTailFuncEB7C @ 0xffd0eb7c (0x44 bytes)
// Index: 2345/2560

int __cdecl IioTailFuncEB7C(int n4, int a2)
{
  if ( (a2 & 0xF0000000) == 0 ) /*0xffd0eb87*/
  {
    nullsub_5(); /*0xffd0eba6*/
    IioTailFuncCA08(); /*0xffd0ebb0*/
  }
  return *(unsigned __int16 *)a2; /*0xffd0ebbe*/
}

// Function: IioTailFuncEBC0 @ 0xffd0ebc0 (0x40 bytes)
// Index: 2346/2560

int __cdecl IioTailFuncEBC0(int a1, int a2)
{
  if ( (a2 & 0xF0000000) == 0 ) /*0xffd0ebcb*/
  {
    nullsub_5(a1, 0x80000000); /*0xffd0ebea*/
    IioTailFuncCA08(a1, a2); /*0xffd0ebf4*/
  }
  return *(_DWORD *)a2; /*0xffd0ebfe*/
}

// Function: IioTailFuncEC00 @ 0xffd0ec00 (0x40 bytes)
// Index: 2347/2560

char __cdecl IioTailFuncEC00(int n4, int a2)
{
  if ( (a2 & 0xF0000000) == 0 ) /*0xffd0ec0b*/
  {
    nullsub_5(); /*0xffd0ec2a*/
    IioTailFuncCA08(); /*0xffd0ec34*/
  }
  return *(_BYTE *)a2; /*0xffd0ec3e*/
}

// Function: IioTailFuncEC40 @ 0xffd0ec40 (0x41 bytes)
// Index: 2348/2560

int __cdecl IioTailFuncEC40(int a1, int a2, int a3)
{
  if ( (a2 & 0xF0000000) == 0 ) /*0xffd0ec4b*/
  {
    nullsub_5(a1, 0x80000000); /*0xffd0ec67*/
    IioTailFuncCA08(a1, a2); /*0xffd0ec71*/
  }
  *(_DWORD *)a2 = a3; /*0xffd0ec7d*/
  return a3; /*0xffd0ec7f*/
}

// Function: IioTailFuncEC81 @ 0xffd0ec81 (0x41 bytes)
// Index: 2349/2560

char __cdecl IioTailFuncEC81(int n4, int a2, char a3)
{
  if ( (a2 & 0xF0000000) == 0 ) /*0xffd0ec8c*/
  {
    nullsub_5(); /*0xffd0eca8*/
    IioTailFuncCA08(); /*0xffd0ecb2*/
  }
  *(_BYTE *)a2 = a3; /*0xffd0ecbe*/
  return a3; /*0xffd0ecc0*/
}

// Function: IioTailFuncECC2 @ 0xffd0ecc2 (0x21d bytes)
// Index: 2350/2560

int __cdecl IioTailFuncECC2(_BYTE *src, unsigned __int8 n4, unsigned __int8 a3)
{
  unsigned __int8 v3; // bp
  _BYTE *src_1; // edi
  __int16 v5; // si
  char n2; // al
  unsigned __int16 v7; // si
  unsigned __int8 v8; // al
  unsigned __int16 v9; // bx
  unsigned int v10; // ebp
  int v11; // edi
  int v12; // eax
  int v13; // eax
  int v14; // eax
  int v15; // eax
  char n2_1; // al
  char v17; // al
  unsigned __int16 v19; // [esp+Ch] [ebp-10h]
  int p_n2; // [esp+10h] [ebp-Ch] BYREF
  int p_n17; // [esp+14h] [ebp-8h] BYREF
  unsigned __int16 *v22; // [esp+18h] [ebp-4h]
  unsigned __int16 *srca; // [esp+20h] [ebp+4h]
  __int16 srcb; // [esp+20h] [ebp+4h]
  unsigned __int16 srcc; // [esp+20h] [ebp+4h]

  v3 = a3; /*0xffd0ecc6*/
  src_1 = src; /*0xffd0eccc*/
  v5 = IioTailFuncC97F((int)src, n4, a3, 218112240) & 0xFFF7 | (8 * (src[4094] & 1)); /*0xffd0ed00*/
  n2 = src[1490]; /*0xffd0ed03*/
  if ( n2 == 2 ) /*0xffd0ed10*/
  {
    v8 = AutoGenFunc8B53(); /*0xffd0ed3a*/
    v9 = 1; /*0xffd0ed41*/
    if ( v8 ) /*0xffd0ed44*/
    {
      v10 = 0; /*0xffd0ed46*/
      v11 = v8; /*0xffd0ed48*/
      do /*0xffd0eda3*/
      {
        AutoGenFunc8D05(v10, &p_n17, &p_n2); /*0xffd0ed56*/
        v22 = (unsigned __int16 *)AutoGenFunc8C1A(0, p_n17, p_n2); /*0xffd0ed6b*/
        if ( (unsigned __int16)AutoGenFunc8E7(v22) != 0xFFFF ) /*0xffd0ed7f*/
        {
          v12 = AutoGenFunc8E7(v22 + 34) & 7; /*0xffd0ed95*/
          if ( (unsigned __int16)v12 < v9 ) /*0xffd0ed9b*/
            v9 = v12; /*0xffd0ed9d*/
        }
        ++v10; /*0xffd0ed9f*/
        --v11; /*0xffd0eda0*/
      }
      while ( v11 ); /*0xffd0eda3*/
      src_1 = src; /*0xffd0eda5*/
      v3 = a3; /*0xffd0eda9*/
    }
    srca = (unsigned __int16 *)AutoGenFunc8C1A(0, 31, 3); /*0xffd0edb9*/
    if ( (unsigned __int16)AutoGenFunc8E7(srca) != 0xFFFF && (AutoGenFunc8D5((int)(srca + 3)) & 0x10) != 0 ) /*0xffd0eddf*/
    {
      v13 = AutoGenFunc8E7(srca + 58) & 7; /*0xffd0edf5*/
      if ( (unsigned __int16)v13 < v9 ) /*0xffd0edfb*/
        LOBYTE(v9) = v13; /*0xffd0edfd*/
    }
    v7 = ((unsigned __int8)v5 ^ (unsigned __int8)(32 * v9)) & 0xE0 ^ v5; /*0xffd0ee0c*/
  }
  else
  {
    if ( n2 ) /*0xffd0ed14*/
    {
      v19 = v5 & 0xFF1F | 0x20; /*0xffd0ed22*/
      goto LABEL_18; /*0xffd0ed27*/
    }
    v7 = v5 & 0xFF1F; /*0xffd0ed31*/
  }
  v19 = v7; /*0xffd0ee10*/
LABEL_18:
  IioTailFuncC99E((int)src_1, n4, v3, 218112240, v19); /*0xffd0ee15*/
  v14 = IioTailFuncC97F((int)src_1, n4, v3, 218120420); /*0xffd0ee35*/
  if ( src_1[1574] == 1 ) /*0xffd0ee44*/
    v15 = v14 | 3; /*0xffd0ee46*/
  else
    v15 = v14 & 0xFFFFFFFC; /*0xffd0ee4b*/
  IioTailFuncC9C2((int)src_1, n4, v3, 218120420, v15); /*0xffd0ee56*/
  srcb = IioTailFuncC97F((int)src_1, n4, v3, 218112248) & 0xFFC0; /*0xffd0ee77*/
  n2_1 = src_1[1207]; /*0xffd0ee7c*/
  if ( n2_1 == 2 ) /*0xffd0ee84*/
  {
    v17 = src_1[1213]; /*0xffd0ee92*/
    if ( v17 ) /*0xffd0ee9a*/
      goto LABEL_25; /*0xffd0ee9a*/
LABEL_26:
    srcc = srcb & 0xFFE0 | 0x10; /*0xffd0eeb4*/
    return IioTailFuncC99E((int)src_1, n4, v3, 218112248, srcc); /*0xffd0eec0*/
  }
  if ( n2_1 == 1 ) /*0xffd0ee88*/
    goto LABEL_26; /*0xffd0ee88*/
  v17 = src_1[1208]; /*0xffd0ee8a*/
LABEL_25:
  srcc = srcb & 0xFFE0 | v17 & 0xF; /*0xffd0ee9c*/
  return IioTailFuncC99E((int)src_1, n4, v3, 218112248, srcc); /*0xffd0eed8*/
}

// Function: DxeInit_1 @ 0xffd0eedf (0xae bytes)
// Index: 2351/2560

char __cdecl DxeInit_1(int i, _BYTE *src, int n4)
{
  char result; // al

  if ( i == 1 ) /*0xffd0eee8*/
  {
    nullsub_5(); /*0xffd0ef69*/
    IioDdrPhyInitConfig(src, n4, 0); /*0xffd0ef76*/
    return IioTailMrcOemHooksCall300(src, n4, 0); /*0xffd0ef83*/
  }
  else if ( i == 2 ) /*0xffd0eeed*/
  {
    nullsub_5(); /*0xffd0ef3e*/
    IioTailFuncECC2(src, n4, 0); /*0xffd0ef4b*/
    return IioTailMrcOemHooksCall304(src, n4, 0); /*0xffd0ef58*/
  }
  else
  {
    result = i - 4; /*0xffd0eef0*/
    if ( i == 4 ) /*0xffd0eef3*/
    {
      nullsub_5(); /*0xffd0ef03*/
      IioDdrControllerRegCfg(src, n4, 0); /*0xffd0ef10*/
      IioDdrRegStoreRestore(src, n4, 0); /*0xffd0ef1d*/
      return IioTailMrcOemHooksCall308(src, n4, 0); /*0xffd0ef2a*/
    }
  }
  return result; /*0xffd0ef32*/
}

// Function: IioTailX_FFD0EF8D @ 0xffd0ef8d (0x299 bytes)
// Index: 2352/2560

int __cdecl IioTailX_FFD0EF8D(_BYTE *n4, __int16 n4a, unsigned __int8 n0x15)
{
  unsigned __int8 n4a_1; // bl
  unsigned int v4; // ecx
  unsigned __int8 n7; // al
  unsigned int v6; // ecx
  int v7; // eax
  unsigned int v8; // eax
  _BYTE *v9; // edx
  int v10; // eax
  int v11; // eax
  unsigned __int16 n4b_1; // ax
  __int16 v13; // ax
  char n7_1; // cl
  int n2; // [esp-4h] [ebp-10h]
  unsigned __int16 n4b; // [esp+18h] [ebp+Ch]
  __int16 n4c; // [esp+18h] [ebp+Ch]

  n4a_1 = n4a; /*0xffd0ef94*/
  v4 = IioTailFuncC97F((int)n4, n4a, n0x15, 218120348) & 0xFFFC0FFF | ((n4[1658] & 7 | (8 * (n4[1742] & 7))) << 12); /*0xffd0efce*/
  n7 = n4[1219]; /*0xffd0efd0*/
  if ( n7 == 1 && (n7 = n4[1322], n7 == 7) ) /*0xffd0efe2*/
    v6 = v4 & 0xFFFFF3FF; /*0xffd0eff5*/
  else
    v6 = ((unsigned __int16)v4 ^ (unsigned __int16)(n7 << 10)) & 0xC00 ^ v4; /*0xffd0eff1*/
  if ( !n4[8000] ) /*0xffd0effb*/
    n4[8000] = n4[7916]; /*0xffd0f00a*/
  IioTailFuncC9C2((int)n4, n4a, n0x15, 218120348, v6 & 0xFFFFFC03 | (16 * (n4[8000] & 0x3F)) | 3); /*0xffd0f02f*/
  v7 = IioTailFuncC97F((int)n4, n4a, n0x15, 218120380); /*0xffd0f03f*/
  if ( !n4[6723] && n4[6724] < 3u ) /*0xffd0f057*/
    n4[2582] = 2; /*0xffd0f059*/
  v8 = v7 & 0xFFFFFF01; /*0xffd0f063*/
  v9 = &n4[21 * (unsigned __int8)n4a]; /*0xffd0f071*/
  if ( v9[n0x15 + 2582] ) /*0xffd0f073*/
  {
    if ( v9[n0x15 + 2582] == 1 ) /*0xffd0f083*/
    {
      n2 = 2; /*0xffd0f08e*/
      goto LABEL_16; /*0xffd0f090*/
    }
    if ( v9[n0x15 + 2582] == 2 ) /*0xffd0f088*/
    {
      n2 = 6; /*0xffd0f08a*/
      goto LABEL_16; /*0xffd0f08c*/
    }
  }
  n2 = 14; /*0xffd0f092*/
LABEL_16:
  IioTailFuncC9C2((int)n4, n4a, n0x15, 218120380, n2 | v8); /*0xffd0f094*/
  v10 = IioTailFuncC97F((int)n4, n4a, n0x15, 302007476); /*0xffd0f0ae*/
  IioTailFuncC9C2((int)n4, n4a, n0x15, 302007476, v10 | 0x10000000); /*0xffd0f0bf*/
  v11 = IioTailFuncC97F((int)n4, n4a, 0, 218120788); /*0xffd0f0ce*/
  IioTailFuncC9C2((int)n4, n4a, 0, 218120788, v11 | 1); /*0xffd0f0df*/
  n4b = ((n4[2834] & 1) << 6) | IioTailFuncC97F((int)n4, n4a, n0x15, 218112448) & 0xFFAF | (16 * (n4[2666] & 1)) & 0xBF; /*0xffd0f136*/
  if ( n4[2582] == 1 ) /*0xffd0f13d*/
  {
    if ( IioTailFuncD16E((int)n4, 1) == 1 ) /*0xffd0f186*/
    {
      n4b_1 = n4b & 0xFFF0 | 1; /*0xffd0f190*/
      goto LABEL_24; /*0xffd0f190*/
    }
  }
  else if ( n4[2582] == 2 ) /*0xffd0f142*/
  {
    if ( IioTailFuncD16E((int)n4, 2) == 1 ) /*0xffd0f16b*/
    {
      n4b_1 = n4b & 0xFFF0 | 2; /*0xffd0f175*/
      goto LABEL_24; /*0xffd0f178*/
    }
  }
  else if ( IioTailFuncD16E((int)n4, 3) == 1 ) /*0xffd0f150*/
  {
    n4b_1 = n4b & 0xFFF0 | 3; /*0xffd0f15a*/
LABEL_24:
    n4b = n4b_1; /*0xffd0f193*/
  }
  IioTailFuncC99E((int)n4, n4a_1, n0x15, 218112448, n4b); /*0xffd0f197*/
  v13 = IioTailFuncC97F((int)n4, n4a_1, n0x15, 218112432); /*0xffd0f1b0*/
  n7_1 = n4[1219]; /*0xffd0f1b5*/
  if ( n7_1 == 1 && (n7_1 = n4[1322], n7_1 == 7) ) /*0xffd0f1d0*/
    n4c = v13 & 0xFFFC; /*0xffd0f1f1*/
  else
    n4c = v13 & 0xFFFC | n7_1 & 3; /*0xffd0f1e3*/
  return IioTailFuncC99E((int)n4, n4a_1, n0x15, 218112432, n4c & 0xFF7F | ((n4[1910] & 1) << 7)); /*0xffd0f221*/
}

// Function: IioTailX_FFD0F226 @ 0xffd0f226 (0x251 bytes)
// Index: 2353/2560

void __cdecl IioTailX_FFD0F226(unsigned int n4, unsigned __int8 a2, unsigned __int8 a3)
{
  _BYTE *n4_1; // esi
  int n5000; // edi
  __int16 v5; // ax
  __int16 v6; // ax
  int n5000_1; // edi
  char v8; // bl
  char n4_2; // al
  char v10; // cl
  unsigned __int16 n4a; // [esp+18h] [ebp+4h]

  n4_1 = (_BYTE *)n4; /*0xffd0f22a*/
  nullsub_5(); /*0xffd0f237*/
  n5000 = 5000; /*0xffd0f247*/
  do /*0xffd0f271*/
  {
    IioTailFuncCA40(n4, 2u); /*0xffd0f24f*/
    --n5000; /*0xffd0f25c*/
  }
  while ( (IioTailFuncC97F(n4, a2, a3, 218112434) & 0x800) != 0 && n5000 ); /*0xffd0f271*/
  if ( !n5000 ) /*0xffd0f275*/
  {
    nullsub_5(); /*0xffd0f27f*/
    nullsub_5(); /*0xffd0f29b*/
    IioTailFuncCA08(); /*0xffd0f2a3*/
  }
  v5 = IioTailFuncC97F(n4, a2, a3, 218112432); /*0xffd0f2b3*/
  IioTailFuncC99E(n4, a2, a3, 218112432, v5 | 0x20); /*0xffd0f2cf*/
  v6 = IioTailFuncC97F(n4, a2, a3, 218112432); /*0xffd0f2dc*/
  IioTailFuncC99E(n4, a2, a3, 218112432, v6 | 0x20); /*0xffd0f2f5*/
  n4a = IioTailFuncC97F(n4, a2, a3, 218112434) | 0xC000; /*0xffd0f313*/
  IioTailFuncC99E((int)n4_1, a2, a3, 218112434, n4a); /*0xffd0f320*/
  n5000_1 = 5000; /*0xffd0f328*/
  do /*0xffd0f352*/
  {
    IioTailFuncCA40((int)n4_1, 2u); /*0xffd0f330*/
    --n5000_1; /*0xffd0f33d*/
  }
  while ( (IioTailFuncC97F((int)n4_1, a2, a3, 218112434) & 0x800) != 0 && n5000_1 ); /*0xffd0f352*/
  LOWORD(n4) = IioTailFuncC97F((int)n4_1, a2, a3, 218112434); /*0xffd0f361*/
  v8 = n4 & 0xF; /*0xffd0f36c*/
  n4_1[8168] = n4 & 0xF; /*0xffd0f37a*/
  n4_1[8084] = (n4 >> 4) & 0x3F; /*0xffd0f384*/
  nullsub_5(); /*0xffd0f3b9*/
  if ( (n4 & 0x2000) != 0 ) /*0xffd0f3c9*/
  {
    n4_2 = (n4 >> 4) & 0x3F; /*0xffd0f3cb*/
  }
  else
  {
    v8 = 0; /*0xffd0f3d1*/
    n4_2 = 0; /*0xffd0f3d3*/
  }
  if ( n4_2 != 4 ) /*0xffd0f3e1*/
  {
    nullsub_5(); /*0xffd0f3ee*/
    if ( n4_1[4814] ) /*0xffd0f3f6*/
    {
      nullsub_5(); /*0xffd0f411*/
      IioTailFuncCA08(); /*0xffd0f419*/
    }
  }
  v10 = n4_1[2582]; /*0xffd0f421*/
  if ( v10 && v8 != v10 ) /*0xffd0f42d*/
  {
    nullsub_5(); /*0xffd0f43e*/
    if ( n4_1[4814] ) /*0xffd0f446*/
    {
      nullsub_5(); /*0xffd0f461*/
      IioTailFuncCA08(); /*0xffd0f469*/
    }
  }
}

// Function: IioDdrControllerRegCfg @ 0xffd0f477 (0x1f3 bytes)
// Index: 2354/2560

int __cdecl IioDdrControllerRegCfg(_BYTE *src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  int v5; // eax
  int v6; // eax
  int v7; // eax
  unsigned int v8; // eax
  unsigned int v9; // eax
  int v10; // eax
  int v11; // esi
  unsigned __int8 v12; // cl
  int n6; // eax
  int v14; // eax
  int v15; // eax
  int v16; // eax
  int v17; // eax
  int v18; // eax
  _BYTE *srca; // [esp+1Ch] [ebp+4h]
  __int16 n0x15a; // [esp+24h] [ebp+Ch]

  n0x15a = IioTailFuncC97F((int)src, n4, n0x15, 218112098); /*0xffd0f497*/
  v5 = 21 * n4; /*0xffd0f4a7*/
  srca = &src[v5]; /*0xffd0f4b3*/
  IioTailFuncC99E((int)src, n4, n0x15, 218112098, n0x15a & 0xFFFE | (src[v5 + 1826 + n0x15] != 0)); /*0xffd0f4d5*/
  v6 = IioTailFuncC97F((int)src, n4, n0x15, 302204568); /*0xffd0f4e7*/
  IioTailFuncC9C2((int)src, n4, n0x15, 302204568, v6 & 0xFFFFFFFB); /*0xffd0f4f4*/
  v7 = IioTailFuncC97F((int)src, n4, n0x15, 218120576); /*0xffd0f504*/
  if ( src[4810] ) /*0xffd0f50c*/
    v8 = v7 | 0x80; /*0xffd0f515*/
  else
    v8 = v7 & 0xFFFFFF7F; /*0xffd0f51c*/
  if ( src[4806] ) /*0xffd0f521*/
    v9 = v8 | 4; /*0xffd0f52a*/
  else
    v9 = v8 & 0xFFFFFFFB; /*0xffd0f52f*/
  if ( src[4807] ) /*0xffd0f532*/
    v10 = v9 | 8; /*0xffd0f53b*/
  else
    v10 = v9 & 0xFFFFFFF7; /*0xffd0f540*/
  IioTailFuncC9C2((int)src, n4, n0x15, 234897792, v10); /*0xffd0f54c*/
  v11 = IioTailFuncC97F((int)src, n4, n0x15, 218120580); /*0xffd0f561*/
  if ( IioTailFuncD0FF((int)src, n4, n0x15) ) /*0xffd0f563*/
  {
    v12 = src[4252]; /*0xffd0f56f*/
    v11 ^= ((unsigned __int16)v11 ^ (unsigned __int16)(v12 << 9)) & 0x200; /*0xffd0f582*/
    if ( !v12 ) /*0xffd0f586*/
      v11 ^= ((unsigned __int16)v11 ^ (unsigned __int16)((unsigned __int8)src[4253] << 12)) & 0x1000; /*0xffd0f599*/
  }
  if ( src[4808] ) /*0xffd0f59b*/
    v11 |= 8u; /*0xffd0f5a4*/
  LOBYTE(n6) = srca[n0x15 + 2246]; /*0xffd0f5af*/
  if ( (_BYTE)n6 == 6 ) /*0xffd0f5b8*/
    n6 = (unsigned __int8)src[7474]; /*0xffd0f5be*/
  else
    n6 = (unsigned __int8)n6; /*0xffd0f64c*/
  v14 = n6 - 1; /*0xffd0f5c5*/
  if ( !v14 || (v15 = v14 - 1) == 0 ) /*0xffd0f5cd*/
  {
LABEL_22:
    v11 = v11 & 0xFFFF9FFF | 0x2000; /*0xffd0f5e2*/
    goto LABEL_23; /*0xffd0f5e8*/
  }
  v16 = v15 - 1; /*0xffd0f5cf*/
  if ( v16 ) /*0xffd0f5d2*/
  {
    v17 = v16 - 1; /*0xffd0f5d8*/
    if ( v17 ) /*0xffd0f5db*/
    {
      if ( v17 != 1 ) /*0xffd0f5e0*/
        goto LABEL_23; /*0xffd0f5e0*/
      goto LABEL_22; /*0xffd0f5e0*/
    }
    v11 = v11 & 0xFFFF9FFF | 0x4000; /*0xffd0f65a*/
  }
  else
  {
    v11 &= 0xFFFF9FFF; /*0xffd0f662*/
  }
LABEL_23:
  IioTailFuncC9C2((int)src, n4, n0x15, 218120580, v11); /*0xffd0f5ee*/
  v18 = IioTailFuncC97F((int)src, n4, n0x15, 218120564); /*0xffd0f605*/
  if ( src[n4 + 1226] ) /*0xffd0f611*/
    v18 |= 1u; /*0xffd0f61b*/
  if ( src[n4 + 1230] ) /*0xffd0f61e*/
    v18 |= 2u; /*0xffd0f628*/
  if ( src[n4 + 1234] ) /*0xffd0f62b*/
    v18 |= 4u; /*0xffd0f635*/
  return IioTailFuncC9C2((int)src, n4, n0x15, 218120564, v18); /*0xffd0f645*/
}

// Function: IioDdrPhyInitConfig @ 0xffd0f66a (0x166 bytes)
// Index: 2355/2560

int __cdecl IioDdrPhyInitConfig(_BYTE *src, unsigned __int8 n4, unsigned __int8 a3)
{
  __int16 v4; // ax
  int v5; // eax
  int v6; // eax
  int v7; // esi
  unsigned int v8; // edi
  unsigned int v9; // esi
  unsigned int v10; // esi
  unsigned __int8 srca; // [esp+14h] [ebp+4h]

  v4 = IioTailFuncC97F((int)src, n4, a3, 218112004); /*0xffd0f683*/
  IioTailFuncC99E((int)src, n4, a3, 218112004, v4 | 0x400); /*0xffd0f69d*/
  srca = IioTailFuncC97F((int)src, n4, a3, 218107965); /*0xffd0f6b0*/
  IioTailFuncC9E4((int)src, n4, a3, 218107965, srca); /*0xffd0f6bc*/
  v5 = IioTailFuncC97F((int)src, n4, a3, 218120340); /*0xffd0f6cd*/
  IioTailFuncC9C2((int)src, n4, a3, 218120340, v5 & 0xFFFFFFF8 | 1); /*0xffd0f6dd*/
  v6 = IioTailFuncC97F((int)src, n4, a3, 218120372); /*0xffd0f6e9*/
  IioTailFuncC9C2((int)src, n4, a3, 218120372, v6 & 0xFFFFFFDF); /*0xffd0f6f6*/
  v7 = IioTailFuncC97F((int)src, n4, a3, 218120584) & 0x7AFFFFFF; /*0xffd0f715*/
  v8 = IioTailFuncC97F((int)src, n4, a3, 218120588) & 0xFFFFFFF0; /*0xffd0f725*/
  if ( src[2918] ) /*0xffd0f728*/
    v7 |= 0x4000000u; /*0xffd0f731*/
  if ( src[3002] ) /*0xffd0f737*/
    v8 |= 8u; /*0xffd0f740*/
  if ( src[3086] ) /*0xffd0f743*/
    v8 |= 4u; /*0xffd0f74c*/
  if ( src[3170] ) /*0xffd0f74f*/
    v8 |= 2u; /*0xffd0f758*/
  if ( src[3254] ) /*0xffd0f75b*/
    v8 |= 1u; /*0xffd0f764*/
  v9 = v7 | 0x80000000; /*0xffd0f767*/
  if ( src[3506] ) /*0xffd0f76d*/
    v9 |= 0x1000000u; /*0xffd0f776*/
  if ( src[3590] ) /*0xffd0f77c*/
    v10 = v9 & 0xFFFFFFBF; /*0xffd0f79d*/
  else
    v10 = ((unsigned __int16)v9 ^ ((unsigned __int8)src[4816] << 7)) & 0x180 ^ v9 | 0x40; /*0xffd0f798*/
  IioTailFuncC9C2((int)src, n4, a3, 218120584, v10 & 0xFFFFEFFF); /*0xffd0f7b2*/
  return IioTailFuncC9C2((int)src, n4, a3, 218120588, v8); /*0xffd0f7cb*/
}

// Function: IioDdrRegStoreRestore @ 0xffd0f7d0 (0x1b9 bytes)
// Index: 2356/2560

int __cdecl IioDdrRegStoreRestore(_BYTE *src, unsigned __int8 n4, unsigned __int8 a3)
{
  int v4; // eax
  unsigned __int8 v5; // al
  unsigned __int16 v6; // ax
  unsigned __int16 v7; // ax
  unsigned __int8 v8; // al
  unsigned __int8 v9; // al
  int v10; // eax
  int v11; // eax
  int v12; // eax
  int v13; // eax
  unsigned __int16 srca; // [esp+14h] [ebp+4h]

  v4 = *(_DWORD *)(src + 7421); /*0xffd0f7e0*/
  if ( v4 ) /*0xffd0f7e8*/
    IioTailFuncC9C2((int)src, n4, a3, 218120272, v4 | 1); /*0xffd0f7f6*/
  v5 = IioTailFuncC97F((int)src, n4, a3, 234885128); /*0xffd0f807*/
  IioTailFuncC9E4((int)src, n4, a3, 234885128, v5); /*0xffd0f818*/
  v6 = IioTailFuncC97F((int)src, n4, a3, 218112044); /*0xffd0f832*/
  IioTailFuncC99E((int)src, n4, a3, 218112044, v6); /*0xffd0f844*/
  v7 = IioTailFuncC97F((int)src, n4, a3, 218112046); /*0xffd0f850*/
  IioTailFuncC99E((int)src, n4, a3, 218112046, v7); /*0xffd0f862*/
  v8 = IioTailFuncC97F((int)src, n4, a3, 218108001); /*0xffd0f873*/
  IioTailFuncC9E4((int)src, n4, a3, 218108001, v8); /*0xffd0f884*/
  v9 = IioTailFuncC97F((int)src, n4, a3, 218108049); /*0xffd0f890*/
  IioTailFuncC9E4((int)src, n4, a3, 218108049, v9); /*0xffd0f8a1*/
  v10 = IioTailFuncC97F((int)src, n4, a3, 218120420); /*0xffd0f8b2*/
  IioTailFuncC9C2((int)src, n4, a3, 218120420, v10); /*0xffd0f8bc*/
  v11 = IioTailFuncC97F((int)src, n4, a3, 218120728); /*0xffd0f8ca*/
  IioTailFuncC9C2((int)src, n4, a3, 218120728, v11 | 0x1000); /*0xffd0f8d9*/
  IioTailFuncC9C2((int)src, n4, a3, 218120732, 0); /*0xffd0f8ec*/
  IioTailFuncC9C2((int)src, n4, a3, 218120736, 0); /*0xffd0f8fa*/
  IioTailFuncC9C2((int)src, n4, a3, 218120740, 0); /*0xffd0f908*/
  IioTailFuncC9C2((int)src, n4, a3, 218120744, 0); /*0xffd0f916*/
  v12 = IioTailFuncC97F((int)src, n4, a3, 218120524); /*0xffd0f927*/
  IioTailFuncC9C2((int)src, n4, a3, 218120524, v12 | 0x100000); /*0xffd0f936*/
  srca = IioTailFuncC97F((int)src, n4, a3, 218112434) | 0xC000; /*0xffd0f951*/
  IioTailFuncC99E((int)src, n4, a3, 218112434, srca); /*0xffd0f95e*/
  v13 = IioTailFuncC97F((int)src, n4, a3, 218120704); /*0xffd0f96f*/
  return IioTailFuncC9C2((int)src, n4, a3, 218120704, v13 | 1); /*0xffd0f984*/
}

// Function: IioTailX_FFD0F989 @ 0xffd0f989 (0x6b bytes)
// Index: 2357/2560

char __cdecl IioTailX_FFD0F989(int src, int n4)
{
  unsigned __int8 n4_1; // cl
  unsigned __int8 n0x15_1; // bl
  int v4; // eax
  _BYTE *v5; // esi
  int n0x15; // [esp+Ch] [ebp-4h]

  n4_1 = n4; /*0xffd0f98d*/
  n0x15_1 = 0; /*0xffd0f996*/
  v4 = 21 * (unsigned __int8)n4; /*0xffd0f99b*/
  LOBYTE(n0x15) = 0; /*0xffd0f99e*/
  v5 = (_BYTE *)(v4 + src + 7748); /*0xffd0f9a7*/
  do /*0xffd0f9eb*/
  {
    if ( *(v5 - 84) && *v5 ) /*0xffd0f9af*/
    {
      LOBYTE(v4) = IioTailFuncCC57(src, n4_1, n0x15); /*0xffd0f9b9*/
      if ( (_BYTE)v4 ) /*0xffd0f9c3*/
      {
        DdrGen3PresetConfig(src, n4, n0x15); /*0xffd0f9cc*/
        LOBYTE(v4) = IioTailFuncCA40(src, 0xB4u); /*0xffd0f9d7*/
      }
      n4_1 = n4; /*0xffd0f9df*/
    }
    ++n0x15_1; /*0xffd0f9e2*/
    ++v5; /*0xffd0f9e4*/
    LOBYTE(n0x15) = n0x15_1; /*0xffd0f9e5*/
  }
  while ( n0x15_1 < 0x15u ); /*0xffd0f9eb*/
  return v4; /*0xffd0f9ed*/
}

// Function: IioDdrRegClr2 @ 0xffd0f9f4 (0xbf bytes)
// Index: 2358/2560

int __cdecl IioDdrRegClr2(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  unsigned __int8 v4; // bl
  unsigned __int8 v5; // al
  unsigned int srca_1; // esi
  unsigned __int8 n0x15_1; // bl
  int v8; // eax
  int v9; // eax
  unsigned __int8 v11; // [esp+10h] [ebp-4h]
  unsigned __int8 srca; // [esp+18h] [ebp+4h]

  v4 = *(_BYTE *)(src + 8 * n0x15 + 7487); /*0xffd0fa0b*/
  v11 = v4; /*0xffd0fa12*/
  v5 = IioTailFuncCA56(src, n4, n0x15); /*0xffd0fa16*/
  srca = 0; /*0xffd0fa29*/
  srca_1 = (unsigned int)dword_FFD5CE6C[n0x15 + 4 * v5 - v4] >> 2; /*0xffd0fa37*/
  if ( srca_1 ) /*0xffd0fa3c*/
  {
    n0x15_1 = n0x15; /*0xffd0fa3e*/
    do /*0xffd0fa7b*/
    {
      v8 = IioTailFuncC97F(src, n4, n0x15_1, 302007244); /*0xffd0fa4a*/
      IioTailFuncC9C2(src, n4, n0x15_1++, 302007244, v8 & 0xFF03F03F | 0x900900); /*0xffd0fa62*/
      ++srca; /*0xffd0fa72*/
    }
    while ( srca < srca_1 ); /*0xffd0fa7b*/
  }
  v9 = IioTailFuncC97F(src, n4, n0x15, 302007352); /*0xffd0fa88*/
  IioTailFuncC9C2(src, n4, v11, 302009152, v9 & 0xFFFC0FFF | 0x27000); /*0xffd0faa3*/
  return 0; /*0xffd0faad*/
}

// Function: DdrGen3PresetConfig @ 0xffd0fab3 (0x263 bytes)
// Index: 2359/2560

int __cdecl DdrGen3PresetConfig(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  int n0x15_1; // ebp
  int v5; // eax
  char v6; // al
  char *_N_A__2; // eax
  char *_N_A_; // eax
  int v9; // eax
  int v10; // ebp
  int v11; // eax
  int v13; // [esp-30h] [ebp-48h]
  int v14; // [esp-2Ch] [ebp-44h]
  int v15; // [esp-28h] [ebp-40h]
  int v16; // [esp-24h] [ebp-3Ch]
  int v17; // [esp-20h] [ebp-38h]
  int v18; // [esp-1Ch] [ebp-34h]
  const char *_N_A__3; // [esp-8h] [ebp-20h]
  const char *_N_A__1; // [esp-8h] [ebp-20h]
  int v21; // [esp+14h] [ebp-4h]
  char n0x15a; // [esp+24h] [ebp+Ch]

  n0x15_1 = n0x15; /*0xffd0face*/
  v21 = n0x15 + 21 * n4; /*0xffd0fad4*/
  n0x15a = *(_BYTE *)(v21 + src + 5714); /*0xffd0fae7*/
  if ( *(_BYTE *)(v21 + src + 3926) && !*(_BYTE *)(v21 + src + 5714) ) /*0xffd0fae0*/
    n0x15a = 3; /*0xffd0faf1*/
  v5 = IioTailFuncC97F(src, n4, n0x15, 302007268); /*0xffd0faff*/
  IioTailFuncC9C2(src, n4, n0x15, 302007268, v5 & 0xFFFFFFE0 | 0x15); /*0xffd0fb13*/
  switch ( n0x15a )
  {
    case 1:
      nullsub_5(); /*0xffd0fc3d*/
      v10 = v21; /*0xffd0fc42*/
      v18 = *(unsigned __int8 *)(src + v21 + 6050); /*0xffd0fc4e*/
      v17 = *(unsigned __int8 *)(src + v21 + 5966); /*0xffd0fc57*/
      v16 = *(unsigned __int8 *)(src + v21 + 5882); /*0xffd0fc60*/
      nullsub_5(); /*0xffd0fc69*/
      IioDdrPresetPrint(
        src,
        n4,
        n0x15,
        *(unsigned __int8 *)(src + v10 + 5882),
        *(_BYTE *)(src + v10 + 5966),
        *(_BYTE *)(src + v10 + 6050),
        src,
        64,
        "Gen3: Manual override mode \nDfxDnTxPreset: %d\n RxPreset: %d\n DfxUpTxPreset: %d\n",
        v16,
        v17,
        v18);
      v11 = IioTailFuncC97F(src, n4, n0x15, 302007196); /*0xffd0fc9c*/
      IioTailFuncC9C2(src, n4, n0x15, 302007196, v11 | 0x1000); /*0xffd0fcaf*/
      v15 = *(unsigned __int8 *)(src + v21 + 6302); /*0xffd0fcbc*/
      v14 = *(unsigned __int8 *)(src + v21 + 6218); /*0xffd0fcc5*/
      v13 = *(unsigned __int8 *)(src + v21 + 6134); /*0xffd0fcce*/
      nullsub_5(); /*0xffd0fcd7*/
      IioDdrDfxCfgPrint(
        src,
        n4,
        n0x15,
        *(unsigned __int8 *)(src + v10 + 6134),
        *(_BYTE *)(src + v10 + 6218),
        *(_BYTE *)(src + v10 + 6302),
        src,
        64,
        "Gen3: Manual override mode \nDfxDnTxPreset: %d\n RxPreset: %d\n DfxUpTxPreset: %d\n",
        v13,
        v14,
        v15);
      break;
    case 2:
      v6 = *(_BYTE *)(v21 + src + 5798); /*0xffd0fb75*/
      if ( v6 )
      {
        if ( v6 == 1 )
        {
          if ( n0x15 >= 0x15u ) /*0xffd0fbc7*/
            _N_A_ = N_A_; // "N/A" /*0xffd0fbd2*/
          else
            _N_A_ = 0_[n0x15_1]; // "0" /*0xffd0fbc9*/
          _N_A__1 = _N_A_; /*0xffd0fbd8*/
          nullsub_5(); /*0xffd0fbe5*/
          IioDdrRegCfgAll(
            src,
            n4,
            n0x15,
            src,
            64,
            "Gen3: Gen3PrelinkOverride for Gen3 NTB Test Card(SKT=%d, PORT=%s(%d))\n",
            n4,
            _N_A__1,
            n0x15_1);
          v9 = IioTailFuncC97F(src, n4, n0x15, 302007352); /*0xffd0fbfb*/
          IioTailFuncC9C2(src, n4, n0x15, 302007352, v9 & 0xFFFC0FFF | 0x27000); /*0xffd0fc0f*/
        }
      }
      else
      {
        if ( n0x15 >= 0x15u ) /*0xffd0fb83*/
          _N_A__2 = N_A_; // "N/A" /*0xffd0fb8e*/
        else
          _N_A__2 = 0_[n0x15_1]; // "0" /*0xffd0fb85*/
        _N_A__3 = _N_A__2; /*0xffd0fb94*/
        nullsub_5(); /*0xffd0fba1*/
        IioDdrPresetPrint(
          src,
          n4,
          n0x15,
          11,
          41,
          11,
          src,
          64,
          "Gen3: Gen3PrelinkOverride for Gen3 Laguna Test Card(SKT=%d, PORT=%s(%d))\n",
          n4,
          _N_A__3,
          n0x15_1);
      }
      break;
    case 3:
      IioDdrRegClr2(src, n4, n0x15); /*0xffd0fb64*/
      break;
    default:
      nullsub_5(); /*0xffd0fb54*/
      break;
  }
  IioDdrOdtCfg(src, n4, n0x15); /*0xffd0fd05*/
  return 0; /*0xffd0fd0f*/
}

// Function: IioDdrDfxCfgPrint @ 0xffd0fd16 (0xc8 bytes)
// Index: 2360/2560

int IioDdrDfxCfgPrint(
        int src,
        unsigned __int8 n4,
        unsigned __int8 n0x15,
        int a4,
        char a5,
        char a6,
        int a7,
        int n64,
        const char *Gen3:_Manual_override_mode__nDfxDnTxPreset:_%d_n_RxPreset:_%d_n,
        ...)
{
  unsigned __int8 v10; // bl
  unsigned __int8 v11; // al
  unsigned __int8 n0x15_1; // bl
  int v13; // eax
  unsigned int src_1; // [esp+Ch] [ebp-4h]
  unsigned __int8 src_3; // [esp+1Bh] [ebp+Bh]

  v10 = *(_BYTE *)(src + 8 * n0x15 + 7487); /*0xffd0fd2b*/
  v11 = IioTailFuncCA56(src, n4, n0x15); /*0xffd0fd32*/
  src_3 = 0; /*0xffd0fd45*/
  src_1 = (unsigned int)dword_FFD5CE6C[n0x15 + 4 * v11 - v10] >> 2; /*0xffd0fd55*/
  if ( src_1 ) /*0xffd0fd5a*/
  {
    n0x15_1 = n0x15; /*0xffd0fd6d*/
    do /*0xffd0fdd3*/
    {
      IioTailFuncC9C2( /*0xffd0fd97*/
        src,
        n4,
        n0x15_1,
        302007216,
        a5 & 0x3F | ((a5 & 0x3F | ((a6 & 0x1F | (32 * (a6 & 0x1F | (32 * ((32 * a4) | a4 & 0x1F))))) << 6)) << 6));
      v13 = IioTailFuncC97F(src, n4, n0x15_1, 302007244); /*0xffd0fda6*/
      IioTailFuncC9C2(src, n4, n0x15_1++, 302007244, v13 & 0xFEFFFFFF); /*0xffd0fdbb*/
      ++src_3; /*0xffd0fdca*/
    }
    while ( src_3 < src_1 ); /*0xffd0fdd3*/
  }
  return 0; /*0xffd0fdd5*/
}

// Function: IioDdrPresetPrint @ 0xffd0fdde (0xd3 bytes)
// Index: 2361/2560

int IioDdrPresetPrint(
        int src,
        unsigned __int8 n4,
        unsigned __int8 n0x15,
        int n11,
        char n41,
        char a6,
        int a7,
        int n64,
        const char *Gen3:_Manual_override_mode__nDfxDnTxPreset:_%d_n_RxPreset:_%d_n,
        ...)
{
  unsigned __int8 v10; // bl
  unsigned __int8 v11; // al
  unsigned int src_1; // ebx
  unsigned __int8 n0x15_1; // al
  int v14; // eax
  unsigned __int8 n0x15_2; // [esp+Ch] [ebp-4h]
  unsigned __int8 src_3; // [esp+1Bh] [ebp+Bh]

  v10 = *(_BYTE *)(src + 8 * n0x15 + 7487); /*0xffd0fdf3*/
  v11 = IioTailFuncCA56(src, n4, n0x15); /*0xffd0fdfa*/
  src_3 = 0; /*0xffd0fe0d*/
  src_1 = (unsigned int)dword_FFD5CE6C[n0x15 + 4 * v11 - v10] >> 2; /*0xffd0fe1a*/
  if ( src_1 ) /*0xffd0fe1f*/
  {
    n0x15_1 = n0x15; /*0xffd0fe3e*/
    n0x15_2 = n0x15; /*0xffd0fe46*/
    do /*0xffd0fea6*/
    {
      v14 = IioTailFuncC97F(src, n4, n0x15_1, 302007196); /*0xffd0fe62*/
      IioTailFuncC9C2(src, n4, n0x15_2, 302007196, v14 | 0x800); /*0xffd0fe79*/
      IioTailFuncC9C2( /*0xffd0fe8b*/
        src,
        n4,
        n0x15_2++,
        302007212,
        n41 & 0x3F | ((n41 & 0x3F | ((a6 & 0x1F | (32 * (a6 & 0x1F | (32 * ((32 * n11) | n11 & 0x1F))))) << 6)) << 6));
      ++src_3; /*0xffd0fe9b*/
      n0x15_1 = n0x15; /*0xffd0fea3*/
    }
    while ( src_3 < src_1 ); /*0xffd0fea6*/
  }
  return 0; /*0xffd0fea8*/
}

// Function: IioDdrRegCfgAll @ 0xffd0feb1 (0x8d bytes)
// Index: 2362/2560

int IioDdrRegCfgAll(
        int src,
        unsigned __int8 n4,
        unsigned __int8 n0x15,
        int a4,
        int n64,
        const char *Gen3:_Gen3PrelinkOverride_for_Gen3_NTB_Test_Card(SKT_%d__PORT_%, ...)
{
  unsigned __int8 v7; // bl
  unsigned __int8 v8; // al
  unsigned int srca_1; // esi
  unsigned __int8 n0x15_1; // bl
  int v11; // eax
  unsigned __int8 srca; // [esp+10h] [ebp+4h]

  v7 = *(_BYTE *)(src + 8 * n0x15 + 7487); /*0xffd0fec5*/
  v8 = IioTailFuncCA56(src, n4, n0x15); /*0xffd0fecc*/
  srca = 0; /*0xffd0fedf*/
  srca_1 = (unsigned int)dword_FFD5CE6C[n0x15 + 4 * v8 - v7] >> 2; /*0xffd0feed*/
  if ( srca_1 ) /*0xffd0fef2*/
  {
    n0x15_1 = n0x15; /*0xffd0fef4*/
    do /*0xffd0ff35*/
    {
      v11 = IioTailFuncC97F(src, n4, n0x15_1, 302007244); /*0xffd0ff05*/
      IioTailFuncC9C2(src, n4, n0x15_1++, 302007244, v11 & 0xFF03FFFF | 0xD80000); /*0xffd0ff1c*/
      ++srca; /*0xffd0ff2c*/
    }
    while ( srca < srca_1 ); /*0xffd0ff35*/
  }
  return 0; /*0xffd0ff38*/
}

// Function: IioDdrOdtCfg @ 0xffd0ff3e (0x120 bytes)
// Index: 2363/2560

void __cdecl IioDdrOdtCfg(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  int v4; // edi
  unsigned __int8 i; // bl
  char v6; // al
  unsigned __int16 srcb_1; // cx
  char v8; // al
  char v9; // al
  __int16 srca; // [esp+18h] [ebp+4h]
  __int16 srcb; // [esp+18h] [ebp+4h]

  v4 = n0x15 + 21 * n4; /*0xffd0ff5c*/
  nullsub_5(); /*0xffd0ff81*/
  for ( i = 0; i < (unsigned __int8)byte_FFD5CE5C[n0x15]; ++i ) /*0xffd0ff8b*/
  {
    srca = IioTailFuncC97F(src, n4, n0x15, 2 * i + 234889820); /*0xffd0ffb0*/
    v6 = *(_BYTE *)(v4 + src + 6386); /*0xffd0ffb8*/
    if ( v6 == -1 ) /*0xffd0ffc1*/
      srcb_1 = srca & 0xF0FF | 0x700; /*0xffd0ffe4*/
    else
      srcb_1 = srca & 0xF0FF | ((v6 & 0xF) << 8); /*0xffd0ffd5*/
    v8 = *(_BYTE *)(v4 + src + 6470); /*0xffd0ffea*/
    srcb = srcb_1; /*0xffd0fff1*/
    if ( v8 != -1 ) /*0xffd0fff8*/
    {
      srcb_1 = srcb_1 & 0x8FFF | ((v8 & 7) << 12); /*0xffd1000c*/
      srcb = srcb & 0x8FFF | ((v8 & 7) << 12); /*0xffd1000f*/
    }
    v9 = *(_BYTE *)(v4 + src + 6554); /*0xffd10014*/
    if ( v9 != -1 ) /*0xffd1001d*/
      srcb_1 = srcb & 0xFFF0 | v9 & 0xF; /*0xffd1002d*/
    IioTailFuncC9C2(src, n4, n0x15, 2 * i + 234889820, srcb_1); /*0xffd1003e*/
  }
}

// Function: IioFunc005E @ 0xffd1005e (0x53b bytes)
// Index: 2364/2560

void IioFunc005E(int src, int a2, int a3, int a4, int n64, const char *_n%_2d_Speed:_[Gen%d]_LTSSM_[%x%x]___, ...)
{
  switch ( a2 ) /*0xffd1006f*/
  {
    case 0: /*0xffd1006f*/
    case 1: /*0xffd1006f*/
    case 2: /*0xffd1006f*/
    case 3: /*0xffd1006f*/
    case 4: /*0xffd1006f*/
    case 5: /*0xffd1006f*/
    case 6: /*0xffd1006f*/
    case 7: /*0xffd1006f*/
    case 8: /*0xffd1006f*/
      nullsub_5(); /*0xffd104ab*/
      break; /*0xffd104ab*/
    default:
      break;
  }
  nullsub_5(); /*0xffd1058d*/
}

// Function: nullsub_w @ 0xffd10732 (0x5e bytes)
// Index: 2365/2560

void __cdecl nullsub_w()
{
  nullsub_5(); /*0xffd10786*/
}

// Function: IioTailLaneMapCalc @ 0xffd107b2 (0x46 bytes)
// Index: 2366/2560

char __cdecl IioTailLaneMapCalc(int src, unsigned __int8 n4, unsigned __int8 n0x15, char n2)
{
  char v4; // al

  IioTailFuncC97F(src, n4, n0x15, 302007328); /*0xffd107c5*/
  v4 = n0x15 != 1 ? 0 : 4;
  if ( n0x15 > 1u ) /*0xffd107dd*/
    v4 = 4 * ((n0x15 - 1) % 4); /*0xffd107ef*/
  return n2 + v4; /*0xffd107f6*/
}

// Function: IioTailX_FFD107F8 @ 0xffd107f8 (0xb4 bytes)
// Index: 2367/2560

int __cdecl IioTailX_FFD107F8(int src, unsigned __int8 n4, unsigned __int8 n0x15, char n2, __int16 a5)
{
  unsigned __int8 n0xC; // bl
  int v7; // eax
  unsigned int v8; // edx
  char v9; // cl
  int v10; // eax
  char v11; // cl

  n0xC = IioTailLaneMapCalc(src, n4, n0x15, n2); /*0xffd10814*/
  switch ( a5 ) /*0xffd10821*/
  {
    case 1: /*0xffd10821*/
      if ( n0xC < 0xCu ) /*0xffd1087c*/
      {
        v7 = IioTailFuncC97F(src, n4, n0x15, 302008944); /*0xffd10883*/
        goto LABEL_7; /*0xffd10883*/
      }
      v8 = IioTailFuncC97F(src, n4, n0x15, 302008948); /*0xffd10895*/
      v11 = 5 * n0xC; /*0xffd10897*/
LABEL_16:
      v9 = v11 - 30; /*0xffd1089a*/
      return (v8 >> v9) & 0x1F; /*0xffd1089a*/
    case 2: /*0xffd10821*/
      if ( n0xC < 0xCu ) /*0xffd10869*/
      {
        v7 = IioTailFuncC97F(src, n4, n0x15, 302008952); /*0xffd10870*/
        goto LABEL_7; /*0xffd10870*/
      }
      v10 = IioTailFuncC97F(src, n4, n0x15, 302008956); /*0xffd10877*/
      goto LABEL_9; /*0xffd10877*/
    case 3: /*0xffd10821*/
      if ( n0xC < 0xCu ) /*0xffd10834*/
      {
        v7 = IioTailFuncC97F(src, n4, n0x15, 302008960); /*0xffd1083e*/
LABEL_7:
        v8 = v7; /*0xffd10843*/
        v9 = 5 * (n0xC >> 1); /*0xffd1084a*/
        return (v8 >> v9) & 0x1F; /*0xffd108a2*/
      }
      v10 = IioTailFuncC97F(src, n4, n0x15, 302008964); /*0xffd10857*/
LABEL_9:
      v8 = v10; /*0xffd1085c*/
      v11 = 5 * n0xC; /*0xffd10861*/
      goto LABEL_16; /*0xffd10864*/
  }
  return 0; /*0xffd108a5*/
}

// Function: IioTailX_FFD108AC @ 0xffd108ac (0x214 bytes)
// Index: 2368/2560

void __cdecl IioTailX_FFD108AC(int src, unsigned __int8 n4, unsigned __int8 n0x15, unsigned __int16 n2)
{
  unsigned __int8 n0x15_1; // cl
  int v7; // eax
  unsigned __int16 i; // ax
  unsigned __int16 n0x1F; // bp
  unsigned __int16 n255; // ax
  int v11; // esi
  char srca_1; // al
  unsigned __int8 i_1; // [esp+10h] [ebp-14h]
  int v14; // [esp+14h] [ebp-10h]
  char srca; // [esp+28h] [ebp+4h]
  unsigned __int8 n4a; // [esp+2Ch] [ebp+8h]

  nullsub_5(); /*0xffd108c1*/
  n0x15_1 = n0x15; /*0xffd108cd*/
  n4a = *(_BYTE *)(n0x15 + 21 * n4 + src + 7008); /*0xffd108eb*/
  if ( n0x15 ) /*0xffd108f1*/
  {
    v7 = IioTailFuncC97F(src, n4, n0x15, 302006556); /*0xffd108fc*/
    IioTailFuncC9C2(src, n4, n0x15, 302006556, ((n0x15 & 3) << 25) | v7 & 0xF9FFFFFF); /*0xffd10918*/
    n0x15_1 = n0x15; /*0xffd1091d*/
  }
  i_1 = 0; /*0xffd10927*/
  for ( i = 0; i < n2; i = i_1 ) /*0xffd1092c*/
  {
    n0x1F = 0; /*0xffd10933*/
    srca = 0; /*0xffd10935*/
    do /*0xffd10a30*/
    {
      ++n0x1F; /*0xffd1093a*/
      n255 = 8 * n0x1F; /*0xffd10940*/
      if ( n0x1F > 0x1Fu ) /*0xffd1094b*/
        n255 = 255; /*0xffd1094d*/
      IioDdrDfeCfg(src, n4, n0x15_1, i_1, n0x1F, n255); /*0xffd1095f*/
      IioTailFuncC9C2(src, n4, n4a, 302006560, 0xFFFF); /*0xffd10974*/
      IioTailFuncC9C2(src, n4, n4a, 302006564, -1); /*0xffd10986*/
      v14 = 0; /*0xffd1098e*/
      while ( 1 ) /*0xffd10999*/
      {
        IioTailFuncCA40(src, 0x3E8u); /*0xffd10999*/
        v11 = IioTailFuncC97F(src, n4, n4a, 302006560) & 0x7FFF; /*0xffd109bb*/
        if ( v11 + (IioTailFuncC97F(src, n4, n4a, 302006564) & 0x7FFF) ) /*0xffd109ce*/
          break; /*0xffd109ce*/
        if ( (unsigned __int16)++v14 >= 0xAu ) /*0xffd109df*/
        {
          srca_1 = srca; /*0xffd109e1*/
          goto LABEL_12; /*0xffd109e5*/
        }
      }
      IioTailFuncC9C2(src, n4, n4a, 302008132, 0); /*0xffd109f5*/
      IioDdrDfeCfg(src, n4, n0x15, i_1, 0, 0); /*0xffd10a06*/
      srca_1 = 1; /*0xffd10a14*/
      srca = 1; /*0xffd10a15*/
LABEL_12:
      n0x15_1 = n0x15; /*0xffd10a19*/
    }
    while ( srca_1 == 0 && n0x1F < 0x40u ); /*0xffd10a30*/
    nullsub_5(); /*0xffd10a5e*/
    IioTailFuncC9C2(src, n4, n4a, 302006560, 0xFFFF); /*0xffd10a73*/
    IioTailFuncC9C2(src, n4, n4a, 302006564, -1); /*0xffd10a85*/
    n0x15_1 = n0x15; /*0xffd10a91*/
    ++i_1; /*0xffd10a97*/
  }
  nullsub_5(); /*0xffd10ab0*/
}

// Function: IioTailX_FFD10AC0 @ 0xffd10ac0 (0xb8 bytes)
// Index: 2369/2560

unsigned int __cdecl IioTailX_FFD10AC0(int src, unsigned __int8 n4, unsigned __int8 n0x15, char n2, int n18)
{
  char v5; // bp
  char v6; // cl
  unsigned int v7; // esi
  unsigned __int8 v9; // [esp+Fh] [ebp-1h]
  char n18a; // [esp+24h] [ebp+14h]

  v5 = byte_FFD5CEBE[4 * n18]; /*0xffd10ad2*/
  v6 = byte_FFD5CEBF[4 * n18]; /*0xffd10ada*/
  n18a = byte_FFD5CEBD[4 * n18]; /*0xffd10aed*/
  v9 = (1 << (v6 - v5 + 1)) - 1; /*0xffd10afe*/
  IioTailLaneMapCalc(src, n4, n0x15, n2); /*0xffd10b02*/
  IioTailFuncC9C2(src, n4, n0x15, 302007812, 0); /*0xffd10b14*/
  IioTailFuncC9C2(src, n4, n0x15, 302007808, 0); /*0xffd10b26*/
  IioTailFuncCA40(src, 0x1F4u); /*0xffd10b31*/
  v7 = IioTailFuncC97F(src, n4, n0x15, 302007812); /*0xffd10b4c*/
  if ( n18a != 35 && n18a != 33 ) /*0xffd10b5f*/
    v7 >>= 1; /*0xffd10b66*/
  return (v7 >> v5) & v9; /*0xffd10b73*/
}

// Function: IioTailX_FFD10B78 @ 0xffd10b78 (0x1f0 bytes)
// Index: 2370/2560

int __cdecl IioTailX_FFD10B78(int src, unsigned __int8 n4, unsigned __int8 n0x15, char n2, int n18)
{
  unsigned __int8 v5; // bh
  unsigned __int8 v6; // bl
  char v7; // bl
  unsigned int v8; // edi
  int v9; // edi
  unsigned __int8 v11; // [esp+13h] [ebp-5h]
  char v12; // [esp+14h] [ebp-4h]
  unsigned __int8 n2a; // [esp+28h] [ebp+10h]

  v5 = byte_FFD5CEBD[4 * n18]; /*0xffd10b89*/
  v12 = byte_FFD5CEBE[4 * n18]; /*0xffd10ba3*/
  v11 = (1 << (byte_FFD5CEBF[4 * n18] - v12 + 1)) - 1; /*0xffd10bb7*/
  v6 = IioTailLaneMapCalc(src, n4, n0x15, n2); /*0xffd10bc0*/
  n2a = *(_BYTE *)(n0x15 + 21 * n4 + src + 7008); /*0xffd10be3*/
  IioTailFuncC9E4(src, n4, n2a, 302126692, 1u); /*0xffd10bee*/
  IioTailFuncC9C2(src, n4, n2a, 302138908, 0); /*0xffd10c00*/
  IioTailFuncC9C2(src, n4, n2a, 302138904, (-1 - (v6 << 30)) & 0x40000000); /*0xffd10c27*/
  IioTailFuncC9C2(src, n4, n0x15, 302008460, 1 << (v6 >> 1)); /*0xffd10c4b*/
  IioTailFuncC9C2(src, n4, n2a, 302138908, v5 | (((n0x15 >> 2) & 0x80000001) << 7)); /*0xffd10c75*/
  v7 = IioTailFuncC97F(src, n4, n2a, 302126428); /*0xffd10c87*/
  IioTailFuncC9E4(src, n4, n2a, 302126428, v7 | 4); /*0xffd10c9a*/
  IioTailFuncCA40(src, 0x1F4u); /*0xffd10ca9*/
  IioTailFuncC9E4(src, n4, n2a, 302126428, v7 & 0xFB); /*0xffd10cc1*/
  IioTailFuncCA40(src, 0x1F4u); /*0xffd10cc8*/
  v8 = IioTailFuncC97F(src, n4, n2a, 302138704); /*0xffd10ce4*/
  IioTailFuncC9C2(src, n4, n2a, 302008460, 0); /*0xffd10ce6*/
  v9 = v11 & (v8 >> v12); /*0xffd10cff*/
  if ( n18 == 18 || n18 == 33 ) /*0xffd10d01*/
    v9 = -v9; /*0xffd10d13*/
  if ( n18 == 19 || n18 == 34 ) /*0xffd10d17*/
    v9 = 31 - v9; /*0xffd10d2e*/
  if ( n18 == 20 || n18 == 21 || n18 == 35 || n18 == 36 ) /*0xffd10d32*/
    return 15 - v9; /*0xffd10d5d*/
  return v9; /*0xffd10d61*/
}

// Function: IioFunc0D68 @ 0xffd10d68 (0x3bb bytes)
// Index: 2371/2560

int __cdecl IioFunc0D68(int src, char n4, char n5)
{
  unsigned int v4; // esi
  int v5; // eax
  int n302072776; // edi
  int v7; // eax
  unsigned __int8 n0x40; // cl
  char v9; // bp
  int v10; // eax
  unsigned __int8 v11; // bp
  char v12; // al
  int v13; // eax
  int v15; // [esp-14h] [ebp-30h]
  int v16; // [esp-14h] [ebp-30h]
  int v17; // [esp-Ch] [ebp-28h]
  char v18; // [esp+12h] [ebp-Ah]
  unsigned __int8 n0x40_1; // [esp+13h] [ebp-9h]
  int v20; // [esp+14h] [ebp-8h]
  char srca; // [esp+20h] [ebp+4h]

  nullsub_5(); /*0xffd10d7d*/
  nullsub_5(); /*0xffd10d89*/
  nullsub_5(); /*0xffd10dae*/
  nullsub_5(); /*0xffd10dda*/
  if ( IioTailFuncCEB0(src, n4, n5) ) /*0xffd10deb*/
  {
    v4 = (unsigned int)IioTailFuncC97F(src, n4, n5, 302074712) >> 17; /*0xffd10e60*/
    v7 = IioTailFuncC97F(src, n4, n5, 302074716); /*0xffd10e64*/
    IioTailFuncC9C2(src, n4, n5, 302074716, v7 & 0xFFFFFFFE); /*0xffd10e77*/
    n302072776 = 302072776; /*0xffd10e7c*/
  }
  else
  {
    v4 = (unsigned int)IioTailFuncC97F(src, n4, n5, 302009176) >> 17; /*0xffd10e1b*/
    v5 = IioTailFuncC97F(src, n4, n5, 302009180); /*0xffd10e23*/
    IioTailFuncC9C2(src, n4, n5, 302009180, v5 & 0xFFFFFFFE); /*0xffd10e36*/
    n302072776 = 302007240; /*0xffd10e3b*/
  }
  IioTailFuncC97F(src, n4, n5, n302072776); /*0xffd10e8b*/
  IioTailFuncC9C2(src, n4, n5, n302072776, -1); /*0xffd10e9f*/
  nullsub_5(); /*0xffd10eb5*/
  DdrPhyTriggerCfg(src, n4, n5, src, 64, "\n Trigger: 0x%x\t", v4 & 0x3FFF);
  DdrPhyCebCfg(src, n4, n5); /*0xffd10ed1*/
  nullsub_5(); /*0xffd10edd*/
  n0x40 = 0; /*0xffd10ee7*/
  v18 = 0; /*0xffd10ee9*/
  n0x40_1 = 0; /*0xffd10eed*/
  do
  {
    srca = 63 - n0x40; /*0xffd10f03*/
    v9 = 63 - n0x40; /*0xffd10f0c*/
    v20 = (unsigned __int8)(63 - n0x40); /*0xffd10f14*/
    if ( IioTailFuncCEB0(src, n4, n5) ) /*0xffd10f07*/
    {
      v13 = IioTailFuncC97F(src, n4, n5, 302074720); /*0xffd10f7d*/
      IioTailFuncC9C2(src, n4, n5, 302009184, v9 & 0x3F | v13 & 0xFFFFFFC0); /*0xffd10f95*/
      v11 = IioTailFuncC97F(src, n4, n5, 302074704); /*0xffd10fb6*/
      v12 = IioTailFuncC97F(src, n4, n5, 302074708); /*0xffd10fbd*/
    }
    else
    {
      v10 = IioTailFuncC97F(src, n4, n5, 302009184); /*0xffd10f26*/
      IioTailFuncC9C2(src, n4, n5, 302009184, v9 & 0x3F | v10 & 0xFFFFFFC0); /*0xffd10f3e*/
      v11 = IioTailFuncC97F(src, n4, n5, 302009168); /*0xffd10f5f*/
      v12 = IioTailFuncC97F(src, n4, n5, 302009172); /*0xffd10f66*/
    }
    v17 = v12 & 3; /*0xffd10fe0*/
    nullsub_5(); /*0xffd10fed*/
    IioFunc005E(
      src,
      v11 >> 4,
      v11 & 0xF,
      src,
      64,
      "\n%-2d Speed: [Gen%d] LTSSM [%x%x] = ",
      v20,
      v17,
      v11 >> 4,
      v11 & 0xF);
    nullsub_5(); /*0xffd11018*/
    if ( v18 ) /*0xffd11025*/
    {
      nullsub_5(); /*0xffd1102e*/
      nullsub_w(); /*0xffd11038*/
      v18 = 0; /*0xffd11042*/
    }
    if ( v11 >> 4 == 3 && (v11 & 0xF) == 0 && srca ) /*0xffd11057*/
      v18 = 1; /*0xffd11059*/
    n0x40 = n0x40_1 + 1; /*0xffd11067*/
    n0x40_1 = n0x40; /*0xffd11069*/
  }
  while ( n0x40 < 0x40u );
  nullsub_5(); /*0xffd1107d*/
  if ( IioTailFuncCEB0(src, n4, n5) ) /*0xffd1108b*/
    IioTailFuncC97F(src, n4, n5, 302072776); /*0xffd110ac*/
  else
    IioTailFuncC97F(src, n4, n5, 302007240); /*0xffd1109c*/
  nullsub_5(); /*0xffd110bc*/
  if ( IioTailFuncCEB0(src, n4, n5) ) /*0xffd110ca*/
  {
    v16 = IioTailFuncC97F(src, n4, n5, 302074716) | 1; /*0xffd11108*/
    return IioTailFuncC9C2(src, n4, n5, 302074716, v16); /*0xffd11113*/
  }
  else
  {
    v15 = IioTailFuncC97F(src, n4, n5, 302009180) | 1; /*0xffd110ed*/
    return IioTailFuncC9C2(src, n4, n5, 302009180, v15); /*0xffd110ef*/
  }
}

// Function: DdrPhyDqsSetup @ 0xffd11123 (0x192 bytes)
// Index: 2372/2560

void __cdecl DdrPhyDqsSetup(int src, char n4, unsigned __int8 n5, int a4, unsigned __int8 a5, unsigned __int8 a6)
{
  int v7; // eax
  int v8; // eax
  int v9; // eax
  int v10; // eax
  int v11; // eax
  int v12; // eax
  int v13; // eax
  unsigned __int8 n5a; // [esp+20h] [ebp+Ch]

  if ( n5 ) /*0xffd11136*/
    n5a = (n5 - 1) % 4; /*0xffd11145*/
  else
    n5a = 0; /*0xffd1114d*/
  if ( IioTailFuncCEB0(src, n4, n5) ) /*0xffd1115c*/
  {
    v11 = IioTailFuncC97F(src, n4, n5, 302074716); /*0xffd11220*/
    IioTailFuncC9C2(src, n4, n5, 302074716, v11 & 0xFFFFFFFE); /*0xffd1122d*/
    v12 = IioTailFuncC97F(src, n4, n5, 302074712); /*0xffd1123f*/
    IioTailFuncC9C2(src, n4, n5, 302074712, (8 * (a5 | (a5 << 14))) | v12 & 0x80000007 | 4); /*0xffd11261*/
    v13 = IioTailFuncC97F(src, n4, n5, 302074716); /*0xffd11271*/
    IioTailFuncC9C2(src, n4, n5, 302009180, (4 * a6) | v13 & 0xFF0FFC03 | 0xFFC01); /*0xffd11293*/
  }
  else
  {
    v7 = IioTailFuncC97F(src, n4, n5, 302009176); /*0xffd11175*/
    IioTailFuncC9C2(src, n4, n5, 302009176, n5a & 3 | v7 & 0xFFFFFFFC); /*0xffd1118e*/
    v8 = IioTailFuncC97F(src, n4, n5, 302009180); /*0xffd1119a*/
    IioTailFuncC9C2(src, n4, n5, 302009180, v8 & 0xFFFFFFFE); /*0xffd111a7*/
    v9 = IioTailFuncC97F(src, n4, n5, 302009180); /*0xffd111bc*/
    IioTailFuncC9C2(src, n4, n5, 302009176, (8 * (a5 | (a5 << 14))) | v9 & 0x80000007 | 4); /*0xffd111de*/
    v10 = IioTailFuncC97F(src, n4, n5, 302009180); /*0xffd111ec*/
    IioTailFuncC9C2(src, n4, n5, 302009180, (4 * a6) | v10 & 0xFF0FFC03 | 0xFFC01); /*0xffd1120a*/
  }
  nullsub_5(); /*0xffd112a7*/
}

// Function: IioTailX_FFD112B5 @ 0xffd112b5 (0x9d bytes)
// Index: 2373/2560

int __cdecl IioTailX_FFD112B5(int src, unsigned __int8 n4, char a3)
{
  unsigned __int8 n0x15; // bl
  unsigned __int8 n4_1; // di
  int v5; // ebp
  int result; // eax
  __int16 v7; // ax
  unsigned __int16 v8; // ax
  unsigned __int8 v9; // [esp+14h] [ebp-8h]
  unsigned __int8 n0x15_1; // [esp+18h] [ebp-4h]

  n0x15 = 0; /*0xffd112bf*/
  n4_1 = n4; /*0xffd112c2*/
  v5 = 0; /*0xffd112c6*/
  n0x15_1 = 0; /*0xffd112c8*/
  do /*0xffd11348*/
  {
    result = IioTailFuncD055(src, n4_1, n0x15_1); /*0xffd112d2*/
    if ( (_BYTE)result ) /*0xffd112dc*/
    {
      v9 = *(_BYTE *)(v5 + 21 * n4 + src + 7008); /*0xffd112f7*/
      v7 = IioTailFuncC97F(src, n4, v9, 302130436); /*0xffd11301*/
      if ( a3 ) /*0xffd1130e*/
        v8 = v7 | 0xE1; /*0xffd1131f*/
      else
        v8 = v7 & 0xFF1E; /*0xffd11315*/
      n4_1 = n4; /*0xffd11330*/
      result = IioTailFuncC99E(src, n4, v9, 302130436, v8); /*0xffd11336*/
    }
    ++n0x15; /*0xffd1133e*/
    ++v5; /*0xffd11340*/
    n0x15_1 = n0x15; /*0xffd11341*/
  }
  while ( n0x15 < 0x15u ); /*0xffd11348*/
  return result; /*0xffd1134a*/
}

// Function: DdrPhyTriggerCfg @ 0xffd11352 (0xd1 bytes)
// Index: 2374/2560

void DdrPhyTriggerCfg(int src, char n4, unsigned __int8 n5, int a4, int n64, const char *_n_Trigger:_0x%x_t, ...)
{
  int v6; // eax
  unsigned int v7; // eax
  int v8; // eax
  unsigned int v9; // [esp+10h] [ebp-4h]

  if ( IioTailFuncCEB0(src, n4, n5) ) /*0xffd11366*/
  {
    v8 = IioTailFuncC97F(src, n4, n5, 302072092); /*0xffd113b1*/
    IioTailFuncC9C2(src, n4, n5, 302072092, v8 ^ (v8 ^ (dword_FFD5CF64[n5] << 25)) & 0x6000000); /*0xffd113d2*/
    v7 = IioTailFuncC97F(src, n4, n5, 302072100); /*0xffd113df*/
  }
  else
  {
    v6 = IioTailFuncC97F(src, n4, n5, 302006556); /*0xffd1137b*/
    IioTailFuncC9C2(src, n4, n5, 302006556, v6 ^ (v6 ^ (dword_FFD5CF64[n5] << 25)) & 0x6000000); /*0xffd1139c*/
    v7 = IioTailFuncC97F(src, n4, n5, 302006564); /*0xffd113a6*/
  }
  v9 = v7 >> 15; /*0xffd113f1*/
  nullsub_5(); /*0xffd113fe*/
  if ( (v9 & 1) != 0 ) /*0xffd1140b*/
    nullsub_5(); /*0xffd11415*/
}

// Function: DdrPhyCebCfg @ 0xffd11423 (0xaa bytes)
// Index: 2375/2560

int __cdecl DdrPhyCebCfg(int src, char n4, unsigned __int8 n5)
{
  int v3; // eax
  int n302072100; // ebp
  int v5; // eax
  int v6; // eax

  if ( IioTailFuncCEB0(src, n4, n5) ) /*0xffd11436*/
  {
    v5 = IioTailFuncC97F(src, n4, n5, 302072092); /*0xffd1147f*/
    IioTailFuncC9C2(src, n4, n5, 302072092, v5 ^ (v5 ^ (dword_FFD5CF64[n5] << 25)) & 0x6000000); /*0xffd114a0*/
    n302072100 = 302072100; /*0xffd114a5*/
  }
  else
  {
    v3 = IioTailFuncC97F(src, n4, n5, 302006556); /*0xffd1144b*/
    IioTailFuncC9C2(src, n4, n5, 302006556, v3 ^ (v3 ^ (dword_FFD5CF64[n5] << 25)) & 0x6000000); /*0xffd1146c*/
    n302072100 = 302006564; /*0xffd11471*/
  }
  v6 = IioTailFuncC97F(src, n4, n5, n302072100); /*0xffd114ac*/
  return IioTailFuncC9C2(src, n4, n5, n302072100, v6 & 0xFFFF0000 | 0x87FF); /*0xffd114c8*/
}

// Function: IioDdrDfeCfg @ 0xffd114cd (0x105 bytes)
// Index: 2376/2560

int __cdecl IioDdrDfeCfg(
        int src,
        unsigned __int8 n4,
        unsigned __int8 n0x15,
        char i,
        unsigned __int16 n0x1F,
        unsigned __int16 n255)
{
  unsigned __int8 n4a_1; // al
  unsigned int n4a_2; // edi
  unsigned __int8 n0x15_1; // bp
  int result; // eax
  unsigned __int8 srca; // [esp+14h] [ebp+4h]
  unsigned __int8 n4a; // [esp+18h] [ebp+8h]

  srca = *(_BYTE *)(n0x15 + src + 21 * n4 + 7008); /*0xffd114f6*/
  n4a_1 = IioTailLaneMapCalc(src, n4, n0x15, i); /*0xffd114fa*/
  n4a = n4a_1; /*0xffd11506*/
  n4a_2 = n4a_1; /*0xffd1150a*/
  if ( n4a_1 >= 0xAu ) /*0xffd1150f*/
    IioTailFuncC9C2(src, n4, srca, 302008156, n0x1F << (6 * ((n4a_1 - 10) / 2))); /*0xffd11542*/
  else
    IioTailFuncC9C2(src, n4, srca, 302008152, n0x1F << (6 * (n4a_1 >> 1))); /*0xffd11525*/
  if ( n4a >= 8u ) /*0xffd1154f*/
  {
    n0x15_1 = n0x15; /*0xffd11573*/
    IioTailFuncC9C2(src, n4, n0x15, 302008140, n255 << (8 * ((int)(n4a_2 - 8) / 2))); /*0xffd11594*/
  }
  else
  {
    IioTailFuncC9C2(src, n4, srca, 302008136, n255 << (8 * (n4a_2 >> 1))); /*0xffd11568*/
    n0x15_1 = n0x15; /*0xffd1156d*/
  }
  result = n255 != 0; /*0xffd115af*/
  if ( ((n0x1F != 0) & (unsigned __int8)result) != 0 ) /*0xffd115b3*/
    return IioTailFuncC9C2(src, n4, n0x15_1, 302008132, 1 << n4a_2); /*0xffd115c5*/
  return result; /*0xffd115cd*/
}

// Function: IioTailFunc15D2 @ 0xffd115d2 (0x2d0 bytes)
// Index: 2377/2560

unsigned __int8 __cdecl IioTailFunc15D2(int src)
{
  unsigned __int8 n4_1; // al
  int v2; // esi
  unsigned __int8 n0x15_1; // bl
  __int16 v4; // ax
  int n2_1; // ebx
  __int16 v6; // si
  unsigned __int8 *v7; // eax
  unsigned __int8 n18; // al
  int n18_1; // esi
  bool v10; // zf
  unsigned __int8 n0x15; // [esp+10h] [ebp-38h]
  unsigned __int8 n2; // [esp+14h] [ebp-34h]
  unsigned __int8 n4; // [esp+1Ch] [ebp-2Ch]
  int v14; // [esp+20h] [ebp-28h]
  unsigned int v15; // [esp+24h] [ebp-24h]
  _DWORD *v16; // [esp+28h] [ebp-20h]
  int n19; // [esp+2Ch] [ebp-1Ch]
  _DWORD v18[3]; // [esp+34h] [ebp-14h] BYREF
  char n9; // [esp+40h] [ebp-8h]
  char n8; // [esp+41h] [ebp-7h]
  char n30; // [esp+42h] [ebp-6h]
  char v22; // [esp+43h] [ebp-5h]
  __int16 n3099; // [esp+44h] [ebp-4h]
  char n5; // [esp+46h] [ebp-2h]

  n8 = 8; /*0xffd115e0*/
  n4_1 = 0; /*0xffd115e6*/
  v18[0] = 639967008; /*0xffd115e7*/
  v22 = 1; /*0xffd115ef*/
  v2 = 0; /*0xffd115f5*/
  v18[1] = 606282273; /*0xffd115f7*/
  v18[2] = 101124619; /*0xffd115ff*/
  n9 = 9; /*0xffd11607*/
  n30 = 30; /*0xffd1160c*/
  n3099 = 3099; /*0xffd11611*/
  n5 = 5; /*0xffd11618*/
  n4 = 0; /*0xffd1161d*/
  v14 = 0; /*0xffd11621*/
  do /*0xffd1188e*/
  {
    if ( *(_BYTE *)(src + v2 + 6776) ) /*0xffd11625*/
    {
      IioTailX_FFD112B5(src, n4, 0); /*0xffd1163b*/
      n0x15_1 = 0; /*0xffd11643*/
      n0x15 = 0; /*0xffd11645*/
      do /*0xffd11868*/
      {
        if ( IioTailFuncD055(src, n4, n0x15) ) /*0xffd1164f*/
        {
          if ( n0x15_1 ) /*0xffd11661*/
            v4 = IioTailFuncC97F(src, n4, n0x15, 234889378); /*0xffd11677*/
          else
            v4 = IioTailFuncC97F(src, n4, 0, 218112434); /*0xffd1166a*/
          LOWORD(v15) = v4; /*0xffd11681*/
          n2_1 = (v15 >> 4) & 0x3F; /*0xffd11697*/
          if ( (_WORD)n2_1 == 1 || n2_1 == 2 || n2_1 == 4 || (_WORD)n2_1 == 8 || (v4 & 0x3F0) == 0x100 ) /*0xffd116c9*/
          {
            nullsub_5(); /*0xffd116d7*/
            nullsub_5(); /*0xffd116ee*/
            nullsub_5(); /*0xffd1170b*/
            nullsub_5(); /*0xffd11718*/
            if ( n0x15 != 0 && (_WORD)n2_1 != 0 ) /*0xffd1172d*/
              IioTailX_FFD108AC(src, n4, n0x15, n2_1); /*0xffd11741*/
            nullsub_5(); /*0xffd11751*/
            nullsub_5(); /*0xffd1175e*/
            n2 = 0; /*0xffd1176a*/
            if ( (_WORD)n2_1 ) /*0xffd11771*/
            {
              v6 = v15 & 0xF; /*0xffd1177b*/
              do /*0xffd11842*/
              {
                nullsub_5(); /*0xffd1178e*/
                IioTailX_FFD107F8(src, n4, n0x15, n2, v6); /*0xffd1179e*/
                nullsub_5(); /*0xffd117ae*/
                v7 = (unsigned __int8 *)v18; /*0xffd117b3*/
                n19 = 19; /*0xffd117b7*/
                v16 = v18; /*0xffd117c2*/
                do /*0xffd11828*/
                {
                  n18 = *v7; /*0xffd117c6*/
                  n18_1 = n18; /*0xffd117c8*/
                  if ( !byte_FFD5CEBC[4 * n18] ) /*0xffd117cb*/
                    IioTailX_FFD10AC0(src, n4, n0x15, n2, n18); /*0xffd117e0*/
                  if ( byte_FFD5CEBC[4 * n18_1] == 1 ) /*0xffd117f2*/
                    IioTailX_FFD10B78(src, n4, n0x15, n2, n18_1); /*0xffd117ff*/
                  nullsub_5(); /*0xffd11812*/
                  v7 = (unsigned __int8 *)v16 + 1; /*0xffd1181e*/
                  v10 = n19-- == 1; /*0xffd1181f*/
                  v16 = (_DWORD *)((char *)v16 + 1); /*0xffd11824*/
                }
                while ( !v10 ); /*0xffd11828*/
                v6 = v15 & 0xF; /*0xffd11834*/
                ++n2; /*0xffd1183b*/
              }
              while ( n2 < (unsigned __int16)n2_1 ); /*0xffd11842*/
            }
            nullsub_5(); /*0xffd11850*/
            n0x15_1 = n0x15; /*0xffd11855*/
          }
          else
          {
            n0x15_1 = n0x15; /*0xffd1189c*/
          }
        }
        n0x15 = ++n0x15_1; /*0xffd11861*/
      }
      while ( n0x15_1 < 0x15u ); /*0xffd11868*/
      IioTailX_FFD112B5(src, n4, 1); /*0xffd11871*/
      n4_1 = n4; /*0xffd11876*/
      v2 = v14; /*0xffd1187d*/
    }
    ++n4_1; /*0xffd11881*/
    ++v2; /*0xffd11883*/
    n4 = n4_1; /*0xffd11884*/
    v14 = v2; /*0xffd11888*/
  }
  while ( n4_1 < 4u ); /*0xffd1188e*/
  return n4_1; /*0xffd11894*/
}

// Function: IioTailFunc18A2 @ 0xffd118a2 (0x79 bytes)
// Index: 2378/2560

int __cdecl IioTailFunc18A2(int src, unsigned __int8 n4)
{
  unsigned __int8 n0x15; // bl
  int result; // eax
  int v4; // [esp-14h] [ebp-28h]
  int v5; // [esp-14h] [ebp-28h]
  unsigned __int8 v6; // [esp+10h] [ebp-4h]

  n0x15 = 0; /*0xffd118aa*/
  v6 = 0; /*0xffd118b6*/
  do /*0xffd11913*/
  {
    result = IioTailFuncD055(src, n4, v6); /*0xffd118c0*/
    if ( (_BYTE)result ) /*0xffd118ca*/
    {
      if ( n0x15 ) /*0xffd118ce*/
      {
        v5 = IioTailFuncC97F(src, n4, v6, 234897928) | 0x40; /*0xffd118f6*/
        result = IioTailFuncC9C2(src, n4, v6, 234897928, v5); /*0xffd11902*/
      }
      else
      {
        v4 = IioTailFuncC97F(src, n4, 0, 218120712) | 0x40; /*0xffd118dd*/
        result = IioTailFuncC9C2(src, n4, 0, 218120712, v4); /*0xffd118e1*/
      }
    }
    v6 = ++n0x15; /*0xffd1190c*/
  }
  while ( n0x15 < 0x15u ); /*0xffd11913*/
  return result; /*0xffd11915*/
}

// Function: IioTailFunc191B @ 0xffd1191b (0x180 bytes)
// Index: 2379/2560

int __cdecl IioTailFunc191B(int src, int n4)
{
  __int16 n15; // di
  int v3; // esi
  int n4_1; // ebp

  n15 = 0; /*0xffd11930*/
  v3 = IioTailFuncC97F(src, n4, 1u, 302006576); /*0xffd11937*/
  if ( !*(_BYTE *)((unsigned __int8)n4 + src + 1187) ) /*0xffd1194d*/
  {
    if ( !IioTailFuncCB4B(src, n4, 1) ) /*0xffd11a70*/
      n15 = 15; /*0xffd11a7e*/
    n4_1 = n4; /*0xffd11a7f*/
    if ( !IioTailFuncCB4B(src, n4, 2) ) /*0xffd11a87*/
      n15 |= 0xF0u; /*0xffd11a93*/
    goto LABEL_23; /*0xffd11a99*/
  }
  if ( *(_BYTE *)((unsigned __int8)n4 + src + 1187) == 1 ) /*0xffd11956*/
  {
    if ( !IioTailFuncCB4B(src, n4, 1) ) /*0xffd11a22*/
      n15 = 255; /*0xffd11a2e*/
    n4_1 = n4; /*0xffd11a33*/
LABEL_23:
    if ( !IioTailFuncCB4B(src, n4_1, 3) ) /*0xffd11a3b*/
      n15 |= 0xF00u; /*0xffd11a47*/
    if ( !IioTailFuncCB4B(src, n4_1, 4) ) /*0xffd11a51*/
      n15 |= 0xF000u; /*0xffd11a61*/
    return IioTailFuncC9C2(src, n4_1, 1u, 302006576, v3 ^ (unsigned __int16)(n15 ^ v3)); /*0xffd11a67*/
  }
  if ( *(_BYTE *)((unsigned __int8)n4 + src + 1187) == 2 ) /*0xffd1195f*/
  {
    if ( !IioTailFuncCB4B(src, n4, 1) ) /*0xffd119f3*/
      n15 = 15; /*0xffd11a01*/
    n4_1 = n4; /*0xffd11a02*/
    if ( !IioTailFuncCB4B(src, n4, 2) ) /*0xffd11a0a*/
      n15 |= 0xF0u; /*0xffd11a16*/
  }
  else
  {
    if ( *(_BYTE *)((unsigned __int8)n4 + src + 1187) != 3 ) /*0xffd11968*/
    {
      if ( *(_BYTE *)((unsigned __int8)n4 + src + 1187) == 4 ) /*0xffd1196d*/
      {
        if ( !IioTailFuncCB4B(src, n4, 1) ) /*0xffd119ab*/
          n15 = -1; /*0xffd119b7*/
      }
      else
      {
        nullsub_5(); /*0xffd1197b*/
      }
      LOBYTE(n4_1) = n4; /*0xffd11983*/
      return IioTailFuncC9C2(src, n4_1, 1u, 302006576, v3 ^ (unsigned __int16)(n15 ^ v3)); /*0xffd11983*/
    }
    if ( !IioTailFuncCB4B(src, n4, 1) ) /*0xffd119c2*/
      n15 = 255; /*0xffd119ce*/
    n4_1 = n4; /*0xffd119d3*/
  }
  if ( !IioTailFuncCB4B(src, n4_1, 3) ) /*0xffd119db*/
    n15 |= 0xFF00u; /*0xffd119e7*/
  return IioTailFuncC9C2(src, n4_1, 1u, 302006576, v3 ^ (unsigned __int16)(n15 ^ v3)); /*0xffd119a2*/
}

// Function: IioTailFunc1A9B @ 0xffd11a9b (0x2f4 bytes)
// Index: 2380/2560

char __cdecl IioTailFunc1A9B(int src, int n4)
{
  int n6; // edx
  char v4; // cl
  int n4_1; // edi
  int v6; // eax
  int v7; // eax
  int v8; // eax
  int v9; // eax
  int v10; // eax
  int v11; // eax
  int v12; // eax
  int v13; // eax
  int v14; // eax
  int v15; // eax
  int v16; // eax
  int v17; // eax
  int v18; // eax
  char result; // al
  int v20; // eax
  int v21; // eax
  int v22; // eax
  int n6_1; // [esp+10h] [ebp-8h]
  unsigned __int8 n6_2; // [esp+14h] [ebp-4h]
  char n4a; // [esp+20h] [ebp+8h]

  n6 = 0; /*0xffd11aa2*/
  v4 = 0; /*0xffd11aaa*/
  n6_1 = 0; /*0xffd11aad*/
  n6_2 = 0; /*0xffd11ab1*/
  n4_1 = (unsigned __int8)n4; /*0xffd11ab5*/
  n4a = 0; /*0xffd11ab8*/
  do /*0xffd11b8f*/
  {
    if ( ((unsigned __int8)(1 << v4) & *(_BYTE *)(n4_1 + src + 6788)) != 0 ) /*0xffd11ac8*/
    {
      v6 = IioTailFuncC97F(src, n4, n6_2, 285230464); /*0xffd11ada*/
      IioTailFuncC9C2(src, n4, n6_2, 285230464, v6 & 0xFFFFFFF0 | 0xA); /*0xffd11aee*/
      v7 = IioTailFuncC97F(src, n4, n6_2, 285230468); /*0xffd11afb*/
      IioTailFuncC9C2(src, n4, n6_2, 285230468, v7 & 0xFFFF0FFF | 0xD000); /*0xffd11b13*/
      v8 = IioTailFuncC97F(src, n4, n6_2, 285230504); /*0xffd11b23*/
      IioTailFuncC9C2(src, n4, n6_2, 285230504, v8 & 0xFFFFFFFE); /*0xffd11b34*/
      if ( !*(_BYTE *)(src + 6723) && *(_BYTE *)(src + 6724) >= 6u ) /*0xffd11b4c*/
      {
        v9 = IioTailFuncC97F(src, n4, n6_2, 285230508); /*0xffd11b56*/
        IioTailFuncC9C2(src, n4, n6_2, 285230508, v9 & 0xF801FFFF | 0x800000); /*0xffd11b6e*/
      }
      n6 = n6_1; /*0xffd11b76*/
    }
    LOBYTE(n6) = n6 + 1; /*0xffd11b7a*/
    v4 = ++n4a; /*0xffd11b80*/
    n6_1 = n6; /*0xffd11b84*/
    n6_2 = n6; /*0xffd11b88*/
  }
  while ( (unsigned __int8)n6 < 6u ); /*0xffd11b8f*/
  if ( !*(_BYTE *)(n4_1 + src + 1187) ) /*0xffd11b95*/
  {
    v10 = IioTailFuncC97F(src, n4, 1u, 285230432); /*0xffd11ba9*/
    IioTailFuncC9C2(src, n4, 1u, 285230432, v10 | 0x2000); /*0xffd11bb9*/
    v11 = IioTailFuncC97F(src, n4, 1u, 285230468); /*0xffd11bc7*/
    IioTailFuncC9C2(src, n4, 1u, 285230468, v11 & 0xFFF0FFFF | 0xA0000); /*0xffd11be0*/
    v12 = IioTailFuncC97F(src, n4, 1u, 285230460); /*0xffd11bf1*/
    IioTailFuncC9C2(src, n4, 1u, 285230460, v12 & 0xFFF0FFFF | 0x80000); /*0xffd11c0a*/
  }
  if ( !*(_BYTE *)(n4_1 + src + 1191) ) /*0xffd11c12*/
  {
    v13 = IioTailFuncC97F(src, n4, 2u, 285230432); /*0xffd11c23*/
    IioTailFuncC9C2(src, n4, 2u, 285230432, v13 | 0x2000); /*0xffd11c36*/
    v14 = IioTailFuncC97F(src, n4, 2u, 285230468); /*0xffd11c43*/
    IioTailFuncC9C2(src, n4, 2u, 285230468, v14 & 0xFFF0FFFF | 0xA0000); /*0xffd11c5b*/
    v15 = IioTailFuncC97F(src, n4, 2u, 285230460); /*0xffd11c6b*/
    IioTailFuncC9C2(src, n4, 2u, 285230460, v15 & 0xFFF0FFFF | 0x80000); /*0xffd11c83*/
  }
  if ( !*(_BYTE *)(n4_1 + src + 1195) ) /*0xffd11c90*/
  {
    v16 = IioTailFuncC97F(src, n4, 3u, 285230432); /*0xffd11ca1*/
    IioTailFuncC9C2(src, n4, 3u, 285230432, v16 | 0x2000); /*0xffd11cb4*/
    v17 = IioTailFuncC97F(src, n4, 3u, 285230468); /*0xffd11cc1*/
    IioTailFuncC9C2(src, n4, 3u, 285230468, v17 & 0xFFF0FFFF | 0xA0000); /*0xffd11cd9*/
    v18 = IioTailFuncC97F(src, n4, 3u, 285230460); /*0xffd11ce9*/
    IioTailFuncC9C2(src, n4, 3u, 285230460, v18 & 0xFFF0FFFF | 0x80000); /*0xffd11d01*/
  }
  result = IioTailFuncCEF8(src, n4); /*0xffd11d0b*/
  if ( result ) /*0xffd11d14*/
  {
    if ( !*(_BYTE *)(n4_1 + src + 1199) ) /*0xffd11d16*/
    {
      v20 = IioTailFuncC97F(src, n4, 4u, 285230432); /*0xffd11d2c*/
      IioTailFuncC9C2(src, n4, 4u, 285230432, v20 | 0x2000); /*0xffd11d3b*/
      v21 = IioTailFuncC97F(src, n4, 4u, 285230468); /*0xffd11d47*/
      IioTailFuncC9C2(src, n4, 4u, 285230468, v21 & 0xFFF0FFFF | 0xA0000); /*0xffd11d5b*/
      v22 = IioTailFuncC97F(src, n4, 4u, 285230460); /*0xffd11d6c*/
      return IioTailFuncC9C2(src, n4, 4u, 285230460, v22 & 0xFFF0FFFF | 0x80000); /*0xffd11d80*/
    }
  }
  return result; /*0xffd11d88*/
}

// Function: IioTailX_FFD11D8F @ 0xffd11d8f (0xfb bytes)
// Index: 2381/2560

void __cdecl IioTailX_FFD11D8F(_BYTE *src, int n4)
{
  unsigned __int8 v3; // bl
  unsigned __int8 v4; // bh
  int v5; // eax
  int v6; // eax
  int v7; // [esp-20h] [ebp-28h]
  int v8; // [esp-20h] [ebp-28h]
  unsigned __int8 v9; // [esp+4h] [ebp-4h]
  char srca; // [esp+Ch] [ebp+4h]

  if ( src[4181] )
  {
    v3 = IioTailFuncCEF8((int)src, n4) ? 16 : 12;
    v4 = 0; /*0xffd11dbd*/
    srca = 0; /*0xffd11dc0*/
    do /*0xffd11e7e*/
    {
      if ( IioTailFuncCEB0((int)src, n4, srca) != 1 ) /*0xffd11dd4*/
      {
        v9 = src[8 * v4 + 7487]; /*0xffd11de4*/
        if ( v4 == v9 ) /*0xffd11dea*/
        {
          v5 = IioTailFuncC97F((int)src, n4, v9, 302009156); /*0xffd11dfc*/
          IioTailFuncC9C2((int)src, n4, v9, 302009156, v5 & 0xFFFFFEFF); /*0xffd11e0f*/
          v6 = IioTailFuncC97F((int)src, n4, v9, 302009152); /*0xffd11e1c*/
          IioTailFuncC9C2((int)src, n4, v9, 302009152, v6 | 0x200000A0); /*0xffd11e2f*/
          if ( v4 ) /*0xffd11e39*/
          {
            v8 = IioTailFuncC97F((int)src, n4, v9, 302009152) | 0x18000001; /*0xffd11e65*/
            IioTailFuncC9C2((int)src, n4, v9, 302009152, v8); /*0xffd11e6e*/
          }
          else
          {
            v7 = IioTailFuncC97F((int)src, n4, v9, 302074688) | 1; /*0xffd11e4b*/
            IioTailFuncC9C2((int)src, n4, v9, 302074688, v7); /*0xffd11e51*/
          }
        }
      }
      srca = ++v4; /*0xffd11e78*/
    }
    while ( v4 < v3 ); /*0xffd11e7e*/
  }
}

// Function: IioTailX_FFD11E8A @ 0xffd11e8a (0x1f0 bytes)
// Index: 2382/2560

char __cdecl IioTailX_FFD11E8A(int src, unsigned __int8 n4)
{
  unsigned __int8 n4_1; // dl
  unsigned __int8 n6; // bl
  int n4_2; // ebp
  int v5; // eax
  unsigned __int8 n4_4; // si
  int v7; // eax
  int v8; // eax
  unsigned __int8 n5; // bh
  unsigned __int8 n5_2; // al
  bool v11; // al
  int v12; // esi
  int v13; // eax
  unsigned int v15; // [esp-4h] [ebp-2Ch]
  unsigned __int8 v16; // [esp+13h] [ebp-15h]
  unsigned __int8 n5_1; // [esp+14h] [ebp-14h]
  unsigned __int8 n4_3; // [esp+18h] [ebp-10h]
  unsigned __int8 v19; // [esp+20h] [ebp-8h]

  n4_1 = n4; /*0xffd11e8d*/
  n6 = 0; /*0xffd11e94*/
  n4_2 = n4; /*0xffd11e96*/
  n4_3 = 0; /*0xffd11e9e*/
  do /*0xffd1206c*/
  {
    v5 = 1 << n6; /*0xffd11eb0*/
    if ( ((unsigned __int8)(1 << n6) & *(_BYTE *)(src + n4_2 + 6788)) != 0 ) /*0xffd11eb9*/
    {
      n4_4 = n4_3; /*0xffd11ebf*/
      v7 = IioTailFuncC97F(src, n4_1, n4_3, 285229504); /*0xffd11ecb*/
      IioTailFuncC9C2(src, n4, n4_3, 285229504, v7 & 0xFFB8BDFF | 0x30000); /*0xffd11ee7*/
      v8 = IioTailFuncC97F(src, n4, n4_3, 285229508); /*0xffd11ef4*/
      IioTailFuncC9C2(src, n4, n4_3, 285229508, v8 | 0x20000); /*0xffd11f07*/
      LOBYTE(v5) = IioTailFuncCE3C(n4_3); /*0xffd11f10*/
      v16 = v5; /*0xffd11f15*/
      if ( (_BYTE)v5 ) /*0xffd11f21*/
      {
        n5 = 5; /*0xffd11f27*/
        do /*0xffd11f29*/
        {
          if ( n6 ) /*0xffd11f2b*/
          {
            switch ( n6 ) /*0xffd11f36*/
            {
              case 1u: /*0xffd11f36*/
                n5_2 = n5 - 4; /*0xffd11f3a*/
                break;
              case 2u: /*0xffd11f36*/
                n5_1 = n5; /*0xffd11f43*/
                v11 = IioTailFuncD055(src, n4, n5); /*0xffd11f47*/
                goto LABEL_17; /*0xffd11f47*/
              case 3u: /*0xffd11f36*/
                n5_2 = n5 + 4; /*0xffd11f50*/
                break;
              case 4u: /*0xffd11f36*/
                n5_2 = n5 + 8; /*0xffd11f5b*/
                break;
              default:
                n5_2 = n5 + 12; /*0xffd11f66*/
                break;
            }
          }
          else
          {
            n5_2 = n5 - 5; /*0xffd11f2f*/
          }
          n5_1 = n5_2; /*0xffd11f68*/
          v11 = IioTailFuncD055(src, n4, n5_2); /*0xffd11f72*/
LABEL_17:
          if ( v11 && IioTailFuncCEB0(src, n4, n5_1) != 1 ) /*0xffd11f92*/
          {
            v12 = IioTailFuncC97F(src, n4, n4_4, 285229504) | 4; /*0xffd11fa7*/
            IioTailFuncC9C2(src, n4, n4_3, 285229504, v12); /*0xffd11fb6*/
            v19 = IioTailFuncC97F(src, n4, n5_1, 234885148) & 0xF3; /*0xffd11fcd*/
            IioTailFuncC9E4(src, n4, n5_1, 234885148, v19); /*0xffd11fe0*/
            v15 = v12 & 0xFFFFFFFB; /*0xffd11feb*/
            n4_4 = n4_3; /*0xffd11fec*/
            IioTailFuncC9C2(src, n4, n4_3, 285229504, v15); /*0xffd11ff8*/
            if ( !*(_BYTE *)(src + 6723) && *(_BYTE *)(src + 6724) < 3u && *(_BYTE *)(n6 + 3 * (n4 + 1530) + src) ) /*0xffd12022*/
            {
              v13 = IioTailFuncC97F(src, n4, n4_3, 285229508); /*0xffd12030*/
              IioTailFuncC9C2(src, n4, n4_3, 285229508, v13 | 0x10000); /*0xffd12043*/
            }
          }
          LOBYTE(v5) = ++n5 - 5; /*0xffd1204f*/
        }
        while ( (unsigned __int8)(n5 - 5) < v16 ); /*0xffd11f29*/
      }
      n4_2 = n4; /*0xffd1205b*/
      n4_1 = n4; /*0xffd1205f*/
    }
    n4_3 = ++n6; /*0xffd12065*/
  }
  while ( n6 < 6u ); /*0xffd1206c*/
  return v5; /*0xffd12072*/
}

// Function: IioTailX_FFD1207A @ 0xffd1207a (0x14c bytes)
// Index: 2383/2560

int __cdecl IioTailX_FFD1207A(_BYTE *src, unsigned __int8 n4)
{
  _BYTE *srca_1; // edx
  int v4; // eax
  int n4_1; // edi
  char v6; // bp
  int result; // eax
  int v8; // eax
  int v9; // eax
  int v10; // eax
  int v11; // eax
  unsigned __int8 srca_2; // [esp+10h] [ebp-4h]
  _BYTE *srca; // [esp+18h] [ebp+4h]

  srca_1 = 0; /*0xffd12080*/
  srca = 0; /*0xffd12089*/
  if ( !src[6723] ) /*0xffd1208d*/
  {
    v4 = IioTailFuncC97F((int)src, n4, 0, 318784020); /*0xffd1209e*/
    IioTailFuncC9C2((int)src, n4, 0, 318784020, v4 | 7); /*0xffd120ac*/
    srca_1 = 0; /*0xffd120b4*/
  }
  n4_1 = n4; /*0xffd120b6*/
  v6 = 0; /*0xffd120b9*/
  srca_2 = 0; /*0xffd120bb*/
  do /*0xffd121ba*/
  {
    result = 1 << v6; /*0xffd120c8*/
    if ( ((unsigned __int8)(1 << v6) & src[n4_1 + 6788]) != 0 ) /*0xffd120d1*/
    {
      v8 = IioTailFuncC97F((int)src, n4, srca_2, 302137628) | 8; /*0xffd120eb*/
      if ( !src[6723] && src[6724] >= 6u ) /*0xffd120fe*/
        v8 |= 0x8000u; /*0xffd12100*/
      IioTailFuncC9C2((int)src, n4, srca_2, 302137628, v8); /*0xffd1210e*/
      if ( !src[6723] ) /*0xffd12116*/
      {
        v9 = IioTailFuncC97F((int)src, n4, srca_2, 302269200); /*0xffd12127*/
        IioTailFuncC9C2((int)src, n4, srca_2, 302269200, v9 ^ ((unsigned __int8)v9 ^ src[1221]) & 0xF); /*0xffd12143*/
      }
      v10 = IioTailFuncC97F((int)src, n4, srca_2, 302138936); /*0xffd12153*/
      result = IioTailFuncC9C2((int)src, n4, srca_2, 302138936, v10 & 0xFFFFFFFC | 2); /*0xffd12167*/
      if ( !src[6723] && src[6724] < 3u ) /*0xffd1217f*/
      {
        v11 = IioTailFuncC97F((int)src, n4, srca_2, 285230408); /*0xffd12189*/
        result = IioTailFuncC9C2((int)src, n4, srca_2, 285230408, v11 & 0xFFFF00FF); /*0xffd1219c*/
      }
      srca_1 = srca; /*0xffd121a4*/
      n4_1 = n4; /*0xffd121a8*/
    }
    LOBYTE(srca_1) = (_BYTE)srca_1 + 1; /*0xffd121ac*/
    ++v6; /*0xffd121ae*/
    srca = srca_1; /*0xffd121af*/
    srca_2 = (unsigned __int8)srca_1; /*0xffd121b3*/
  }
  while ( (unsigned __int8)srca_1 < 6u ); /*0xffd121ba*/
  return result; /*0xffd121c0*/
}

// Function: IioTailX_FFD121C6 @ 0xffd121c6 (0x31d bytes)
// Index: 2384/2560

unsigned __int8 __cdecl IioTailX_FFD121C6(_BYTE *src, unsigned __int8 n4)
{
  _BYTE *v2; // ebp
  int v3; // eax
  unsigned __int8 n4a_1; // al
  int v5; // eax
  int v6; // eax
  int v7; // eax
  int v8; // eax
  int v9; // eax
  int v10; // eax
  int v11; // eax
  int v12; // eax
  int v13; // eax
  int v14; // eax
  int v15; // eax
  int v16; // eax
  int v17; // eax
  unsigned __int8 n4b_1; // al
  unsigned int v19; // [esp-14h] [ebp-28h]
  unsigned int v20; // [esp-14h] [ebp-28h]
  unsigned __int8 n4a; // [esp+10h] [ebp-4h]
  unsigned __int8 n4b; // [esp+10h] [ebp-4h]

  n4a = 0; /*0xffd121d3*/
  v2 = src + 7487; /*0xffd121d8*/
  do /*0xffd1225f*/
  {
    if ( !IioTailFuncD055((int)src, n4, n4a) ) /*0xffd121ef*/
      goto LABEL_7; /*0xffd121ef*/
    v3 = IioTailFuncC97F((int)src, n4, n4a, 302007332); /*0xffd121f9*/
    IioTailFuncC9C2((int)src, n4, n4a, 302007332, v3 & 0xFFFFFFC3); /*0xffd1220a*/
    n4a_1 = n4a; /*0xffd1220f*/
    if ( !src[6723] && src[6724] >= 6u && *v2 == n4a ) /*0xffd1222b*/
    {
      v5 = IioTailFuncC97F((int)src, n4, n4a, 302009104); /*0xffd12235*/
      IioTailFuncC9C2((int)src, n4, n4a, 302009104, v5 | 0x8000); /*0xffd12248*/
LABEL_7:
      n4a_1 = n4a; /*0xffd12250*/
    }
    v2 += 8; /*0xffd12254*/
    n4a = n4a_1 + 1; /*0xffd12259*/
  }
  while ( (unsigned __int8)(n4a_1 + 1) < 0x15u ); /*0xffd1225f*/
  n4b = 0; /*0xffd12265*/
  do /*0xffd124d7*/
  {
    if ( ((unsigned __int8)(1 << n4b) & src[n4 + 6788]) != 0 ) /*0xffd1227d*/
    {
      if ( src[4180] ) /*0xffd12283*/
      {
        v6 = IioTailFuncC97F((int)src, n4, n4b, 285360900); /*0xffd12298*/
        IioTailFuncC9C2((int)src, n4, n4b, 285360900, v6 & 0xFFFFFF3F); /*0xffd122ab*/
        v7 = IioTailFuncC97F((int)src, n4, n4b, 285360780); /*0xffd122b8*/
        IioTailFuncC9C2((int)src, n4, n4b, 285360780, v7 | 0x3030063); /*0xffd122cb*/
      }
      if ( src[4180] == 1 ) /*0xffd122da*/
      {
        v8 = IioTailFuncC97F((int)src, n4, n4b, 285360652); /*0xffd122e8*/
        IioTailFuncC9C2((int)src, n4, n4b, 285360652, v8 | 0x1F); /*0xffd122f9*/
        v9 = IioTailFuncC97F((int)src, n4, n4b, 285360640); /*0xffd12306*/
        IioTailFuncC9C2((int)src, n4, n4b, 285360640, v9 & 0xFFFFFC00 | 0x2AA); /*0xffd1231e*/
        v10 = IioTailFuncC97F((int)src, n4, n4b, 302269200); /*0xffd1232e*/
        IioTailFuncC9C2((int)src, n4, n4b, 302269200, v10 | 0x40000000); /*0xffd12341*/
        v11 = IioTailFuncC97F((int)src, n4, n4b, 302269204); /*0xffd1234e*/
        IioTailFuncC9C2((int)src, n4, n4b, 302269204, v11 & 0xCFFFFFFF); /*0xffd12361*/
        v12 = IioTailFuncC97F((int)src, n4, n4b, 285360780); /*0xffd12371*/
        IioTailFuncC9C2((int)src, n4, n4b, 285360780, v12 & 0xC000C000 | 0x3CFF3F9F); /*0xffd12389*/
        v13 = IioTailFuncC97F((int)src, n4, n4b, 285360784); /*0xffd12396*/
        IioTailFuncC9C2((int)src, n4, n4b, 285360784, v13 & 0xF0000000 | 0xAA08AAA); /*0xffd123ae*/
        v14 = IioTailFuncC97F((int)src, n4, n4b, 285360788); /*0xffd123be*/
        IioTailFuncC9C2((int)src, n4, n4b, 285360788, v14 & 0xF0000000 | 0xAA882AA); /*0xffd123d6*/
      }
      if ( !src[6723] && src[6724] < 3u ) /*0xffd123ee*/
      {
        if ( IioTailFuncCBE3((int)src, n4, n4b) ) /*0xffd123f3*/
        {
          v15 = IioTailFuncC97F((int)src, n4, n4b, 285230432); /*0xffd12407*/
          IioTailFuncC9C2((int)src, n4, n4b, 285230432, v15 | 0x800); /*0xffd1241a*/
        }
        v16 = IioTailFuncC97F((int)src, n4, n4b, 302139124); /*0xffd1242a*/
        IioTailFuncC9C2((int)src, n4, n4b, 302139124, v16 & 0xF0000080 | 0x4040379); /*0xffd12442*/
      }
      v17 = IioTailFuncC97F((int)src, n4, n4b, 302139096); /*0xffd12452*/
      IioTailFuncC9C2((int)src, n4, n4b, 302139096, v17 | 1); /*0xffd12463*/
      if ( !src[6723] && src[6724] == 5 ) /*0xffd1247b*/
      {
        if ( n4b ) /*0xffd12482*/
        {
          v20 = IioTailFuncC97F((int)src, n4, n4b, 302139156) & 0xFFFFE000 | 0x1004; /*0xffd124ba*/
          IioTailFuncC9C2((int)src, n4, n4b, 302139156, v20); /*0xffd124c3*/
        }
        else
        {
          v19 = IioTailFuncC97F((int)src, n4, 0, 302204692) & 0xFFFFE000 | 0x1004; /*0xffd1249d*/
          IioTailFuncC9C2((int)src, n4, 0, 302204692, v19); /*0xffd124a1*/
        }
      }
    }
    n4b_1 = n4b + 1; /*0xffd124cf*/
    n4b = n4b_1; /*0xffd124d1*/
  }
  while ( n4b_1 < 6u ); /*0xffd124d7*/
  return n4b_1; /*0xffd124dd*/
}

// Function: IioTailX_FFD124E3 @ 0xffd124e3 (0x1a bytes)
// Index: 2385/2560

int __cdecl IioTailX_FFD124E3(int src, int n4)
{
  int src_1; // eax

  src_1 = src; /*0xffd124e3*/
  if ( *(_BYTE *)(src + 6724) < 6u ) /*0xffd124ee*/
    return IioTailFunc191B(src, n4); /*0xffd124f5*/
  return src_1; /*0xffd124fc*/
}

// Function: IioTailX_FFD124FD @ 0xffd124fd (0x158 bytes)
// Index: 2386/2560

void __cdecl IioTailX_FFD124FD(_BYTE *src, unsigned __int8 n4)
{
  unsigned __int8 n4_1; // cl
  unsigned __int8 n0x15; // bl
  bool v4; // al
  int v5; // edi
  unsigned __int8 v6; // bh
  unsigned __int8 v7; // al
  int v8; // ebp
  unsigned int n3; // ecx
  unsigned __int8 v10; // bh
  unsigned int v11; // ebp
  unsigned int n3_1; // [esp+10h] [ebp-10h]
  char v13; // [esp+14h] [ebp-Ch]
  unsigned __int16 v14; // [esp+18h] [ebp-8h]
  unsigned __int16 v15; // [esp+1Ch] [ebp-4h]

  n4_1 = n4; /*0xffd12500*/
  n0x15 = 0; /*0xffd1250b*/
  v13 = 0; /*0xffd1250e*/
  while ( 1 ) /*0xffd12519*/
  {
    v4 = IioTailFuncD055((int)src, n4_1, v13); /*0xffd12519*/
    n4_1 = n4; /*0xffd1251e*/
    if ( !v4 ) /*0xffd12527*/
      goto LABEL_12; /*0xffd12527*/
    v5 = 21 * n4; /*0xffd12530*/
    if ( src[n0x15 + 3842 + v5] == 1 ) /*0xffd12545*/
      goto LABEL_12; /*0xffd12545*/
    v6 = src[8 * n0x15 + 7487]; /*0xffd1254b*/
    if ( src[n0x15 + 1406 + v5] == 1 ) /*0xffd1255d*/
      goto LABEL_12; /*0xffd1255d*/
    if ( IioTailFuncCEB0((int)src, n4, v13) != 1 ) /*0xffd12574*/
      break; /*0xffd12574*/
    v14 = IioTailFuncC97F((int)src, n4, v13, 218112432) & 0xFFBF; /*0xffd1258b*/
    IioTailFuncC99E((int)src, n4, v13, 218112432, v14); /*0xffd1259c*/
LABEL_11:
    n4_1 = n4; /*0xffd12625*/
LABEL_12:
    v13 = ++n0x15; /*0xffd1262b*/
    if ( n0x15 >= 0x15u ) /*0xffd12632*/
      return; /*0xffd12632*/
  }
  v7 = IioTailFuncCA56((int)src, n4, v13); /*0xffd125a9*/
  v8 = v6; /*0xffd125b5*/
  n3 = n0x15 - v6; /*0xffd125ba*/
  if ( n3 <= 3 ) /*0xffd125bf*/
  {
    v10 = 0; /*0xffd125c4*/
    v11 = (unsigned int)dword_FFD5CF94[n0x15 + 4 * v7 - v8] >> 2; /*0xffd125d4*/
    if ( v11 ) /*0xffd125d9*/
    {
      LOBYTE(n3) = n0x15; /*0xffd125db*/
      n3_1 = n3; /*0xffd125dd*/
      do /*0xffd12623*/
      {
        v15 = IioTailFuncC97F((int)src, n4, n3, 234889376) & 0xFFBF; /*0xffd125f6*/
        IioTailFuncC99E((int)src, n4, n3_1, 234889376, v15); /*0xffd1260a*/
        n3 = n3_1; /*0xffd1260f*/
        ++v10; /*0xffd12616*/
        LOBYTE(n3) = n3_1 + 1; /*0xffd12618*/
        n3_1 = n3; /*0xffd1261d*/
      }
      while ( v10 < v11 ); /*0xffd12623*/
    }
    goto LABEL_11; /*0xffd12623*/
  }
  nullsub_5(); /*0xffd12645*/
}

// Function: IioTailFunc2655 @ 0xffd12655 (0x37b bytes)
// Index: 2387/2560

unsigned __int8 __cdecl IioTailFunc2655(_BYTE *src, int n4)
{
  _BYTE *v2; // esi
  int v3; // eax
  int v4; // eax
  int v5; // eax
  int v6; // eax
  int v7; // esi
  int v8; // eax
  int v9; // eax
  int v10; // eax
  int v11; // eax
  int v12; // eax
  int v13; // eax
  int v14; // eax
  int v15; // eax
  unsigned __int8 n0xD_1; // al
  unsigned __int8 n0xD; // [esp+10h] [ebp-10h]
  int v18; // [esp+14h] [ebp-Ch]
  _BYTE *v19; // [esp+18h] [ebp-8h]
  unsigned __int16 v20; // [esp+1Ch] [ebp-4h]

  IioTailFunc1A9B((int)src, n4); /*0xffd12666*/
  IioTailX_FFD121C6(src, n4); /*0xffd1266d*/
  IioTailX_FFD1207A(src, n4); /*0xffd12674*/
  v2 = src + 7487; /*0xffd12679*/
  n0xD = 0; /*0xffd1267f*/
  v19 = src + 7487; /*0xffd12687*/
  v18 = 0; /*0xffd1268b*/
  do /*0xffd129c2*/
  {
    if ( IioTailFuncD055((int)src, n4, n0xD) ) /*0xffd12697*/
    {
      if ( *v2 == n0xD ) /*0xffd126ad*/
      {
        if ( n0xD != 0xFF ) /*0xffd126b5*/
        {
          v3 = IioTailFuncC97F((int)src, n4, n0xD, 302009124); /*0xffd126c0*/
          IioTailFuncC9C2((int)src, n4, n0xD, 302009124, v3 | 0x10000); /*0xffd126cf*/
        }
        v4 = IioTailFuncC97F((int)src, n4, n0xD, 302007424); /*0xffd126e0*/
        IioTailFuncC9C2((int)src, n4, n0xD, 302007424, v4 & 0xF7FFFBFF | 0x8000000); /*0xffd126f4*/
        v5 = IioTailFuncC97F((int)src, n4, n0xD, 302007480); /*0xffd12700*/
        IioTailFuncC9C2((int)src, n4, n0xD, 302007480, v5 & 0xBF87FFFF | 0x780000); /*0xffd12714*/
        v6 = IioTailFuncC97F((int)src, n4, n0xD, 302007284); /*0xffd12725*/
        IioTailFuncC9C2((int)src, n4, n0xD, 302007284, v6 & 0xFEFEFFFF); /*0xffd12734*/
        v7 = IioTailFuncC97F((int)src, n4, n0xD, 302009092) | 0x40000000; /*0xffd12748*/
        IioTailFuncC9C2((int)src, n4, n0xD, 302009092, v7); /*0xffd12757*/
        if ( !IioTailFuncCEB0((int)src, n4, n0xD) && !src[6723] ) /*0xffd1276e*/
        {
          v7 &= ~0x1000u; /*0xffd1277e*/
          v8 = IioTailFuncC97F((int)src, n4, n0xD, 302009108); /*0xffd12784*/
          IioTailFuncC9C2((int)src, n4, n0xD, 302009108, v8 & 0xFFFFFF00 | 4); /*0xffd1279a*/
        }
        IioTailFuncC9C2((int)src, n4, n0xD, 302009092, v7); /*0xffd127ab*/
        v9 = IioTailFuncC97F((int)src, n4, n0xD, 302007416); /*0xffd127b9*/
        IioTailFuncC9C2((int)src, n4, n0xD, 302007416, v9 & 0xFFFC0000 | 0x1FFFF); /*0xffd127cd*/
        if ( n0xD ) /*0xffd127da*/
        {
          v10 = IioTailFuncC97F((int)src, n4, n0xD, 302007396); /*0xffd127e3*/
          IioTailFuncC9C2((int)src, n4, n0xD, 302007396, v10 & 0xFFFFE07F | 0x1400); /*0xffd127f7*/
          v11 = IioTailFuncC97F((int)src, n4, n0xD, 302009160); /*0xffd12805*/
          IioTailFuncC9C2((int)src, n4, n0xD, 302009160, v11 | 1); /*0xffd12812*/
        }
        v2 = v19; /*0xffd1281a*/
      }
      v12 = IioTailFuncC97F((int)src, n4, n0xD, 302006856); /*0xffd12826*/
      IioTailFuncC9C2((int)src, n4, n0xD, 302006856, v12 & 0xFFFFF07F | 0x200); /*0xffd1283e*/
      v20 = IioTailFuncC97F((int)src, n4, n0xD, 301999328) & 0xE0FF; /*0xffd12858*/
      IioTailFuncC99E((int)src, n4, n0xD, 301999328, v20); /*0xffd12869*/
      v13 = IioTailFuncC97F((int)src, n4, n0xD, 234898056); /*0xffd12879*/
      IioTailFuncC9C2((int)src, n4, n0xD, 234898056, v13 | 0x80000000); /*0xffd1288c*/
      IioTailFuncC9C2((int)src, n4, n0xD, 234897928, 512); /*0xffd1289e*/
      v14 = IioTailFuncC97F((int)src, n4, n0xD, 302007436); /*0xffd128ab*/
      IioTailFuncC9C2((int)src, n4, n0xD, 302007436, v14 & 0xFCFFFFFF | 0x2000000); /*0xffd128c6*/
      if ( !src[21 * (unsigned __int8)n4 + 7832 + v18] ) /*0xffd128d8*/
      {
        IioTailFuncC97F((int)src, n4, n0xD, 234885172); /*0xffd128ea*/
        IioTailFuncC9E4((int)src, n4, n0xD, 234885172, 0x40u); /*0xffd128f9*/
      }
      if ( n0xD && (n0xD < 0xDu || IioTailFuncCEF8((int)src, n4) && n0xD < 0x11u) ) /*0xffd1291f*/
      {
        IioTailFuncC97F((int)src, n4, n0xD, 302008448); /*0xffd12929*/
        IioTailFuncC9C2((int)src, n4, n0xD, 302008448, -2147418113); /*0xffd1293b*/
        IioTailFuncCA40((int)src, 1u); /*0xffd12943*/
        IioTailFuncC97F((int)src, n4, n0xD, 302008448); /*0xffd12950*/
        IioTailFuncC9C2((int)src, n4, n0xD, 302008448, 0); /*0xffd1295f*/
      }
      if ( !src[6723] && !IioTailFuncCEB0((int)src, n4, n0xD) && src[4181] == 1 ) /*0xffd12986*/
      {
        v15 = IioTailFuncC97F((int)src, n4, n0xD, 234898056); /*0xffd12990*/
        IioTailFuncC9C2((int)src, n4, n0xD, 234898056, v15 & 0x7FFFFFFE); /*0xffd129a3*/
      }
    }
    v2 += 8; /*0xffd129af*/
    n0xD_1 = n0xD + 1; /*0xffd129b2*/
    v19 = v2; /*0xffd129b4*/
    ++v18; /*0xffd129b8*/
    n0xD = n0xD_1; /*0xffd129bc*/
  }
  while ( n0xD_1 < 0x15u ); /*0xffd129c2*/
  return n0xD_1; /*0xffd129c8*/
}

// Function: IioTailFunc29D0 @ 0xffd129d0 (0x51 bytes)
// Index: 2388/2560

int __cdecl IioTailFunc29D0(_BYTE *src, int n4, int n3)
{
  if ( n3 ) /*0xffd129e1*/
  {
    if ( n3 == 3 ) /*0xffd129e6*/
    {
      IioTailX_FFD11E8A((int)src, n4); /*0xffd129f8*/
    }
    else if ( n3 == 8 ) /*0xffd129eb*/
    {
      IioTailX_FFD124E3((int)src, n4); /*0xffd129ef*/
    }
  }
  else
  {
    IioTailFunc18A2((int)src, n4); /*0xffd12a03*/
    IioTailFunc2655(src, n4); /*0xffd12a0a*/
  }
  return IioTailX_FFD16050((int)src, n4); /*0xffd12a1d*/
}

// Function: IioTailFunc2A21 @ 0xffd12a21 (0xb7 bytes)
// Index: 2389/2560

int __cdecl IioTailFunc2A21(int src, unsigned __int8 a2, unsigned __int8 n5)
{
  int n21; // eax
  unsigned __int8 n4; // bl
  unsigned __int16 *v5; // esi
  int v6; // esi
  int v7; // edi
  int v8; // [esp+10h] [ebp-8h]
  unsigned __int16 *v9; // [esp+14h] [ebp-4h]

  n21 = (unsigned __int8)IioTailFuncCA56(src, a2, n5); /*0xffd12a39*/
  n4 = 0; /*0xffd12a3f*/
  v5 = (unsigned __int16 *)((char *)&unk_FFD5CFE4 + 8 * (unsigned __int8)n21); /*0xffd12a41*/
  v9 = v5; /*0xffd12a48*/
  do /*0xffd12acb*/
  {
    v6 = *v5; /*0xffd12a4c*/
    if ( v6 ) /*0xffd12a51*/
    {
      v7 = IioTailFuncC97F(src, a2, n5, 302008004); /*0xffd12a68*/
      v8 = v6 & v7; /*0xffd12a7e*/
      n21 = IioTailFuncC97F(src, a2, n5 + n4, 302007472); /*0xffd12a82*/
      if ( (_BYTE)n21 == 21 ) /*0xffd12a8c*/
      {
        if ( v8 != v6 ) /*0xffd12a92*/
          n21 = IioTailFuncC9C2(src, a2, n5, 302008004, v6 | v7); /*0xffd12a97*/
      }
      else if ( v8 ) /*0xffd12a9e*/
      {
        n21 = IioTailFuncC9C2(src, a2, n5, 302008004, v7 & ~v6); /*0xffd12ab3*/
      }
    }
    ++n4; /*0xffd12abf*/
    v5 = ++v9; /*0xffd12ac1*/
  }
  while ( n4 < 4u ); /*0xffd12acb*/
  return n21; /*0xffd12ad1*/
}

// Function: IioTailFunc2AD8 @ 0xffd12ad8 (0xda bytes)
// Index: 2390/2560

void __cdecl IioTailFunc2AD8(int src)
{
  int src_1; // esi
  _BYTE *v2; // eax
  unsigned __int8 n4; // bl
  _BYTE *v4; // ebp
  int n13; // [esp+4h] [ebp-4h]

  src_1 = src; /*0xffd12ada*/
  n13 = 0; /*0xffd12ade*/
  if ( *(_BYTE *)(src + 4827) ) /*0xffd12ae6*/
  {
    nullsub_5(); /*0xffd12afe*/
    v2 = (_BYTE *)(src + 6776); /*0xffd12b13*/
    do /*0xffd12ba6*/
    {
      n4 = 0; /*0xffd12b1a*/
      v4 = v2; /*0xffd12b1c*/
      LOBYTE(src) = 0; /*0xffd12b1e*/
      do /*0xffd12b6b*/
      {
        if ( *v4 ) /*0xffd12b22*/
        {
          IioTailFunc2A21(src_1, src, 1u); /*0xffd12b30*/
          IioTailFunc2A21(src_1, src, 5u); /*0xffd12b39*/
          IioTailFunc2A21(src_1, src, 9u); /*0xffd12b42*/
          if ( IioTailFuncCEF8(src_1, src) ) /*0xffd12b49*/
            IioTailFunc2A21(src_1, src, 0xDu); /*0xffd12b59*/
        }
        ++n4; /*0xffd12b61*/
        ++v4; /*0xffd12b63*/
        LOBYTE(src) = n4; /*0xffd12b64*/
      }
      while ( n4 < 4u ); /*0xffd12b6b*/
      IioTailFuncCA40(src_1, 0x3E8u); /*0xffd12b73*/
      if ( (AutoGenFunc7FD(0x3FDu) & 1) != 0 ) /*0xffd12b87*/
        n13 = AutoGenFunc7FD(0x3F8u); /*0xffd12b97*/
      v2 = (_BYTE *)(src_1 + 6776); /*0xffd12ba0*/
    }
    while ( n13 != 13 ); /*0xffd12ba6*/
  }
}

// Function: IioDdrPhyStatusPoll @ 0xffd12bb2 (0x104 bytes)
// Index: 2391/2560

unsigned __int8 __cdecl IioDdrPhyStatusPoll(int src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  __int16 v5; // si
  int v6; // ebx
  unsigned __int8 n0x15a_1; // al
  int v9; // [esp+10h] [ebp-4h]
  unsigned __int16 srca; // [esp+18h] [ebp+4h]
  unsigned __int8 n0x15a; // [esp+20h] [ebp+Ch]

  v9 = n0x15 + 21 * n4; /*0xffd12be0*/
  nullsub_5(); /*0xffd12bf7*/
  v5 = IioTailFuncC97F(src, n4, n0x15, 234889384) & 0xFBFF; /*0xffd12c1b*/
  v6 = 0; /*0xffd12c1e*/
  while ( 1 ) /*0xffd12c30*/
  {
    n0x15a_1 = IioTailFuncC97F(src, n4, n0x15, 234889386); /*0xffd12c30*/
    n0x15a = n0x15a_1; /*0xffd12c38*/
    if ( (n0x15a_1 & 8) != 0 ) /*0xffd12c3f*/
      break; /*0xffd12c3f*/
    IioTailFuncCA40(src, 0x3E8u); /*0xffd12c47*/
    if ( (unsigned __int16)++v6 >= 0x32u ) /*0xffd12c53*/
    {
      n0x15a_1 = n0x15a; /*0xffd12c55*/
      break; /*0xffd12c55*/
    }
  }
  if ( *(_BYTE *)(v9 + src + 7832) == 3 || (n0x15a_1 & 0x40) == 0 ) /*0xffd12c6a*/
    srca = v5 | 0x3C0; /*0xffd12c89*/
  else
    srca = v5 & 0xFC3F | 0x1C0; /*0xffd12c7a*/
  IioTailFuncC99E(src, n4, n0x15, 234889384, srca); /*0xffd12c9d*/
  return IioTailFuncCA40(src, 0x2710u); /*0xffd12cb0*/
}

// Function: IioTailFunc2CB6 @ 0xffd12cb6 (0x80 bytes)
// Index: 2392/2560

int __cdecl IioTailFunc2CB6(int src, unsigned __int8 n4, __int16 n0x15)
{
  __int16 v3; // ax
  unsigned __int16 v4; // ax
  unsigned __int8 v5; // al

  v3 = IioTailFuncC97F(src, n4, n0x15, 234889368); /*0xffd12ccd*/
  if ( *(_BYTE *)((unsigned __int8)n0x15 + src + 21 * n4 + 4094) ) /*0xffd12ce3*/
    v4 = v3 | 8; /*0xffd12ced*/
  else
    v4 = v3 & 0xFFF7; /*0xffd12cf8*/
  IioTailFuncC99E(src, n4, n0x15, 234889368, v4); /*0xffd12d08*/
  v5 = IioTailFuncC97F(src, n4, n0x15, 234885181); /*0xffd12d18*/
  return IioTailFuncC9E4(src, n4, n0x15, 234885181, v5); /*0xffd12d31*/
}

// Function: IioTailFunc2D36 @ 0xffd12d36 (0x19c bytes)
// Index: 2393/2560

int __cdecl IioTailFunc2D36(int a1, _BYTE *src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  int v4; // esi
  unsigned int v5; // edi
  _BYTE *v6; // ecx
  int v7; // esi
  char n2; // al

  nullsub_5(); /*0xffd12d46*/
  v4 = IioTailFuncC97F((int)src, n4, n0x15, 234897800) & 0x727FEE43; /*0xffd12d76*/
  v5 = IioTailFuncC97F((int)src, n4, n0x15, 234897804) & 0xFFFEFFE0; /*0xffd12d7d*/
  if ( IioTailFuncCB25((int)src, n4, n0x15) ) /*0xffd12d83*/
    goto LABEL_6; /*0xffd12d8d*/
  if ( src[n0x15 + 7832] ) /*0xffd12d94*/
  {
    v4 |= 0x4000000u; /*0xffd12dbc*/
LABEL_6:
    v5 |= 0x20u; /*0xffd12dc2*/
    goto LABEL_7; /*0xffd12dc2*/
  }
  if ( src[21 * n4 + 2918 + n0x15] ) /*0xffd12daa*/
    v4 |= 0x4000000u; /*0xffd12db4*/
LABEL_7:
  v6 = &src[21 * n4]; /*0xffd12dc5*/
  if ( v6[n0x15 + 3002] ) /*0xffd12dd8*/
    v5 |= 8u; /*0xffd12de2*/
  if ( v6[n0x15 + 3086] ) /*0xffd12de5*/
    v5 |= 4u; /*0xffd12def*/
  if ( v6[n0x15 + 3170] ) /*0xffd12df2*/
    v5 |= 2u; /*0xffd12dfc*/
  if ( v6[n0x15 + 3254] ) /*0xffd12dff*/
    v5 |= 1u; /*0xffd12e09*/
  if ( !src[6723] ) /*0xffd12e0c*/
    v4 |= 0x80000000; /*0xffd12e15*/
  if ( v6[n0x15 + 3506] ) /*0xffd12e1b*/
    v4 |= 0x1000000u; /*0xffd12e25*/
  if ( v6[n0x15 + 3590] ) /*0xffd12e2b*/
    v7 = v4 & 0xFFFFFFBF; /*0xffd12e4f*/
  else
    v7 = v4 ^ ((unsigned __int16)v4 ^ ((unsigned __int8)src[4816] << 7)) & 0x180 | 0x40; /*0xffd12e4b*/
  n2 = src[4813]; /*0xffd12e52*/
  if ( n2 == 1 || n2 == 2 && v6[n0x15 + 3674] ) /*0xffd12e60*/
    v7 |= 8u; /*0xffd12e6a*/
  if ( v6[n0x15 + 3758] ) /*0xffd12e6d*/
    v7 |= 4u; /*0xffd12e7b*/
  if ( v6[n0x15 + 6638] ) /*0xffd12e7e*/
    v7 |= 2u; /*0xffd12e88*/
  if ( v6[n0x15 + 935] && v6[n0x15 + 515] ) /*0xffd12e95*/
    v7 |= 0x200u; /*0xffd12e9f*/
  IioTailFuncC9C2((int)src, n4, n0x15, 234897800, v7); /*0xffd12eb1*/
  return IioTailFuncC9C2((int)src, n4, n0x15, 234897804, v5); /*0xffd12ecd*/
}

// Function: PciInit @ 0xffd12ed2 (0x38f bytes)
// Index: 2394/2560

int PciInit(
        int src,
        __int16 n4,
        unsigned __int8 n0x15,
        int a4,
        int n64,
        const char *Initialize_IIO[%x]_PCIE_PortIndex:%x..._n,
        ...)
{
  int v7; // esi
  int v8; // edi
  int v9; // esi
  unsigned int v10; // esi
  unsigned int v11; // esi
  int srca_1; // edx
  unsigned int v13; // edi
  int n2_1; // edx
  unsigned __int8 n4_1; // bp
  unsigned __int16 n4a_1; // si
  unsigned __int8 v17; // al
  int v18; // eax
  char v19; // al
  __int16 v20; // si
  unsigned __int16 n4c_1; // si
  __int16 v22; // si
  char v23; // al
  int n2; // [esp-4h] [ebp-18h]
  unsigned int v26; // [esp+10h] [ebp-4h]
  int srca; // [esp+18h] [ebp+4h]
  unsigned __int16 n4a; // [esp+1Ch] [ebp+8h]
  bool n4b; // [esp+1Ch] [ebp+8h]
  unsigned __int16 n4c; // [esp+1Ch] [ebp+8h]

  v7 = IioTailFuncC97F(src, n4, n0x15, 234897564); /*0xffd12ef8*/
  v8 = IioTailFuncC97F(src, n4, n0x15, 234897596); /*0xffd12f03*/
  v9 = (n0x15 << 24) | v7 & 0xFFFFFF; /*0xffd12f18*/
  if ( !IioTailFuncCB02(src, n4, n0x15) ) /*0xffd12f1a*/
    v9 ^= (v9 ^ (*(unsigned __int8 *)(n0x15 + 21 * (unsigned __int8)n4 + src + 1742) << 15)) & 0x38000; /*0xffd12f46*/
  if ( !*(_BYTE *)(src + 6723) ) /*0xffd12f48*/
    v9 ^= ((unsigned __int16)v9 /*0xffd12f6b*/
         ^ (unsigned __int16)(*(unsigned __int8 *)(n0x15 + 21 * (unsigned __int8)n4 + src + 1658) << 12))
        & 0x7000;
  v10 = v9 & 0xFFFFF3FF; /*0xffd12f71*/
  if ( IioTailFuncCB02(src, n4, n0x15) ) /*0xffd12f7a*/
    v11 = v10 & 0xFFFFF3FF; /*0xffd12f94*/
  else
    v11 = v10 & 0xFFFFF3FF | 0x800; /*0xffd12f8c*/
  srca_1 = n0x15 + 21 * (unsigned __int8)n4; /*0xffd12fa4*/
  srca = srca_1; /*0xffd12fa8*/
  if ( !*(_BYTE *)(srca_1 + src + 8000) ) /*0xffd12fac*/
    *(_BYTE *)(srca_1 + src + 8000) = *(_BYTE *)(srca_1 + src + 7916); /*0xffd12fbd*/
  v26 = v11 & 0xFFFFFC00 | (16 * (*(_BYTE *)(srca_1 + src + 8000) & 0x3F)); /*0xffd12fda*/
  switch ( *(_BYTE *)(srca_1 + src + 2582) ) /*0xffd12fde*/
  {
    case 0: /*0xffd12fde*/
      goto LABEL_15; /*0xffd12fde*/
    case 1: /*0xffd12fde*/
      v13 = v8 & 0xFFFFFF01 | 2; /*0xffd1300a*/
      n2_1 = 1; /*0xffd1300d*/
      goto LABEL_17; /*0xffd1300e*/
    case 2: /*0xffd12fde*/
      v13 = v8 & 0xFFFFFF01 | 6; /*0xffd12ffb*/
      n2 = 2; /*0xffd12ffe*/
      break;
    default:
LABEL_15:
      n2 = 3; /*0xffd13016*/
      v13 = v8 & 0xFFFFFF01 | 0xE; /*0xffd13018*/
      break;
  }
  n2_1 = n2; /*0xffd1301b*/
LABEL_17:
  IioTailFuncC9C2(src, n4, n0x15, 234897564, n2_1 | v26); /*0xffd1301c*/
  n4_1 = n4; /*0xffd13037*/
  IioTailFuncC9C2(src, n4, n0x15, 234897596, v13); /*0xffd1303d*/
  n4a_1 = IioTailFuncC97F(src, n4, n0x15, 234889408) & 0xFFAF; /*0xffd1305e*/
  n4a = n4a_1; /*0xffd13065*/
  v17 = *(_BYTE *)(srca + src + 2582); /*0xffd1306a*/
  if ( v17 ) /*0xffd13073*/
  {
    v18 = v17 - 1; /*0xffd13089*/
    if ( v18 ) /*0xffd1308c*/
    {
      if ( v18 == 1 ) /*0xffd13091*/
      {
        nullsub_5(); /*0xffd130be*/
        n4a_1 = n4a_1 & 0xFFF0 | 2; /*0xffd130d0*/
      }
      else
      {
        nullsub_5(); /*0xffd1309d*/
        n4a_1 = n4a_1 & 0xFFF0 | 3; /*0xffd130af*/
      }
    }
    else
    {
      nullsub_5(); /*0xffd130df*/
      n4a_1 = n4a_1 & 0xFFF0 | 1; /*0xffd130f1*/
    }
    n4a = n4a_1; /*0xffd130f4*/
  }
  else
  {
    v19 = IioTailFuncCC7E(src, n4_1, n0x15); /*0xffd130fe*/
    if ( (n4a_1 & 0xF) != v19 ) /*0xffd1310f*/
    {
      n4a_1 = n4a_1 & 0xFFF0 | v19 & 0xF; /*0xffd1311f*/
      n4a = n4a_1; /*0xffd13122*/
    }
    nullsub_5(); /*0xffd13139*/
  }
  if ( *(_BYTE *)(srca + src + 2666) ) /*0xffd1315c*/
  {
    n4a_1 |= 0x10u; /*0xffd13166*/
    n4a = n4a_1; /*0xffd13169*/
  }
  if ( *(_BYTE *)(srca + src + 2834) ) /*0xffd1316e*/
    n4a = n4a_1 | 0x40; /*0xffd1317b*/
  IioTailFuncC99E(src, n4_1, n0x15, 234889408, n4a); /*0xffd13190*/
  n4b = IioTailFuncCC57(src, n4_1, n0x15) == 0; /*0xffd131a6*/
  if ( *(_BYTE *)(srca + src + 1238) ) /*0xffd131ae*/
    n4b = 1; /*0xffd131b8*/
  v20 = IioTailFuncC97F(src, n4_1, n0x15, 234889376); /*0xffd131cd*/
  if ( n4b ) /*0xffd131d5*/
  {
    n4c_1 = v20 | 0x10; /*0xffd131da*/
  }
  else
  {
    v22 = v20 & 0xFFFC; /*0xffd131e5*/
    if ( IioTailFuncCB02(src, n4_1, n0x15) ) /*0xffd131ef*/
    {
      n4c_1 = v22 & 0xFFFC; /*0xffd13224*/
    }
    else
    {
      v23 = *(_BYTE *)(src + 1219); /*0xffd131fb*/
      if ( v23 == 1 ) /*0xffd13203*/
        v23 = IioTailFuncCC2D(src, n4_1, n0x15); /*0xffd13208*/
      n4c_1 = ((unsigned __int8)v22 ^ (unsigned __int8)v23) & 3 ^ v22; /*0xffd1321a*/
    }
  }
  n4c = n4c_1; /*0xffd1322b*/
  if ( *(_BYTE *)(srca + src + 1910) ) /*0xffd13230*/
    n4c = n4c_1 | 0x80; /*0xffd13242*/
  return IioTailFuncC99E(src, n4_1, n0x15, 234889376, n4c); /*0xffd1325b*/
}

// Function: DdrControllerCfgWrite @ 0xffd13261 (0x2c2 bytes)
// Index: 2395/2560

int __cdecl DdrControllerCfgWrite(_BYTE *src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  _BYTE *v3; // edi
  int v4; // eax
  unsigned int v5; // eax
  unsigned int v6; // eax
  int v7; // eax
  unsigned int v8; // esi
  unsigned __int8 v9; // cl
  int n6; // eax
  int v11; // eax
  int v12; // eax
  int v13; // eax
  int v14; // eax
  int v15; // eax
  int v16; // esi
  int v17; // eax
  int v18; // esi
  int v19; // edi
  int result; // eax
  int v21; // eax
  int v22; // [esp+10h] [ebp-Ch]
  __int16 v23; // [esp+14h] [ebp-8h]

  v23 = IioTailFuncC97F((int)src, n4, n0x15, 234889314); /*0xffd13281*/
  v3 = &src[21 * n4]; /*0xffd1329f*/
  v22 = (int)v3; /*0xffd132a1*/
  IioTailFuncC99E((int)src, n4, n0x15, 234889314, v23 & 0xFFFE | (v3[n0x15 + 1826] != 0)); /*0xffd132c6*/
  v4 = IioTailFuncC97F((int)src, n4, n0x15, 234897792); /*0xffd132d7*/
  if ( src[4811] ) /*0xffd132df*/
    v5 = v4 | 0x80; /*0xffd132e8*/
  else
    v5 = v4 & 0xFFFFFF7F; /*0xffd132ef*/
  if ( src[4806] ) /*0xffd132f4*/
    v6 = v5 | 4; /*0xffd132fd*/
  else
    v6 = v5 & 0xFFFFFFFB; /*0xffd13302*/
  if ( src[4807] ) /*0xffd13305*/
    v7 = v6 | 8; /*0xffd1330e*/
  else
    v7 = v6 & 0xFFFFFFF7; /*0xffd13313*/
  IioTailFuncC9C2((int)src, n4, n0x15, 234897792, v7); /*0xffd1331e*/
  v8 = IioTailFuncC97F((int)src, n4, n0x15, 234897796) & 0xFFFFF3FF | ((src[1217] & 1 | (2 * (src[1218] & 1))) << 10); /*0xffd13359*/
  if ( IioTailFuncD0FF((int)src, n4, n0x15) ) /*0xffd1335b*/
  {
    v9 = src[4252]; /*0xffd13367*/
    v8 ^= ((unsigned __int16)v8 ^ (unsigned __int16)(v9 << 9)) & 0x200; /*0xffd1337a*/
    if ( !v9 ) /*0xffd1337e*/
      v8 ^= ((unsigned __int16)v8 ^ (unsigned __int16)((unsigned __int8)src[4253] << 12)) & 0x1000; /*0xffd13391*/
  }
  if ( src[4808] ) /*0xffd13393*/
    v8 |= 8u; /*0xffd1339c*/
  LOBYTE(n6) = v3[n0x15 + 2246]; /*0xffd133a3*/
  if ( (_BYTE)n6 == 6 ) /*0xffd133ac*/
    n6 = (unsigned __int8)src[7474]; /*0xffd133b2*/
  else
    n6 = (unsigned __int8)n6; /*0xffd13490*/
  v11 = n6 - 1; /*0xffd133b9*/
  if ( !v11 || (v12 = v11 - 1) == 0 ) /*0xffd133c1*/
  {
LABEL_22:
    v8 = v8 & 0xFFFF9FFF | 0x2000; /*0xffd133da*/
    goto LABEL_23; /*0xffd133e0*/
  }
  v13 = v12 - 1; /*0xffd133c3*/
  if ( v13 ) /*0xffd133c6*/
  {
    v14 = v13 - 1; /*0xffd133cc*/
    if ( v14 ) /*0xffd133cf*/
    {
      if ( v14 != 1 ) /*0xffd133d8*/
        goto LABEL_23; /*0xffd133d8*/
      goto LABEL_22; /*0xffd133d8*/
    }
    v8 = v8 & 0xFFFF9FFF | 0x4000; /*0xffd1349e*/
  }
  else
  {
    v8 &= 0xFFFF9FFF; /*0xffd134a9*/
  }
LABEL_23:
  IioTailFuncC9C2((int)src, n4, n0x15, 234897796, v8); /*0xffd133e6*/
  v15 = IioTailFuncC97F((int)src, n4, n0x15, 234897780); /*0xffd13403*/
  if ( src[n4 + 1226] ) /*0xffd1340f*/
    v15 |= 1u; /*0xffd13419*/
  if ( src[n4 + 1230] ) /*0xffd1341c*/
    v15 |= 2u; /*0xffd13426*/
  if ( src[n4 + 1234] ) /*0xffd13429*/
    v15 |= 4u; /*0xffd13433*/
  IioTailFuncC9C2((int)src, n4, n0x15, 234897780, v15); /*0xffd1343e*/
  v16 = IioTailFuncC97F((int)src, n4, n0x15, 234897760) | 0xA0; /*0xffd13460*/
  v17 = IioTailFuncC97F((int)src, n4, n0x15, 234897748); /*0xffd13466*/
  if ( v3[n0x15 + 4010] ) /*0xffd13478*/
  {
    v18 = v16 | 0x140; /*0xffd13482*/
    v19 = v17 | 0x80000; /*0xffd13488*/
  }
  else
  {
    v18 = v16 & 0xFFFFFEBF; /*0xffd134b4*/
    v19 = v17 & 0xFFF7FFFF; /*0xffd134ba*/
  }
  IioTailFuncC9C2((int)src, n4, n0x15, 234897760, v18); /*0xffd134cc*/
  IioTailFuncC9C2((int)src, n4, n0x15, 234897748, v19); /*0xffd134dd*/
  result = v22; /*0xffd134e2*/
  if ( *(_BYTE *)(n0x15 + v22 + 7832) == 3 ) /*0xffd134f5*/
  {
    v21 = IioTailFuncC97F((int)src, n4, n0x15, 234897956); /*0xffd13503*/
    return IioTailFuncC9C2((int)src, n4, n0x15, 234897956, v21 | 0x40); /*0xffd13513*/
  }
  return result; /*0xffd1351b*/
}

// Function: IioTailX_FFD13523 @ 0xffd13523 (0x7f bytes)
// Index: 2396/2560

void __cdecl IioTailX_FFD13523(_BYTE *src, int n4, int n0x15)
{
  int v3; // ecx

  v3 = (unsigned __int8)n0x15 + 21 * (unsigned __int8)n4; /*0xffd1353a*/
  if ( !src[v3 + 4255] ) /*0xffd1353c*/
  {
    if ( src[v3 + 7916] ) /*0xffd13546*/
    {
      nullsub_5(); /*0xffd1355a*/
      PciInit( /*0xffd13564*/
        (int)src,
        n4,
        n0x15,
        (int)src,
        64,
        "Initialize IIO[%x] PCIE PortIndex:%x...\n",
        (unsigned __int8)n4,
        (unsigned __int8)n0x15);
      DdrPhyStatusCfgUpdate(src, n4, n0x15); /*0xffd1356e*/
    }
    else
    {
      nullsub_5(); /*0xffd13596*/
    }
  }
}

// Function: DxeInit_0 @ 0xffd135a2 (0x114 bytes)
// Index: 2397/2560

void __cdecl DxeInit_0(int i, _BYTE *src, unsigned __int8 n4, int n0x15)
{
  int v5; // eax
  int v6; // [esp-8h] [ebp-10h]
  unsigned __int8 src_3; // [esp+17h] [ebp+Fh]

  v5 = (unsigned __int8)n0x15 + 21 * n4; /*0xffd135b9*/
  if ( !src[v5 + 4255] ) /*0xffd135bb*/
  {
    if ( src[v5 + 7916] ) /*0xffd135c9*/
    {
      src_3 = src[v5 + 6924]; /*0xffd1360e*/
      HIBYTE(n0x15) = src[8 * (unsigned __int8)n0x15 + 7480]; /*0xffd1361f*/
      switch ( i ) /*0xffd13629*/
      {
        case 1: /*0xffd13629*/
          nullsub_5(); /*0xffd13681*/
          IioTailFunc2D36(1, src, n4, n0x15); /*0xffd1368e*/
          IioDdrPhyCfgRead(src, n4, n0x15); /*0xffd13696*/
          IioTailFunc2CB6((int)src, n4, n0x15); /*0xffd1369e*/
          IioDdrChCfgSelect(src, n4, n0x15); /*0xffd136a9*/
          break;
        case 2: /*0xffd13629*/
          DdrControllerCfgWrite(src, n4, n0x15); /*0xffd13664*/
          break;
        case 4: /*0xffd13629*/
          v6 = (unsigned __int8)src[8 * (unsigned __int8)n0x15 + 7481]; /*0xffd13639*/
          nullsub_5(); /*0xffd1364c*/
          DxeInit_2(src, n4, n0x15, src, 64, "PciPostInit Bus:%X Dev:%X Func%X...\n", src_3, HIBYTE(n0x15), v6); /*0xffd13657*/
          break;
      }
    }
    else if ( i == 1 ) /*0xffd135d7*/
    {
      nullsub_5(); /*0xffd135fa*/
    }
  }
}

// Function: IioTailX_FFD136B6 @ 0xffd136b6 (0x130 bytes)
// Index: 2398/2560

int __cdecl IioTailX_FFD136B6(_BYTE *src, unsigned __int8 n4)
{
  unsigned __int8 n4_1; // si
  unsigned __int8 n0x15; // bl
  int result; // eax
  int v5; // eax
  int v6; // eax
  unsigned __int8 v7; // [esp+13h] [ebp-15h]
  int v8; // [esp+14h] [ebp-14h]
  unsigned __int8 *v9; // [esp+18h] [ebp-10h]
  unsigned __int8 v10; // [esp+1Ch] [ebp-Ch]
  unsigned __int8 n0x15_1; // [esp+20h] [ebp-8h]
  unsigned __int8 v12; // [esp+24h] [ebp-4h]

  n4_1 = n4; /*0xffd136bc*/
  n0x15 = 0; /*0xffd136c0*/
  n0x15_1 = 0; /*0xffd136c7*/
  v8 = 0; /*0xffd136cb*/
  v9 = src + 7487; /*0xffd136d5*/
  do
  {
    result = IioTailFuncD055((int)src, n4_1, n0x15_1); /*0xffd136e0*/
    if ( (_BYTE)result )
    {
      nullsub_5(); /*0xffd13704*/
      v7 = src[21 * n4 + 1574 + v8] != 1 ? 0 : 3;
      if ( IioTailFuncCB25((int)src, n4, n0x15_1) ) /*0xffd13729*/
      {
        v10 = *v9; /*0xffd13741*/
        v5 = IioTailFuncC97F((int)src, n4, *v9, 251674852); /*0xffd1374e*/
        result = IioTailFuncC9C2((int)src, n4, v10, 251674852, v7 | v5 & 0xFFFFFFFC); /*0xffd13768*/
      }
      else
      {
        v6 = IioTailFuncC97F((int)src, n4, n0x15_1, 234897636); /*0xffd1377e*/
        IioTailFuncC9C2((int)src, n4, n0x15_1, 234897636, v7 | v6 & 0xFFFFFFFC); /*0xffd13795*/
        v12 = IioTailFuncC97F((int)src, n4, n0x15_1, 234885217); /*0xffd137ab*/
        result = IioTailFuncC9E4((int)src, n4, n0x15_1, 234885217, v12); /*0xffd137ba*/
      }
      n4_1 = n4; /*0xffd137c2*/
    }
    v9 += 8; /*0xffd137c6*/
    ++n0x15; /*0xffd137cb*/
    ++v8; /*0xffd137cd*/
    n0x15_1 = n0x15; /*0xffd137d1*/
  }
  while ( n0x15 < 0x15u );
  return result; /*0xffd137de*/
}

// Function: DxeInit_2 @ 0xffd137e6 (0x2f2 bytes)
// Index: 2399/2560

char DxeInit_2(
        _BYTE *src,
        unsigned __int8 n4,
        unsigned __int8 n0x15,
        _BYTE *a4,
        int n64,
        const char *PciPostInit_Bus:%X_Dev:%X_Func%X..._n,
        ...)
{
  int v6; // eax
  unsigned int n0x54; // ebp
  unsigned __int16 v8; // ax
  int v9; // eax
  int v10; // eax
  int v11; // eax
  unsigned __int16 v12; // ax
  int v13; // eax
  unsigned __int16 v14; // ax
  int v15; // eax
  int v16; // eax
  int v17; // eax
  unsigned __int16 v19; // [esp-18h] [ebp-30h]
  unsigned __int16 v20; // [esp-18h] [ebp-30h]
  unsigned int v21; // [esp+Ch] [ebp-Ch]
  unsigned __int16 v22; // [esp+Ch] [ebp-Ch]
  unsigned __int16 v23; // [esp+10h] [ebp-8h]
  unsigned __int8 v24; // [esp+10h] [ebp-8h]
  unsigned __int8 v25; // [esp+14h] [ebp-4h]

  LOBYTE(v6) = IioTailFuncCEB0((int)src, n4, n0x15); /*0xffd137fb*/
  if ( (_BYTE)v6 != 1 ) /*0xffd13805*/
  {
    v6 = 21 * n4; /*0xffd13810*/
    n0x54 = v6 + n0x15; /*0xffd1381b*/
    if ( src[n0x54 + 7008] != 6 && n0x54 < 0x54 ) /*0xffd1382f*/
    {
      v8 = IioTailFuncC97F((int)src, n4, n0x15, 234889220); /*0xffd1383e*/
      if ( src[4178] ) /*0xffd13846*/
        v8 |= 0x100u; /*0xffd13854*/
      if ( src[4179] ) /*0xffd13857*/
        v8 |= 0x40u; /*0xffd13860*/
      IioTailFuncC9C2((int)src, n4, n0x15, 234889220, v8); /*0xffd13870*/
      LOWORD(v21) = IioTailFuncC97F((int)src, n4, n0x15, 234889378); /*0xffd1388a*/
      v9 = IioTailFuncC97F((int)src, n4, n0x15, 234897572); /*0xffd1388f*/
      IioTailFuncC9C2((int)src, n4, n0x15, 234897572, v9); /*0xffd1389d*/
      v10 = IioTailFuncC97F((int)src, n4, n0x15, 234897564); /*0xffd138ad*/
      IioTailFuncC9C2((int)src, n4, n0x15, 234897564, v10); /*0xffd138bb*/
      v11 = IioTailFuncC97F((int)src, n4, n0x15, 234897800); /*0xffd138c8*/
      IioTailFuncC9C2((int)src, n4, n0x15, 234897800, v11); /*0xffd138d6*/
      v23 = IioTailFuncC97F((int)src, n4, n0x15, 234889362); /*0xffd138eb*/
      IioTailFuncC99E((int)src, n4, n0x15, 234889362, v23); /*0xffd138fc*/
      if ( (v21 & 0x2000) != 0 ) /*0xffd13916*/
        src[n0x54 + 8084] = (v21 >> 4) & 0x3F; /*0xffd1391e*/
      else
        src[n0x54 + 8084] = 0; /*0xffd13927*/
      src[n0x54 + 8168] = v21 & 0xF; /*0xffd13937*/
      v24 = IioTailFuncC97F((int)src, n4, n0x15, 234885128); /*0xffd13943*/
      IioTailFuncC9E4((int)src, n4, n0x15, 234885128, v24); /*0xffd13953*/
      if ( IioTailFuncCB25((int)src, n4, n0x15) ) /*0xffd1396b*/
      {
        v19 = IioTailFuncC97F((int)src, n4, src[8 * n0x15 + 7487], 251666476); /*0xffd1399b*/
        IioTailFuncC99E((int)src, n4, n0x15, 251666476, v19); /*0xffd139a4*/
      }
      else
      {
        v20 = IioTailFuncC97F((int)src, n4, n0x15, 234889284); /*0xffd139b8*/
        IioTailFuncC99E((int)src, n4, n0x15, 234889284, v20); /*0xffd139c4*/
      }
      v12 = IioTailFuncC97F((int)src, n4, n0x15, 234889286); /*0xffd139d4*/
      IioTailFuncC99E((int)src, n4, n0x15, 234889286, v12); /*0xffd139ea*/
      v25 = IioTailFuncC97F((int)src, n4, n0x15, 234885265); /*0xffd139ff*/
      IioTailFuncC9E4((int)src, n4, n0x15, 234885265, v25); /*0xffd13a0f*/
      v13 = IioTailFuncC97F((int)src, n4, n0x15, 234897740); /*0xffd13a1c*/
      IioTailFuncC9C2((int)src, n4, n0x15, 234897740, v13 | 0x100000); /*0xffd13a2f*/
      v14 = IioTailFuncC97F((int)src, n4, n0x15, 234889378) | 0xC000; /*0xffd13a4c*/
      v22 = v14; /*0xffd13a57*/
      if ( src[n0x54 + 3842] == 1 ) /*0xffd13a5c*/
        v22 = v14 & 0xEFFF; /*0xffd13a66*/
      IioTailFuncC99E((int)src, n4, n0x15, 234889378, v22); /*0xffd13a77*/
      v15 = IioTailFuncC97F((int)src, n4, n0x15, 234897920); /*0xffd13a85*/
      LOBYTE(v6) = IioTailFuncC9C2((int)src, n4, n0x15, 234897920, v15 | 1); /*0xffd13a92*/
      if ( !src[6723] ) /*0xffd13a9a*/
      {
        v16 = IioTailFuncC97F((int)src, n4, n0x15, 234897804); /*0xffd13aaa*/
        if ( src[4347] ) /*0xffd13ab2*/
          v17 = v16 & 0xFFFFFFDF; /*0xffd13abb*/
        else
          v17 = v16 | 0x20; /*0xffd13ac0*/
        LOBYTE(v6) = IioTailFuncC9C2((int)src, n4, n0x15, 234897804, v17); /*0xffd13ac8*/
      }
    }
  }
  return v6; /*0xffd13ad1*/
}

// Function: IioDdrPhyCfgRead @ 0xffd13ad8 (0x67 bytes)
// Index: 2400/2560

int __cdecl IioDdrPhyCfgRead(_BYTE *src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  int v3; // eax
  int v4; // eax

  if ( !IioTailFuncCB25((int)src, n4, n0x15) ) /*0xffd13aeb*/
  {
    v3 = IioTailFuncC97F((int)src, n4, n0x15, 234897556); /*0xffd13b00*/
    IioTailFuncC9C2((int)src, n4, n0x15, 234897556, v3 | 0x20); /*0xffd13b0d*/
  }
  v4 = IioTailFuncC97F((int)src, n4, n0x15, 234897588); /*0xffd13b1e*/
  return IioTailFuncC9C2((int)src, n4, n0x15, 234897588, v4 & 0xFFFFCFFF | 0x1000); /*0xffd13b3a*/
}

// Function: IioDdrChCfgSelect @ 0xffd13b3f (0x29 bytes)
// Index: 2401/2560

unsigned __int8 __cdecl IioDdrChCfgSelect(_BYTE *src, unsigned __int8 n4, unsigned __int8 n0x15)
{
  if ( (IioTailFuncC97F((int)src, n4, n0x15, 234897572) & 0x44) != 0 ) /*0xffd13b5a*/
    JUMPOUT(0xFFD13DDE); /*0xffd13dde*/
  return IioDdrPhyStatusPoll((int)src, n4, n0x15); /*0xffd13b5c*/
}

// Function: DdrPhyStatusCfgUpdate @ 0xffd13b68 (0x276 bytes)
// Index: 2402/2560

char __cdecl DdrPhyStatusCfgUpdate(_BYTE *src, int n4, int n0x15)
{
  int v3; // ebp
  char v4; // bl
  __int16 v5; // ax
  unsigned int v6; // esi
  int v7; // eax
  int v8; // eax
  char result; // al
  int v10; // eax
  int v11; // esi
  char v12; // al
  char v13; // dl
  int v14; // ecx
  unsigned int v15; // eax

  v3 = (unsigned __int8)n0x15 + 21 * (unsigned __int8)n4; /*0xffd13b8b*/
  v4 = src[v3 + 11]; /*0xffd13b8f*/
  v5 = IioTailFuncC97F((int)src, n4, n0x15, 234889362); /*0xffd13b93*/
  IioTailFuncC99E((int)src, n4, n0x15, 234889362, ((v4 != 0) << 8) | v5 & 0xFEFF); /*0xffd13bc2*/
  if ( !src[4812] ) /*0xffd13bca*/
  {
    src[v3 + 515] = 0; /*0xffd13bd3*/
    src[v3 + 851] = 0; /*0xffd13bdb*/
  }
  v6 = IioTailFuncC97F((int)src, n4, n0x15, 234897904) & 0xFFFFFF70; /*0xffd13bf8*/
  if ( src[4812] && src[v3 + 2330] ) /*0xffd13c07*/
  {
    v6 = src[v3 + 2414] & 1 | src[v3 + 2498] & 0xF | v6 & 0xFFFFFFF0 | 0x80; /*0xffd13c37*/
    v7 = IioTailFuncC97F((int)src, n4, 0, 67453168) | 1; /*0xffd13c42*/
    if ( (v7 & 8) == 0 ) /*0xffd13c4a*/
      v7 |= 8u; /*0xffd13c4c*/
    IioTailFuncC9C2((int)src, n4, 0, 67453168, v7); /*0xffd13c59*/
  }
  IioTailFuncC9C2((int)src, n4, n0x15, 234897904, v6); /*0xffd13c6d*/
  v8 = IioTailFuncC97F((int)src, n4, 0, 67453176); /*0xffd13c7c*/
  result = IioTailFuncC9C2((int)src, n4, 0, 67453176, v8 & 0xFFFFF000 | 0x1F3); /*0xffd13c91*/
  if ( src[4812] ) /*0xffd13c99*/
  {
    v10 = IioTailFuncC97F((int)src, n4, 0, 67453180); /*0xffd13caa*/
    result = IioTailFuncC9C2((int)src, n4, 0, 67453180, v10 | 1); /*0xffd13cb8*/
  }
  if ( src[v3 + 2330] ) /*0xffd13cc0*/
    result = IioTailFuncCA40((int)src, 0x1F4u); /*0xffd13cd0*/
  if ( !src[v3 + 1238] && src[v3 + 11] ) /*0xffd13ce5*/
  {
    v11 = (unsigned __int16)IioTailFuncC97F((int)src, n4, n0x15, 234897572); /*0xffd13d09*/
    v12 = IioTailFuncC97F((int)src, n4, n0x15, 234897804); /*0xffd13d0e*/
    v13 = v12; /*0xffd13d1e*/
    v14 = v11 | (*(unsigned __int16 *)&src[2 * v3 + 95] << 19); /*0xffd13d20*/
    if ( src[v3 + 263] && (v12 & 0x10) != 0 ) /*0xffd13d2f*/
      v14 |= 0x20000u; /*0xffd13d31*/
    v15 = v14 & 0xFFFE007F | (((unsigned __int8)src[v3 + 431] | ((src[v3 + 347] & 3) << 8)) << 7); /*0xffd13d58*/
    if ( src[v3 + 515] ) /*0xffd13d5a*/
      v15 |= 0x40u; /*0xffd13d64*/
    if ( src[v3 + 599] ) /*0xffd13d67*/
      v15 |= 0x20u; /*0xffd13d71*/
    if ( src[v3 + 683] ) /*0xffd13d74*/
      v15 |= 0x10u; /*0xffd13d7e*/
    if ( src[v3 + 767] && (v13 & 0x10) == 0 ) /*0xffd13d8e*/
      v15 |= 8u; /*0xffd13d90*/
    if ( src[v3 + 851] ) /*0xffd13d93*/
      v15 |= 4u; /*0xffd13d9d*/
    if ( src[v3 + 935] ) /*0xffd13da0*/
      v15 |= 2u; /*0xffd13daa*/
    if ( src[v3 + 1019] ) /*0xffd13dad*/
      v15 |= 1u; /*0xffd13db7*/
    IioTailFuncC9C2((int)src, n4, n0x15, 234897572, v15); /*0xffd13dc6*/
    return IioDdrChCfgSelect(src, n4, n0x15); /*0xffd13dd1*/
  }
  return result; /*0xffd13dd9*/
}

// Function: IioTailX_FFD140CB @ 0xffd140cb (0x2a2 bytes)
// Index: 2403/2560

int __cdecl IioTailX_FFD140CB(_BYTE *src, int n4)
{
  int n4_1; // esi
  unsigned __int8 n6; // dl
  int v4; // ecx
  int v5; // eax
  int v6; // eax
  unsigned __int8 v7; // si
  int v8; // eax
  int v9; // eax
  unsigned int v10; // eax
  int n0x15; // edx
  int result; // eax
  int n0x15_1; // ebp
  unsigned __int8 v14; // al
  int n302074688; // ebp
  int v16; // eax
  char n2; // al
  int v18; // eax
  int v19; // eax
  int n0x15_2; // [esp+10h] [ebp-10h]
  unsigned __int8 n6_1; // [esp+14h] [ebp-Ch]
  unsigned __int8 v22; // [esp+14h] [ebp-Ch]
  int v23; // [esp+18h] [ebp-8h]
  char n0x15_3; // [esp+1Ch] [ebp-4h]

  IioFunc5810(src, n4); /*0xffd140dc*/
  IioTailMrcOemHooksCall288((int)src, n4); /*0xffd140e3*/
  n4_1 = (unsigned __int8)n4; /*0xffd140ea*/
  n6 = 0; /*0xffd140ed*/
  n0x15_2 = 0; /*0xffd140ef*/
  v4 = 0; /*0xffd140f3*/
  n6_1 = 0; /*0xffd140f5*/
  v23 = 0; /*0xffd14100*/
  do /*0xffd14224*/
  {
    if ( ((unsigned __int8)(1 << v4) & src[n4_1 + 6788]) != 0 ) /*0xffd14112*/
    {
      if ( src[1220] && src[6726] != 6 && (_BYTE)n4 && n6 ) /*0xffd14134*/
      {
        v5 = IioTailFuncC97F((int)src, n4, n6_1, 285229508); /*0xffd1413e*/
        IioTailFuncC9C2((int)src, n4, n6_1, 285229508, v5 | 0x20); /*0xffd1414f*/
      }
      v6 = IioTailFuncC97F((int)src, n4, n6_1, 302138944); /*0xffd1415f*/
      IioTailFuncC9C2((int)src, n4, n6_1, 302138944, v6 | 3); /*0xffd14170*/
      v7 = src[6 * (unsigned __int8)n4 + 6852 + v23]; /*0xffd1418d*/
      v8 = IioTailFuncC7CE((int)src, n4, v7, 7, 0, 19272); /*0xffd14194*/
      IioTailFuncC8D3((int)src, n4, v7, 7, 0, 19272, v8 | 4); /*0xffd141a8*/
      v9 = IioTailFuncC97F((int)src, n4, n6_1, 302139064); /*0xffd141bc*/
      if ( src[4826] ) /*0xffd141c4*/
        v10 = v9 & 0x7FFFFFFF; /*0xffd141cd*/
      else
        v10 = v9 | 0x80000000; /*0xffd141d4*/
      if ( !src[6723] && src[6724] >= 6u ) /*0xffd141e9*/
        v10 = v10 & 0x8000000F | 0x80000; /*0xffd141f0*/
      IioTailFuncC9C2((int)src, n4, n6_1, 302139064, v10 | 0x100000); /*0xffd14202*/
      n6 = n6_1; /*0xffd14207*/
      v4 = v23; /*0xffd1420e*/
      n4_1 = (unsigned __int8)n4; /*0xffd14212*/
    }
    ++n6; /*0xffd14216*/
    ++v4; /*0xffd14218*/
    n6_1 = n6; /*0xffd14219*/
    v23 = v4; /*0xffd1421d*/
  }
  while ( n6 < 6u ); /*0xffd14224*/
  n0x15 = 0; /*0xffd1422a*/
  result = 21 * n4_1; /*0xffd1422c*/
  n0x15_3 = 0; /*0xffd1422f*/
  do /*0xffd1435f*/
  {
    n0x15_1 = (unsigned __int8)n0x15; /*0xffd14237*/
    if ( src[(unsigned __int8)n0x15 + 7748 + result] ) /*0xffd1423c*/
    {
      if ( !IioTailFuncCEB0((int)src, n4, n0x15_3) && !src[6723] ) /*0xffd1425d*/
      {
        v14 = src[8 * n0x15_1 + 7487]; /*0xffd1426a*/
        n302074688 = 302074688; /*0xffd14271*/
        v22 = v14; /*0xffd14276*/
        if ( (_BYTE)n0x15_2 ) /*0xffd1427a*/
          n302074688 = 302009152; /*0xffd1427c*/
        v16 = IioTailFuncC97F((int)src, n4, v14, n302074688); /*0xffd14288*/
        IioTailFuncC9C2((int)src, n4, v22, n302074688, v16 & 0xFE3FF7FD | 0x800); /*0xffd1429f*/
      }
      n2 = src[6723]; /*0xffd142a7*/
      if ( !n2 || n2 == 2 ) /*0xffd142b3*/
      {
        v18 = IioTailFuncC97F((int)src, n4, n0x15_3, 302007280); /*0xffd142be*/
        IioTailFuncC9C2((int)src, n4, n0x15_3, 302007280, v18 | 0x1000); /*0xffd142cd*/
      }
      if ( src[1220] && !IioTailFuncCEB0((int)src, n4, n0x15_3) && src[6726] != 6 ) /*0xffd142f4*/
      {
        v19 = IioTailFuncC97F((int)src, n4, n0x15_3, 234898056); /*0xffd142ff*/
        IioTailFuncC9C2((int)src, n4, n0x15_3, 234898056, v19 | 1); /*0xffd1430c*/
        IioTailFuncC9C2((int)src, n4, n0x15_3, 234898064, 255); /*0xffd1431f*/
        IioTailFuncC9C2((int)src, n4, n0x15_3, 234898060, -4097); /*0xffd14331*/
        IioTailFuncC9C2((int)src, n4, n0x15_3, 234898068, 255); /*0xffd14342*/
      }
      n0x15 = n0x15_2; /*0xffd1434a*/
    }
    result = 21 * n4_1; /*0xffd1434e*/
    LOBYTE(n0x15) = n0x15 + 1; /*0xffd14352*/
    n0x15_2 = n0x15; /*0xffd14354*/
    n0x15_3 = n0x15; /*0xffd14358*/
  }
  while ( (unsigned __int8)n0x15 < 0x15u ); /*0xffd1435f*/
  return result; /*0xffd14365*/
}

// Function: IioDdrSlotInfoRead @ 0xffd144e7 (0x7d bytes)
// Index: 2404/2560

int __cdecl IioDdrSlotInfoRead(_BYTE *src, unsigned __int8 n4, _BYTE *buf)
{
  int v3; // ecx
  int v4; // edx
  int v5; // edi
  _DWORD *v6; // esi
  int n8; // eax
  bool v8; // zf
  int n8_1; // [esp+10h] [ebp-Ch]
  int v10; // [esp+14h] [ebp-8h]
  int n6; // [esp+18h] [ebp-4h]

  LOBYTE(v3) = 48 * n4; /*0xffd144f3*/
  v4 = 0; /*0xffd144f6*/
  n6 = 6; /*0xffd144fb*/
  v10 = 48 * n4; /*0xffd144ff*/
  do /*0xffd1455a*/
  {
    v5 = 0; /*0xffd14507*/
    v6 = &src[4 * (unsigned __int8)v3 + 4862]; /*0xffd1451c*/
    n8 = 8; /*0xffd1451f*/
    n8_1 = 8; /*0xffd14520*/
    do /*0xffd14547*/
    {
      if ( *v6 ) /*0xffd14524*/
      {
        *(_DWORD *)&buf[192 * n4 + 32 * v4 + 4 * v5] = *v6; /*0xffd14535*/
        n8 = n8_1; /*0xffd14538*/
      }
      ++v5; /*0xffd1453c*/
      ++v6; /*0xffd1453d*/
      n8_1 = --n8; /*0xffd14543*/
    }
    while ( n8 ); /*0xffd14547*/
    v3 = v10; /*0xffd14549*/
    LOBYTE(v3) = v10 + 8; /*0xffd1454d*/
    ++v4; /*0xffd14550*/
    v8 = n6-- == 1; /*0xffd14551*/
    v10 = v3; /*0xffd14556*/
  }
  while ( !v8 ); /*0xffd1455a*/
  return n8; /*0xffd1455c*/
}

// Function: IioSecurePlatformWarmRstCfg @ 0xffd14564 (0x133 bytes)
// Index: 2405/2560

char __cdecl IioSecurePlatformWarmRstCfg(_BYTE *src, unsigned __int8 n4, _BYTE *buf)
{
  int v3; // eax
  unsigned __int8 n2; // bl
  int v5; // edx
  int n4_1; // ebp
  int n8; // eax
  _BYTE *v8; // ecx
  int v9; // edx
  int v10; // ebp
  int n8_1; // [esp+4h] [ebp-10h]
  unsigned __int8 n4_2; // [esp+8h] [ebp-Ch]

  LOBYTE(v3) = n4; /*0xffd14564*/
  if ( n4 < 4u ) /*0xffd1456d*/
  {
    n2 = 0; /*0xffd1457a*/
    v5 = 0; /*0xffd14581*/
    n4_1 = n4; /*0xffd14583*/
    n8 = 8; /*0xffd14592*/
    v8 = &src[8 * n4 + 4188]; /*0xffd14593*/
    n8_1 = 8; /*0xffd14596*/
    do /*0xffd145b4*/
    {
      if ( !*v8 ) /*0xffd1459a*/
      {
        *(_DWORD *)&buf[192 * n4 + 4 * v5] |= 0x10u; /*0xffd145a3*/
        n8 = n8_1; /*0xffd145a7*/
      }
      ++v5; /*0xffd145ab*/
      ++v8; /*0xffd145ac*/
      n8_1 = --n8; /*0xffd145b0*/
    }
    while ( n8 ); /*0xffd145b4*/
    v9 = 6 * n4; /*0xffd145b6*/
    n4_2 = 0; /*0xffd145b9*/
    do /*0xffd14689*/
    {
      v3 = 1 << n2; /*0xffd145d2*/
      if ( ((unsigned __int8)(1 << n2) & src[n4_1 + 6788]) != 0 ) /*0xffd145db*/
      {
        v10 = n2 + v9; /*0xffd145e1*/
        nullsub_5(); /*0xffd145f6*/
        if ( !src[6 * n4 + 4828 + n2] ) /*0xffd14606*/
        {
          *(_DWORD *)&buf[32 * v10 + 16] |= 0x20u; /*0xffd14622*/
          nullsub_5(); /*0xffd14627*/
        }
        LOBYTE(v3) = IioTailFuncCBE3((int)src, n4, n4_2); /*0xffd14638*/
        if ( !(_BYTE)v3 ) /*0xffd14642*/
          *(_DWORD *)&buf[32 * v10 + 20] |= 0x20u; /*0xffd14647*/
        v9 = 6 * n4; /*0xffd1464c*/
        n4_1 = n4; /*0xffd14650*/
        if ( n2 == 2 && !src[6723] && src[6724] < 3u ) /*0xffd14669*/
        {
          v3 = 32 * (6 * n4 + 2); /*0xffd1466e*/
          *(_DWORD *)&buf[v3 + 20] |= 0x800000u; /*0xffd14671*/
          *(_DWORD *)&buf[v3] |= 0x400000u; /*0xffd14679*/
        }
      }
      n4_2 = ++n2; /*0xffd14682*/
    }
    while ( n2 < 6u ); /*0xffd14689*/
  }
  return v3; /*0xffd14693*/
}

// Function: IioTailX_FFD14697 @ 0xffd14697 (0xbf bytes)
// Index: 2406/2560

int __cdecl IioTailX_FFD14697(_BYTE *src, unsigned __int8 n4, char n9, _BYTE *buf)
{
  int n318914820; // eax
  int n6; // ebp
  _DWORD *v6; // esi
  int n8; // edi
  int v8; // eax
  int n9a; // [esp+1Ch] [ebp+Ch]

  nullsub_5(); /*0xffd146b5*/
  if ( n9 == 9 ) /*0xffd146c4*/
  {
    IioSecurePlatformWarmRstCfg(src, n4, buf); /*0xffd146f5*/
  }
  else if ( n9 == 10 ) /*0xffd146c9*/
  {
    if ( src[4339] ) /*0xffd146cb*/
      *(_DWORD *)&buf[192 * n4 + 56] |= 0x40000000u; /*0xffd146da*/
    IioDdrSlotInfoRead(src, n4, buf); /*0xffd146e8*/
  }
  n318914820 = 318914820; /*0xffd14703*/
  n6 = 6; /*0xffd1470a*/
  v6 = &buf[192 * n4]; /*0xffd1470b*/
  do /*0xffd1474f*/
  {
    n9a = n318914820; /*0xffd1470f*/
    n8 = 8; /*0xffd14713*/
    do /*0xffd1474a*/
    {
      v8 = IioTailFuncC97F((int)src, n4, 0, n318914820); /*0xffd1471c*/
      IioTailFuncC9C2((int)src, n4, 0, n9a, v8 | *v6); /*0xffd14731*/
      n318914820 = n9a + 4; /*0xffd1473d*/
      ++v6; /*0xffd14740*/
      n9a += 4; /*0xffd14743*/
      --n8; /*0xffd14747*/
    }
    while ( n8 ); /*0xffd1474a*/
    --n6; /*0xffd1474c*/
  }
  while ( n6 ); /*0xffd1474f*/
  return n318914820; /*0xffd14751*/
}

// Function: IioTailX_FFD14756 @ 0xffd14756 (0x1fe bytes)
// Index: 2407/2560

int __cdecl IioTailX_FFD14756(_BYTE *src, int n4, _BYTE *buf)
{
  _BYTE *src_1; // ebp
  int n4_1; // ecx
  unsigned __int8 n6; // bl
  int n4_2; // esi
  _BYTE *v7; // edi
  int v8; // ecx
  int v9; // edx
  int v10; // esi
  int v11; // edi
  int v12; // eax
  int result; // eax
  unsigned __int8 v14; // [esp+12h] [ebp-26h]
  char v15; // [esp+14h] [ebp-24h]
  __int16 n3598; // [esp+15h] [ebp-23h]
  char n14; // [esp+17h] [ebp-21h]
  unsigned int n2; // [esp+18h] [ebp-20h]
  int n4_3; // [esp+1Ch] [ebp-1Ch]
  int n0x15; // [esp+20h] [ebp-18h]
  unsigned __int8 *v21; // [esp+24h] [ebp-14h]
  _BYTE *v22; // [esp+28h] [ebp-10h]
  int v23; // [esp+2Ch] [ebp-Ch]
  _BYTE *v24; // [esp+30h] [ebp-8h]
  int v25; // [esp+34h] [ebp-4h]

  src_1 = src; /*0xffd1475b*/
  nullsub_5(); /*0xffd14769*/
  n4_1 = n4; /*0xffd1476e*/
  n3598 = 3598; /*0xffd14777*/
  n6 = 0; /*0xffd1477c*/
  n14 = 14; /*0xffd1477e*/
  n4_2 = (unsigned __int8)n4; /*0xffd1478b*/
  v21 = src + 7481; /*0xffd1478e*/
  v15 = 0; /*0xffd14795*/
  LOBYTE(n0x15) = 0; /*0xffd14799*/
  n4_3 = (unsigned __int8)n4; /*0xffd1479d*/
  n2 = 0; /*0xffd147a1*/
  v7 = &src[21 * (unsigned __int8)n4 + 4255]; /*0xffd147ac*/
  v24 = v7; /*0xffd147ae*/
  v22 = v7; /*0xffd147b2*/
  while ( 1 ) /*0xffd147bc*/
  {
    if ( !IioTailFuncCB4B((int)src_1, n4_1, n0x15) ) /*0xffd147c2*/
      *v7 = 1; /*0xffd147ce*/
    v8 = (unsigned __int8)v7[2753]; /*0xffd147d1*/
    v23 = v8; /*0xffd147e7*/
    if ( ((unsigned __int8)(1 << v8) & src_1[n4_2 + 6788]) != 0 ) /*0xffd147f2*/
    {
      if ( (n2 < 2 || n2 == 5 || n2 == 9 || n2 == 13 || n2 == 17) /*0xffd14820*/
        && ((unsigned __int8)(1 << v8) & src_1[n4_2 + 6788]) == 0 )
      {
        *v7 = 1; /*0xffd14822*/
      }
      if ( src_1[6 * n4_2 + 6828 + v8] == 4 ) /*0xffd14834*/
        *v7 = 1; /*0xffd14836*/
      v9 = *(v21 - 1); /*0xffd14845*/
      v14 = *v21; /*0xffd1484c*/
      v10 = 1 << v9; /*0xffd14852*/
      v25 = v9; /*0xffd14858*/
      if ( v24[n2] ) /*0xffd1485c*/
      {
        *(&v15 + v9) &= ~(1 << v14); /*0xffd14873*/
        *(_DWORD *)&buf[192 * n4_3 + 32 * v23 + 4 * v14] |= v10; /*0xffd14885*/
        nullsub_5(); /*0xffd14896*/
        v7 = v22; /*0xffd1489b*/
      }
      if ( v7[95] ) /*0xffd148a2*/
      {
        v11 = 4 * (v14 + 8 * (v23 + 2109954)); /*0xffd148bb*/
        v12 = IioTailFuncC97F((int)src, n4, 0, v11); /*0xffd148c8*/
        src_1 = src; /*0xffd148d6*/
        IioTailFuncC9C2((int)src, n4, 0, v11, v10 | v12); /*0xffd148db*/
        nullsub_5(); /*0xffd148f3*/
        v7 = v22; /*0xffd148f8*/
        n6 = 0; /*0xffd148ff*/
      }
      n4_2 = n4_3; /*0xffd14901*/
    }
    v21 += 8; /*0xffd14909*/
    ++n2; /*0xffd14910*/
    ++v7; /*0xffd14914*/
    LOBYTE(n0x15) = n0x15 + 1; /*0xffd14915*/
    v22 = v7; /*0xffd14919*/
    if ( (unsigned __int8)n0x15 >= 0x15u ) /*0xffd1491f*/
      break; /*0xffd1491f*/
    n4_1 = n4; /*0xffd147b8*/
  }
  LOBYTE(v23) = 0; /*0xffd14925*/
  do /*0xffd1494a*/
  {
    result = IioTailFuncC9E4((int)src_1, n4, v23, 285216896, 7u); /*0xffd14939*/
    LOBYTE(v23) = ++n6; /*0xffd14943*/
  }
  while ( n6 < 6u ); /*0xffd1494a*/
  return result; /*0xffd1494c*/
}

// Function: IioTailX_FFD14954 @ 0xffd14954 (0x7f bytes)
// Index: 2408/2560

int __cdecl IioTailX_FFD14954(_BYTE *src, unsigned __int8 n4)
{
  char v2; // bl
  int v3; // eax
  int v4; // eax

  v2 = IioTailFuncC97F((int)src, n4, 0, 67190932); /*0xffd1496e*/
  if ( ProcessLibraryEntryPoint() && (v2 & 8) != 0 ) /*0xffd1497c*/
    DebugPrintEx( /*0xffd1498d*/
      (int)"e:\\hs\\PurleySktPkg\\Iio\\Library\\PeiDxeCommonIioInitLib\\IioSecurePlatform.c",
      357,
      (int)"!RstCplReg.Bits.rst_cpl3");
  v3 = IioTailFuncC97F((int)src, n4, 0, 67322096); /*0xffd149a2*/
  if ( src[4853] ) /*0xffd149aa*/
    v4 = v3 | 0x80000000; /*0xffd149b3*/
  else
    v4 = v3 & 0x7FFFFFFF; /*0xffd149ba*/
  return IioTailFuncC9C2((int)src, n4, 0, 67322096, v4); /*0xffd149d0*/
}

// Function: IioSecureRstCplCheck @ 0xffd149d3 (0x60 bytes)
// Index: 2409/2560

int __cdecl IioSecureRstCplCheck(_BYTE *src, unsigned __int8 n4, _BYTE *n4_1)
{
  int v3; // eax

  if ( (_BYTE)n4_1 != 4 || !*src || !src[n4 + 7476] ) /*0xffd149ec*/
    return -536870659; /*0xffd14a2b*/
  v3 = IioTailFuncC97F((int)src, n4, 4u, 285229444); /*0xffd14a01*/
  IioTailFuncC9C2((int)src, n4, 4u, 285229444, v3 | 0x8000); /*0xffd14a11*/
  nullsub_5(); /*0xffd14a1e*/
  return 0; /*0xffd14a30*/
}

// Function: DxeInit_3 @ 0xffd14a33 (0x2b1 bytes)
// Index: 2410/2560

void DxeInit_3(
        _BYTE *src,
        unsigned __int8 n4,
        _BYTE *a3,
        int n64,
        const char *VT_d_Chipset_Initialization_for_IIO%d_..._n,
        ...)
{
  int n6; // edx
  int n4_1; // ebp
  int v7; // esi
  int v8; // eax
  int v9; // eax
  int v10; // eax
  unsigned int v11; // eax
  unsigned int v12; // eax
  unsigned __int16 v13; // [esp+10h] [ebp-18h]
  int n6_1; // [esp+14h] [ebp-14h]
  unsigned __int8 n6_2; // [esp+18h] [ebp-10h]
  int v16; // [esp+1Ch] [ebp-Ch]

  n6 = 0; /*0xffd14a3b*/
  n4_1 = n4; /*0xffd14a3f*/
  v7 = 0; /*0xffd14a42*/
  n6_1 = 0; /*0xffd14a49*/
  n6_2 = 0; /*0xffd14a4d*/
  v16 = 0; /*0xffd14a55*/
  do
  {
    if ( ((unsigned __int8)(1 << v7) & src[n4_1 + 6788]) != 0 )
    {
      if ( !src[6723] )
      {
        v8 = IioTailFuncC97F((int)src, n4, n6_2, 302268776); /*0xffd14a86*/
        IioTailFuncC9C2((int)src, n4, n6_2, 302268776, v8 & 0x3FFFFF9F | 0x40); /*0xffd14a9c*/
        v9 = IioTailFuncC97F((int)src, n4, n6_2, 302009152); /*0xffd14aa9*/
        IioTailFuncC9C2((int)src, n4, n6_2, 302009152, v9 | 0x40000); /*0xffd14abc*/
        if ( src[6724] < 3u || src[6722] == 1 )
        {
          IioTailFuncC97F((int)src, n4, n6_2, 302137780); /*0xffd14ae2*/
          IioTailFuncC9C2((int)src, n4, n6_2, 302137780, src[6722] == 1 ? 2 : 100);
          IioTailFuncC97F((int)src, n4, n6_2, 302137776); /*0xffd14b10*/
          IioTailFuncC9C2((int)src, n4, n6_2, 302137776, src[6722] == 1 ? 13 : 100000);
          v13 = IioTailFuncC97F((int)src, n4, n6_2, 302129572) | 2; /*0xffd14b4e*/
          IioTailFuncC99E((int)src, n4, n6_2, 302129572, v13); /*0xffd14b5f*/
          v10 = IioTailFuncC97F((int)src, n4, n6_2, 302139152); /*0xffd14b6c*/
          IioTailFuncC9C2((int)src, n4, n6_2, 302139152, v10 & 0xFFFFFF00 | 0xC4); /*0xffd14b82*/
          v11 = IioTailFuncC97F((int)src, n4, n6_2, 302139128) & 0xFFFFFFF8 | 2; /*0xffd14ba0*/
          if ( src[6722] == 1 ) /*0xffd14ba9*/
            v12 = (unsigned int)&loc_FFC83FFF & v11 | 0x80000; /*0xffd14bb0*/
          else
            v12 = v11 & 0xFFC03FFF | 0x1C000; /*0xffd14bbc*/
          IioTailFuncC9C2((int)src, n4, n6_2, 302139128, v12); /*0xffd14bca*/
        }
      }
      nullsub_5(); /*0xffd14bdd*/
      IioTailFuncC97F((int)src, n4, n6_2, 302137780); /*0xffd14bea*/
      nullsub_5(); /*0xffd14bf7*/
      IioTailFuncC97F((int)src, n4, n6_2, 302137776); /*0xffd14c04*/
      nullsub_5(); /*0xffd14c14*/
      IioTailFuncC97F((int)src, n4, n6_2, 302129572); /*0xffd14c21*/
      nullsub_5(); /*0xffd14c3c*/
      IioTailFuncC97F((int)src, n4, n6_2, 302139152); /*0xffd14c49*/
      nullsub_5(); /*0xffd14c5f*/
      nullsub_5(); /*0xffd14c73*/
      IioTailFuncC97F((int)src, n4, n6_2, 302139128); /*0xffd14c80*/
      nullsub_5(); /*0xffd14c95*/
      nullsub_5(); /*0xffd14cb0*/
      n6 = n6_1; /*0xffd14cb5*/
      v7 = v16; /*0xffd14cbc*/
      n4_1 = n4; /*0xffd14cc0*/
    }
    LOBYTE(n6) = n6 + 1; /*0xffd14cc4*/
    ++v7; /*0xffd14cc6*/
    n6_1 = n6; /*0xffd14cc7*/
    n6_2 = n6; /*0xffd14ccb*/
    v16 = v7; /*0xffd14ccf*/
  }
  while ( (unsigned __int8)n6 < 6u );
}

// Function: IioDdrRegClr @ 0xffd14ce4 (0x7e bytes)
// Index: 2411/2560

void __cdecl IioDdrRegClr(_BYTE *src, unsigned __int8 n4, _BYTE *a3)
{
  int v3; // eax
  int v4; // eax
  int v5; // eax

  if ( !src[6723] ) /*0xffd14ce9*/
  {
    v3 = IioTailFuncC97F((int)src, n4, (unsigned __int8)a3, 285229452); /*0xffd14d06*/
    IioTailFuncC9C2((int)src, n4, (unsigned __int8)a3, 285229452, v3 & 0xFFDFF7FF); /*0xffd14d15*/
    v4 = IioTailFuncC97F((int)src, n4, (unsigned __int8)a3, 302268776); /*0xffd14d23*/
    IioTailFuncC9C2((int)src, n4, (unsigned __int8)a3, 302268776, v4 | 0x10000); /*0xffd14d32*/
    v5 = IioTailFuncC97F((int)src, n4, (unsigned __int8)a3, 285229456); /*0xffd14d43*/
    IioTailFuncC9C2((int)src, n4, (unsigned __int8)a3, 285229456, v5 & 0xFFFE0080 | 0x1FF3F); /*0xffd14d55*/
  }
}

// Function: DxeInit @ 0xffd14d62 (0x3f3 bytes)
// Index: 2412/2560

int __cdecl DxeInit(_BYTE *src, unsigned __int8 n4)
{
  _BYTE *src_1; // ebx
  int srca_1; // edx
  int v4; // esi
  int v5; // eax
  int n4_1; // esi
  int v8; // edi
  int v9; // esi
  unsigned int v10; // edi
  int v11; // eax
  int v12; // edi
  char v13; // al
  int v14; // eax
  int v15; // edi
  unsigned int v16; // edi
  unsigned int v17; // edi
  unsigned int v18; // edi
  unsigned int v19; // edi
  int v20; // esi
  unsigned int v21; // eax
  int v22; // eax
  unsigned int v23; // eax
  int v24; // eax
  int v25; // [esp+10h] [ebp-14h]
  int v26; // [esp+14h] [ebp-10h]
  int v27; // [esp+18h] [ebp-Ch]
  int srca_2; // [esp+1Ch] [ebp-8h]
  unsigned int v29; // [esp+20h] [ebp-4h]
  unsigned __int8 srca; // [esp+28h] [ebp+4h]

  src_1 = src; /*0xffd14d6a*/
  if ( *src ) /*0xffd14d71*/
  {
    n4_1 = n4; /*0xffd14def*/
    nullsub_5(); /*0xffd14dff*/
    DxeInit_3(src, n4, src, 64, "VT-d Chipset Initialization for IIO%d ...\n", n4); /*0xffd14e09*/
    LOBYTE(src) = 0; /*0xffd14e13*/
    v8 = 0; /*0xffd14e17*/
    v25 = 0; /*0xffd14e19*/
    do /*0xffd15145*/
    {
      if ( ((unsigned __int8)(1 << v8) & src_1[n4_1 + 6788]) != 0 && IioSecureRstCplCheck(src_1, n4, src) ) /*0xffd14e3b*/
      {
        v9 = *(_DWORD *)&src_1[24 * n4_1 + 7229 + 4 * v8]; /*0xffd14e50*/
        v27 = v9; /*0xffd14e57*/
        if ( v9 ) /*0xffd14e5d*/
        {
          IioDdrRegClr(src_1, n4, src); /*0xffd14e69*/
          IioTailFuncC9C2((int)src_1, n4, (unsigned __int8)src, 285229440, v9 | 1); /*0xffd14e7f*/
          v10 = IioTailFuncC97F((int)src_1, n4, (unsigned __int8)src, 285229448) & 0xFFFFFEFF; /*0xffd14ea1*/
          v11 = IioTailFuncC97F((int)src_1, n4, (unsigned __int8)src, 285229444); /*0xffd14ea7*/
          IioTailFuncC9C2((int)src_1, n4, (unsigned __int8)src, 285229444, v11 & 0xFFFF7F00 | 0x80A8); /*0xffd14ec6*/
          IioTailFuncC9C2((int)src_1, n4, (unsigned __int8)src, 285229448, v10); /*0xffd14ed7*/
          nullsub_5(); /*0xffd14eec*/
          nullsub_5(); /*0xffd14eff*/
          nullsub_5(); /*0xffd14f11*/
          v29 = IioTailFuncEBC0((int)src_1, v9 + 8) & 0xFF3FFFFF | 0x400000; /*0xffd14f31*/
          IioTailFuncEC40((int)src_1, v9 + 8, v29); /*0xffd14f35*/
          v26 = IioTailFuncEBC0((int)src_1, v9 + 12); /*0xffd14f48*/
          v12 = IioTailFuncEBC0((int)src_1, v9 + 4108); /*0xffd14f63*/
          if ( (IioTailFuncC97F((int)src_1, n4, (unsigned __int8)src, 285229868) & 0xFFC0) == 0xFC00 ) /*0xffd14f78*/
          {
            v13 = 0; /*0xffd14f7a*/
          }
          else
          {
            nullsub_5(); /*0xffd14f86*/
            v13 = 1; /*0xffd14f8e*/
          }
          if ( src_1[4] && v13 ) /*0xffd14f99*/
          {
            v14 = v26 | 0x8000000; /*0xffd14fa4*/
            v15 = v12 | 0x8000000; /*0xffd14fa6*/
          }
          else
          {
            nullsub_5(); /*0xffd14fba*/
            v14 = v26 & 0xF7FFFFFF; /*0xffd14fcb*/
            v15 = v12 & 0xF7FFFFFF; /*0xffd14fcd*/
          }
          IioTailFuncEC40((int)src_1, v9 + 12, v14); /*0xffd14fd9*/
          IioTailFuncEC40((int)src_1, v9 + 4108, v15); /*0xffd14fe7*/
          v16 = IioTailFuncEBC0((int)src_1, v9 + 16) & 0xFFFFFFFE; /*0xffd14ffb*/
          if ( src_1[2] ) /*0xffd14ffe*/
            v16 |= 1u; /*0xffd15004*/
          v17 = v16 & 0xFFFFFFFB; /*0xffd15007*/
          if ( src_1[3] ) /*0xffd1500a*/
            v17 |= 4u; /*0xffd15010*/
          v18 = v17 & 0xFFFFFFBF; /*0xffd15013*/
          if ( src_1[5] ) /*0xffd15016*/
            v18 |= 0x40u; /*0xffd1501c*/
          v19 = v18 & 0xFFFFFFF7; /*0xffd1501f*/
          if ( src_1[1] ) /*0xffd15022*/
            v19 |= 8u; /*0xffd15028*/
          IioTailFuncEC40((int)src_1, v9 + 16, v19); /*0xffd15031*/
          IioTailFuncEBC0((int)src_1, v9 + 20); /*0xffd1503b*/
          nullsub_5(); /*0xffd15053*/
          nullsub_5(); /*0xffd15062*/
          v20 = IioTailFuncEBC0((int)src_1, v9 + 4104); /*0xffd1507b*/
          v21 = IioTailFuncEBC0((int)src_1, v27 + 4112) & 0xFFFFFFFE; /*0xffd1508b*/
          if ( (v20 & 0x800000) != 0 ) /*0xffd15095*/
            v21 |= 1u; /*0xffd15097*/
          IioTailFuncEC40((int)src_1, v27 + 4112, v21); /*0xffd150a3*/
          if ( !src_1[6723] && src_1[6724] < 3u ) /*0xffd150bb*/
          {
            v22 = IioTailFuncC97F((int)src_1, n4, (unsigned __int8)src, 285229508); /*0xffd150c9*/
            IioTailFuncC9C2((int)src_1, n4, (unsigned __int8)src, 285229508, v22 & 0xFFDFFFFF); /*0xffd150db*/
            v23 = IioTailFuncEBC0((int)src_1, v27 + 184) & 0xFFFFF7FF; /*0xffd150f0*/
            if ( src_1[4854] ) /*0xffd150f5*/
              v23 |= 0x800u; /*0xffd150fe*/
            IioTailFuncEC40((int)src_1, v27 + 184, v23); /*0xffd15106*/
            v24 = IioTailFuncC97F((int)src_1, n4, (unsigned __int8)src, 285229508); /*0xffd15112*/
            IioTailFuncC9C2((int)src_1, n4, (unsigned __int8)src, 285229508, v24 | 0x200000); /*0xffd15124*/
          }
          v8 = v25; /*0xffd1512c*/
        }
        n4_1 = n4; /*0xffd15130*/
      }
      ++v8; /*0xffd1513a*/
      LOBYTE(src) = (_BYTE)src + 1; /*0xffd1513b*/
      v25 = v8; /*0xffd1513f*/
    }
    while ( (unsigned __int8)src < 6u ); /*0xffd15145*/
    return 0; /*0xffd1514b*/
  }
  else
  {
    srca_1 = 0; /*0xffd14d76*/
    srca_2 = 0; /*0xffd14d7b*/
    v4 = 0; /*0xffd14d7f*/
    srca = 0; /*0xffd14d81*/
    do /*0xffd14dd3*/
    {
      if ( ((unsigned __int8)(1 << v4) & src_1[n4 + 6788]) != 0 ) /*0xffd14d98*/
      {
        v5 = IioTailFuncC97F((int)src_1, n4, srca, 285229444); /*0xffd14da4*/
        IioTailFuncC9C2((int)src_1, n4, srca, 285229444, v5 | 0x8000); /*0xffd14db9*/
        srca_1 = srca_2; /*0xffd14dbe*/
      }
      LOBYTE(srca_1) = srca_1 + 1; /*0xffd14dc5*/
      ++v4; /*0xffd14dc7*/
      srca_2 = srca_1; /*0xffd14dc8*/
      srca = srca_1; /*0xffd14dcc*/
    }
    while ( (unsigned __int8)srca_1 < 6u ); /*0xffd14dd3*/
    nullsub_5(); /*0xffd14ddd*/
    return -536870659; /*0xffd14de5*/
  }
}

// Function: IioDdrChannelRegInit @ 0xffd15155 (0x1ff bytes)
// Index: 2413/2560

int __cdecl IioDdrChannelRegInit(int src, unsigned __int8 n4)
{
  unsigned __int8 n6; // dl
  int n4_1; // ebp
  int result; // eax
  unsigned int v5; // ebp
  unsigned int v6; // esi
  unsigned __int16 v7; // si
  __int16 v8; // ax
  int v9; // eax
  unsigned __int8 n6_1; // [esp+14h] [ebp-18h]
  unsigned __int16 v11; // [esp+1Ch] [ebp-10h]
  unsigned __int16 v12; // [esp+20h] [ebp-Ch]
  int v13; // [esp+24h] [ebp-8h]

  n6 = 0; /*0xffd1515d*/
  n4_1 = n4; /*0xffd15161*/
  n6_1 = 0; /*0xffd15169*/
  do
  {
    result = 1 << n6; /*0xffd1517d*/
    if ( ((unsigned __int8)(1 << n6) & *(_BYTE *)(src + n4_1 + 6788)) != 0 )
    {
      result = n6 + 6 * (n4_1 + 1138); /*0xffd15195*/
      if ( *(_BYTE *)(result + src) != 4 )
      {
        v13 = n6 + 6 * n4_1; /*0xffd151a6*/
        v5 = *(_DWORD *)(src + 4 * v13 + 7325); /*0xffd151aa*/
        if ( v5 == *(_DWORD *)(src + 7096) || !n6 && IioTailFuncCEB0(src, n4, 0) == 1 ) /*0xffd151cf*/
          v5 += 4096; /*0xffd151d1*/
        if ( *(_BYTE *)(v13 + src + 4828) ) /*0xffd151df*/
          nullsub_5(); /*0xffd151f6*/
        IioTailFuncC99E(src, n4, n6_1, 285417536, (v5 >> 8) & 0xFFF | 0x8000); /*0xffd1521a*/
        nullsub_5(); /*0xffd15230*/
        v6 = IioTailFuncC97F(src, n4, n6_1, 285229220) & 0xFFFFF | 0xFEF00000; /*0xffd1524a*/
        IioTailFuncC9C2(src, n4, n6_1, 285229220, v6); /*0xffd15259*/
        nullsub_5(); /*0xffd15272*/
        v7 = IioTailFuncC97F(src, n4, n6_1, 285417472); /*0xffd1529c*/
        v11 = IioTailFuncC97F(src, n4, n6_1, 285417516); /*0xffd152a7*/
        if ( v11 != v7 ) /*0xffd152af*/
          v11 = v7; /*0xffd152b1*/
        IioTailFuncC99E(src, n4, n6_1, 285417516, v11); /*0xffd152c2*/
        if ( (*(_BYTE *)(src + 7445) & 4) != 0 )
          v8 = IioTailFuncC97F(src, n4, n6_1, 285417474); /*0xffd152ef*/
        else
          v8 = n6_1 == 0 ? 8230 : 8246;
        v12 = v8; /*0xffd152fc*/
        IioTailFuncC97F(src, n4, n6_1, 285417518); /*0xffd15305*/
        IioTailFuncC99E(src, n4, n6_1, 285417518, v12); /*0xffd15312*/
        v9 = IioTailFuncC97F(src, n4, n6_1, 285425888); /*0xffd15323*/
        result = IioTailFuncC9C2(src, n4, n6_1, 285425888, v9); /*0xffd1532d*/
        n6 = n6_1; /*0xffd15332*/
        n4_1 = n4; /*0xffd15339*/
      }
    }
    n6_1 = ++n6; /*0xffd1533f*/
  }
  while ( n6 < 6u );
  return result; /*0xffd1534c*/
}

// Function: IioTailX_FFD15354 @ 0xffd15354 (0x6a bytes)
// Index: 2414/2560

int __cdecl IioTailX_FFD15354(_BYTE *src, unsigned __int8 n4)
{
  unsigned __int8 n4_1; // dl
  unsigned __int8 n6; // bl
  char v4; // si
  int result; // eax
  int v6; // eax
  unsigned __int8 n6_1; // [esp+10h] [ebp-4h]

  n4_1 = n4; /*0xffd15355*/
  n6 = 0; /*0xffd1535c*/
  v4 = 0; /*0xffd15366*/
  n6_1 = 0; /*0xffd15368*/
  do /*0xffd153b6*/
  {
    result = 1 << v4; /*0xffd15371*/
    if ( ((unsigned __int8)(1 << v4) & src[n4 + 6788]) != 0 ) /*0xffd1537a*/
    {
      v6 = IioTailFuncC97F((int)src, n4_1, n6_1, 285229508); /*0xffd15387*/
      result = IioTailFuncC9C2((int)src, n4, n6_1, 285229508, v6 | 0x80); /*0xffd153a0*/
      n4_1 = n4; /*0xffd153a5*/
    }
    ++n6; /*0xffd153ac*/
    ++v4; /*0xffd153ae*/
    n6_1 = n6; /*0xffd153af*/
  }
  while ( n6 < 6u ); /*0xffd153b6*/
  return result; /*0xffd153b8*/
}

// Function: IioTailX_FFD153BE @ 0xffd153be (0x3a7 bytes)
// Index: 2415/2560

unsigned __int8 __cdecl IioTailX_FFD153BE(_BYTE *src, unsigned __int8 n4)
{
  unsigned __int8 n4_1; // bl
  int v3; // ebp
  int n4_2; // ebp
  char n2; // al
  int v6; // eax
  unsigned __int8 v7; // bl
  unsigned __int8 v8; // al
  char v9; // dl
  char v10; // al
  int v11; // eax
  int v12; // eax
  unsigned __int8 n0x15_1; // al
  char v14; // [esp+13h] [ebp-21h]
  int v15; // [esp+14h] [ebp-20h]
  int v16; // [esp+18h] [ebp-1Ch]
  int v17; // [esp+1Ch] [ebp-18h]
  unsigned __int8 v18; // [esp+20h] [ebp-14h]
  unsigned __int8 v19; // [esp+20h] [ebp-14h]
  char *p_srcb; // [esp+24h] [ebp-10h]
  int n0x15; // [esp+28h] [ebp-Ch]
  unsigned __int8 v22; // [esp+2Ch] [ebp-8h]
  int v23; // [esp+30h] [ebp-4h]

  v16 = 0; /*0xffd153c1*/
  n4_1 = n4; /*0xffd153c7*/
  v3 = 0; /*0xffd153cc*/
  LOBYTE(n0x15) = 0; /*0xffd153d6*/
  p_srcb = src + 7480; /*0xffd153e1*/
  do /*0xffd15757*/
  {
    if ( IioTailFuncD055((int)src, n4_1, n0x15) ) /*0xffd153ec*/
    {
      n4_2 = n4_1; /*0xffd15400*/
      v17 = v16 + 21 * n4_1; /*0xffd15408*/
      n2 = src[v17 + 7832]; /*0xffd1540c*/
      if ( n2 == 1 || n2 == 2 ) /*0xffd15419*/
      {
        nullsub_5(); /*0xffd1542c*/
        v18 = src[v17 + 7008]; /*0xffd15441*/
        v6 = IioTailFuncC97F((int)src, n4_1, v18, 251675016); /*0xffd1544b*/
        IioTailFuncC9C2((int)src, n4_1, v18, 251675016, v6 | 0x1000); /*0xffd15461*/
        v14 = src[v17 + 7832]; /*0xffd15474*/
        if ( v14 ) /*0xffd1547a*/
          IioTailPhyRegWrite(src, n4_1, n0x15); /*0xffd1547f*/
        v7 = IioTailFuncCE55(n0x15); /*0xffd15494*/
        v8 = v14 & 3 | IioTailFuncC97F((int)src, n4, n0x15, 251662548) & 0xFC; /*0xffd154ad*/
        v15 = v7; /*0xffd154af*/
        v22 = v8; /*0xffd154b9*/
        v23 = v7 + 3 * (n4_2 + 1486); /*0xffd154c5*/
        if ( src[v23] ) /*0xffd154c9*/
          v22 = v8 | 0x40; /*0xffd154d1*/
        n4_1 = n4; /*0xffd154d9*/
        IioTailFuncC9E4((int)src, n4, n0x15, 251662548, v22); /*0xffd154e5*/
        v9 = v14; /*0xffd154ea*/
        if ( v14 && src[3 * n4_2 + 4446 + v15] == 1 ) /*0xffd1550c*/
        {
          IioTailFuncC9E4((int)src, n4, n0x15, 251662544, src[3 * n4_2 + 4470 + v15]); /*0xffd1552a*/
          IioTailFuncC9C2((int)src, n4, n0x15, 251674648, 0); /*0xffd15539*/
          IioTailFuncC9C2((int)src, n4, n0x15, 251674652, 65280); /*0xffd1554b*/
          if ( src[v23] ) /*0xffd15557*/
          {
            IioTailFuncC9E4((int)src, n4, n0x15, 251662545, src[3 * n4_2 + 4494 + v15]); /*0xffd155bc*/
            IioTailFuncC929( /*0xffd155f4*/
              (int)src,
              n4,
              src[v17 + 6924],
              *p_srcb,
              p_srcb[1],
              214,
              (unsigned __int8)src[3 * n4_2 + 4506 + v15]);
          }
          else
          {
            IioTailFuncC9E4((int)src, n4, n0x15, 251662545, src[3 * n4_2 + 4482 + v15]); /*0xffd15577*/
            IioTailFuncC9C2((int)src, n4, n0x15, 251674656, 0); /*0xffd15586*/
            IioTailFuncC9C2((int)src, n4, n0x15, 251674660, 65280); /*0xffd15598*/
          }
          IioTailFuncC9E4((int)src, n4, n0x15, 251662546, src[3 * n4_2 + 4518 + v15]); /*0xffd15616*/
          if ( src[v23] ) /*0xffd15622*/
          {
            IioTailFuncC9E4((int)src, n4, n0x15, 251662547, src[3 * n4_2 + 4542 + v15]); /*0xffd15666*/
            IioTailFuncC929( /*0xffd1569e*/
              (int)src,
              n4,
              src[v17 + 6924],
              *p_srcb,
              p_srcb[1],
              213,
              (unsigned __int8)src[3 * n4_2 + 4554 + v15]);
          }
          else
          {
            IioTailFuncC9E4((int)src, n4, n0x15, 251662547, src[3 * n4_2 + 4530 + v15]); /*0xffd15642*/
          }
          v9 = v14; /*0xffd156a6*/
        }
        if ( v9 == 1 ) /*0xffd156ad*/
        {
          v10 = IioTailFuncC97F((int)src, n4, n0x15, 251662548); /*0xffd156b7*/
          IioTailFuncC9E4((int)src, n4, n0x15, 251662548, v10 ^ (v10 ^ (4 * src[3 * n4_2 + 4578 + v15])) & 0xC); /*0xffd156e2*/
          v9 = v14; /*0xffd156e7*/
        }
        if ( v9 ) /*0xffd156f0*/
        {
          v19 = src[v17 + 7008]; /*0xffd15703*/
          v11 = IioTailFuncC97F((int)src, n4, v19, 285229504); /*0xffd1570d*/
          IioTailFuncC9C2((int)src, n4, v19, 285229504, v11); /*0xffd1571a*/
          v12 = IioTailFuncC97F((int)src, n4, n0x15, 251675020); /*0xffd15728*/
          IioTailFuncC9C2((int)src, n4, n0x15, 251675020, v12 | 0x40); /*0xffd15735*/
        }
      }
      v3 = v16; /*0xffd1573d*/
    }
    p_srcb += 8; /*0xffd15745*/
    n0x15_1 = n0x15 + 1; /*0xffd1574a*/
    ++v3; /*0xffd1574c*/
    LOBYTE(n0x15) = n0x15_1; /*0xffd1574d*/
    v16 = v3; /*0xffd15751*/
  }
  while ( n0x15_1 < 0x15u ); /*0xffd15757*/
  return n0x15_1; /*0xffd1575d*/
}

// Function: IioTailPhyRegWrite @ 0xffd15765 (0x70 bytes)
// Index: 2416/2560

int __cdecl IioTailPhyRegWrite(_BYTE *src, unsigned __int8 n4, int n0x15)
{
  int n0x15_1; // eax
  _BYTE *v5; // esi
  __int16 n4a; // [esp+14h] [ebp+8h]

  n0x15_1 = n0x15; /*0xffd15771*/
  v5 = &src[21 * n4]; /*0xffd15779*/
  if ( v5[(unsigned __int8)n0x15 + 1490] != 2 ) /*0xffd15785*/
  {
    n4a = IioTailFuncC97F((int)src, n4, n0x15, 234889368); /*0xffd15799*/
    return IioTailFuncC99E( /*0xffd157c8*/
             (int)src,
             n4,
             n0x15,
             234889368,
             n4a & 0xFF1F | (32 * (v5[(unsigned __int8)n0x15 + 1490] & 7)));
  }
  return n0x15_1; /*0xffd157d1*/
}

// Function: IioTailSpeedGradeDecode @ 0xffd157d5 (0x3b bytes)
// Index: 2417/2560

char __cdecl IioTailSpeedGradeDecode(unsigned int a1)
{
  char n15; // cl
  unsigned int n3; // eax
  unsigned int n3_1; // edx

  n15 = 15; /*0xffd157d9*/
  n3 = (a1 >> 12) & 7; /*0xffd157e3*/
  n3_1 = (a1 >> 15) & 0x1F; /*0xffd157e6*/
  if ( n3_1 == 7 )
  {
    if ( n3 == 7 ) /*0xffd157f0*/
    {
      return 7; /*0xffd157f2*/
    }
    else if ( n3 <= 3 ) /*0xffd157f9*/
    {
      return 1; /*0xffd157fb*/
    }
  }
  else if ( n3_1 <= 3 )
  {
    return n3 == 0 ? 0 : 0xF;
  }
  return n15; /*0xffd1580f*/
}

// Function: IioFunc5810 @ 0xffd15810 (0x3cc bytes)
// Index: 2418/2560

void __cdecl IioFunc5810(_BYTE *srca, int n4)
{
  char *_EV_3.50; // edi
  char *v5; // ebx
  int v6; // ebp
  char *v7; // edi
  char n0x15_1; // dl
  int v9; // ecx
  bool v10; // zf
  bool v11; // al
  char n4_1; // al
  char v13; // ch
  char srcc_1; // cl
  char n2_1; // al
  int n64; // edx
  int v17; // eax
  int v18; // edx
  bool v19; // [esp+6h] [ebp-2Ah]
  char v20; // [esp+6h] [ebp-2Ah]
  char v21; // [esp+7h] [ebp-29h]
  char n0x15; // [esp+8h] [ebp-28h]
  int v23; // [esp+Ch] [ebp-24h]
  char n2; // [esp+10h] [ebp-20h]
  int v25; // [esp+14h] [ebp-1Ch]
  char *v26; // [esp+18h] [ebp-18h]
  int v27; // [esp+24h] [ebp-Ch]
  bool srcb; // [esp+34h] [ebp+4h]
  char srcc; // [esp+34h] [ebp+4h]

  v25 = 0; /*0xffd15813*/
  if ( srca[6723] ) /*0xffd1581d*/
  {
    nullsub_5(); /*0xffd15bbf*/
    nullsub_5(); /*0xffd15bcf*/
  }
  else
  {
    if ( srca[6724] >= 9u ) /*0xffd15834*/
    {
      _EV_3.50 = aEv350; // "_EV_3.50" /*0xffd15842*/
      v5 = (char *)&unk_FFD607EC; /*0xffd15847*/
    }
    else
    {
      _EV_3.50 = aEv325; // "_EV_3.25" /*0xffd15836*/
      v5 = (char *)&unk_FFD5D07C; /*0xffd1583b*/
    }
    nullsub_5(); /*0xffd15858*/
    nullsub_5(); /*0xffd15865*/
    v6 = *((unsigned __int16 *)_EV_3.50 + 6); /*0xffd1586a*/
    v27 = v6; /*0xffd15877*/
    nullsub_5(); /*0xffd1587b*/
    if ( v6 ) /*0xffd15885*/
    {
      v7 = v5 + 2; /*0xffd1588b*/
      while ( 1 ) /*0xffd158ac*/
      {
        v19 = IioTailZeroCheck((int)srca, (unsigned __int8)srca[6723], *(_DWORD *)(v7 + 34)); /*0xffd158ac*/
        srcb = (*(_QWORD *)(v7 + 26) & (1 << srca[6724])) != 0; /*0xffd158c5*/
        v21 = IioTailSpeedGradeDecode(*(_DWORD *)(v7 + 2)); /*0xffd158d8*/
        if ( v19 && srcb && IioTailBitMaskCheck(*(_DWORD *)(v7 + 10), n4) ) /*0xffd158f1*/
          break; /*0xffd158f1*/
LABEL_53:
        v7 += 48; /*0xffd15b92*/
        v27 = --v6; /*0xffd15b98*/
        if ( !v6 ) /*0xffd15b9c*/
          goto LABEL_54; /*0xffd15b9c*/
      }
      n0x15_1 = 0; /*0xffd15900*/
      v9 = 0; /*0xffd15908*/
      n0x15 = 0; /*0xffd1590a*/
      v23 = 0; /*0xffd1590e*/
      v26 = srca + 7483; /*0xffd15912*/
      while ( 1 ) /*0xffd15916*/
      {
        if ( ((*(_DWORD *)(v7 + 14) >> v9) & 1) == 0 ) /*0xffd1591d*/
          goto LABEL_51; /*0xffd1591d*/
        if ( *(_WORD *)v7 != 0xFFFF ) /*0xffd15932*/
          break; /*0xffd15932*/
LABEL_27:
        n4_1 = *(v7 - 2); /*0xffd159a9*/
        if ( n4_1 == 4 || n4_1 == 5 ) /*0xffd159b6*/
        {
          sub_FFD15BDC((int)srca, n4, n0x15, n4_1, *(_DWORD *)(v7 + 2), *(_DWORD *)(v7 + 42)); /*0xffd15b66*/
LABEL_50:
          n0x15_1 = n0x15; /*0xffd15b6e*/
          goto LABEL_51; /*0xffd15b6e*/
        }
        v13 = srca[21 * (unsigned __int8)n4 + 6924 + v9]; /*0xffd159c8*/
        v20 = v13; /*0xffd159d4*/
        switch ( v21 ) /*0xffd159db*/
        {
          case 0: /*0xffd159db*/
            srcc_1 = *(v26 - 3); /*0xffd15a00*/
            n2_1 = *(v26 - 2); /*0xffd15a03*/
LABEL_35:
            n2 = n2_1; /*0xffd15a06*/
            n64 = *(_DWORD *)(v7 + 2) & 0xFFF; /*0xffd15a23*/
            srcc = srcc_1; /*0xffd15a32*/
            switch ( *(v7 - 1) ) /*0xffd15a4e*/
            {
              case 1: /*0xffd15a4e*/
                v17 = (unsigned __int8)IioTailFuncC827((int)srca, n4, v13, srcc_1, n2_1, n64); /*0xffd15a9e*/
                break;
              case 2: /*0xffd15a4e*/
                v17 = (unsigned __int16)IioTailFuncC774((int)srca, n4, v13, srcc_1, n2_1, n64); /*0xffd15a85*/
                break;
              case 4: /*0xffd15a4e*/
                v17 = IioTailFuncC7CE((int)srca, n4, v13, srcc_1, n2_1, n64); /*0xffd15a6a*/
                break; /*0xffd15a6f*/
              default:
LABEL_42:
                v18 = *(_DWORD *)(v7 + 42) | v25 & *(_DWORD *)(v7 + 6); /*0xffd15ab0*/
                v25 = v18; /*0xffd15abe*/
                switch ( *(v7 - 1) ) /*0xffd15ac5*/
                {
                  case 1: /*0xffd15ac5*/
                    IioTailFuncC929((int)srca, n4, v13, srcc_1, n2, *((_WORD *)v7 + 1) & 0xFFF, v18); /*0xffd15b28*/
                    break;
                  case 2: /*0xffd15ac5*/
                    IioTailFuncC87D((int)srca, n4, v13, srcc_1, n2, *((_WORD *)v7 + 1) & 0xFFF, v18); /*0xffd15b09*/
                    break;
                  case 4: /*0xffd15ac5*/
                    IioTailFuncC8D3((int)srca, n4, v13, srcc_1, n2, *((_WORD *)v7 + 1) & 0xFFF, v18); /*0xffd15aea*/
                    break;
                }
                nullsub_5(); /*0xffd15b52*/
                goto LABEL_50; /*0xffd15b5a*/
            }
            srcc_1 = srcc; /*0xffd15aa1*/
            v13 = v20; /*0xffd15aa8*/
            v25 = v17; /*0xffd15aac*/
            goto LABEL_42; /*0xffd15aac*/
          case 1: /*0xffd159db*/
            srcc_1 = *(v26 - 1); /*0xffd159f5*/
            n2_1 = *v26; /*0xffd159f8*/
            goto LABEL_35; /*0xffd159fa*/
          case 7: /*0xffd159db*/
            srcc_1 = 7; /*0xffd159eb*/
            n2_1 = 7; /*0xffd159ed*/
            goto LABEL_35; /*0xffd159ef*/
        }
LABEL_51:
        v26 += 8; /*0xffd15b72*/
        ++n0x15_1; /*0xffd15b77*/
        v9 = ++v23; /*0xffd15b7d*/
        n0x15 = n0x15_1; /*0xffd15b81*/
        if ( (unsigned __int8)n0x15_1 >= 0x15u ) /*0xffd15b88*/
        {
          v6 = v27; /*0xffd15b8e*/
          goto LABEL_53; /*0xffd15b8e*/
        }
      }
      if ( IioTailCfgFieldCheck((int)srca, n4, n0x15) ) /*0xffd15937*/
      {
        v10 = (*(_WORD *)v7 & 8) == 0; /*0xffd15946*/
      }
      else if ( IioTailFuncCEB0((int)srca, n4, n0x15) == 1 ) /*0xffd15957*/
      {
        v10 = (*v7 & 1) == 0; /*0xffd15959*/
      }
      else
      {
        if ( (unsigned __int8)n0x15 <= 0x10u ) /*0xffd15962*/
        {
          v11 = IioTailFuncCEF8((int)srca, n4); /*0xffd15966*/
          n0x15_1 = n0x15; /*0xffd1596b*/
          if ( v11 || (unsigned __int8)n0x15 <= 0xCu ) /*0xffd15978*/
          {
            if ( (*v7 & 2) == 0 ) /*0xffd1597d*/
              goto LABEL_51; /*0xffd1597d*/
LABEL_26:
            v9 = v23; /*0xffd159a5*/
            goto LABEL_27; /*0xffd159a5*/
          }
        }
        if ( IioTailFuncCB02((int)srca, n4, n0x15) ) /*0xffd15987*/
          v10 = (*v7 & 0x10) == 0; /*0xffd15993*/
        else
          v10 = (*v7 & 4) == 0; /*0xffd15998*/
      }
      n0x15_1 = n0x15; /*0xffd1599b*/
      if ( v10 ) /*0xffd1599f*/
        goto LABEL_51; /*0xffd1599f*/
      goto LABEL_26; /*0xffd1599f*/
    }
LABEL_54:
    nullsub_5(); /*0xffd15ba2*/
  }
}

// Function: IioFunc5BDC @ 0xffd15bdc (0x31f bytes)
// Index: 2419/2560

int __cdecl IioFunc5BDC(int src, int n4, unsigned __int8 n0x15, char n4_1, int a5, int a6)
{
  int result; // eax
  int n16_1; // esi
  int n5000; // ebp
  unsigned __int8 v9; // cl
  int v10; // edx
  int n5000_1; // esi
  int n2a_1; // esi
  unsigned __int8 v13; // [esp+6h] [ebp-1Ah]
  char n7; // [esp+7h] [ebp-19h]
  unsigned int n2a_3; // [esp+Ch] [ebp-14h]
  char n2; // [esp+10h] [ebp-10h]
  int n2a; // [esp+10h] [ebp-10h]
  unsigned __int16 n16; // [esp+14h] [ebp-Ch]
  unsigned int n2a_2; // [esp+1Ch] [ebp-4h]

  result = IioTailFuncD055(src, n4, n0x15); /*0xffd15bed*/
  if ( (_BYTE)result ) /*0xffd15bf7*/
  {
    v13 = *(_BYTE *)(n0x15 + 21 * (unsigned __int8)n4 + src + 6924); /*0xffd15c23*/
    if ( n4_1 == 4 ) /*0xffd15c27*/
    {
      n16_1 = 0; /*0xffd15c2f*/
      if ( n0x15 ) /*0xffd15c33*/
      {
        if ( n0x15 != 1 && n0x15 != 5 && n0x15 != 9 && n0x15 != 13 ) /*0xffd15c47*/
        {
          result = n0x15 - 17; /*0xffd15c49*/
          if ( n0x15 != 17 ) /*0xffd15c4b*/
            return result; /*0xffd15c4b*/
        }
        n16 = 16; /*0xffd15c51*/
      }
      else
      {
        n16 = 4; /*0xffd15c5b*/
      }
      n7 = *(_BYTE *)(src + 8 * n0x15 + 7484); /*0xffd15c71*/
      n2 = *(_BYTE *)(src + 8 * n0x15 + 7485); /*0xffd15c7c*/
      if ( (*(_BYTE *)(src + 7445) & 4) != 0 ) /*0xffd15c80*/
      {
        n2a_3 = n2a_2; /*0xffd15d24*/
      }
      else
      {
        n5000 = 5000; /*0xffd15c88*/
        n2a_3 = 1; /*0xffd15c8e*/
        while ( n5000 ) /*0xffd15c94*/
        {
          IioTailFuncCA40(src, 1u); /*0xffd15c99*/
          n2a_3 = IioTailFuncC7CE(src, n4, v13, n7, n2, 17920); /*0xffd15cc4*/
          --n5000; /*0xffd15cc8*/
          if ( (n2a_3 & 1) == 0 ) /*0xffd15ccb*/
          {
            if ( n5000 ) /*0xffd15ccf*/
              goto LABEL_18; /*0xffd15ccf*/
            break; /*0xffd15ccf*/
          }
        }
        nullsub_5(); /*0xffd15cd1*/
        nullsub_5(); /*0xffd15d0c*/
        IioTailFuncCA08(); /*0xffd15d14*/
      }
LABEL_18:
      nullsub_5(); /*0xffd15d2e*/
      v9 = v13; /*0xffd15d52*/
      v10 = 2 * (a6 & 0x3FFF); /*0xffd15d69*/
      do /*0xffd15dd9*/
      {
        IioTailFuncC8D3(src, n4, v9, n7, n2, 17924, v10); /*0xffd15d8f*/
        n2a_3 = (8 * (a5 & 0x7F)) | n2a_3 & 0xFFFFFC05 | 5 | (1 << (n16_1 + 11)); /*0xffd15db7*/
        result = IioTailFuncC8D3(src, n4, v13, n7, n2, 17920, n2a_3); /*0xffd15dc5*/
        v9 = v13; /*0xffd15dca*/
        v10 = 2 * (a6 & 0x3FFF); /*0xffd15dd1*/
        ++n16_1; /*0xffd15dd5*/
      }
      while ( (unsigned __int16)n16_1 < n16 ); /*0xffd15dd9*/
    }
    else
    {
      if ( (*(_BYTE *)(src + 7445) & 4) != 0 ) /*0xffd15deb*/
      {
        n2a_1 = n2a_2; /*0xffd15ef5*/
      }
      else
      {
        n2a = 1; /*0xffd15df4*/
        n5000_1 = 5000; /*0xffd15df8*/
        while ( n5000_1 ) /*0xffd15dff*/
        {
          IioTailFuncCA40(src, 1u); /*0xffd15e04*/
          n2a = IioTailFuncC7CE(src, n4, v13, 7, 7, 17920); /*0xffd15e27*/
          --n5000_1; /*0xffd15e2b*/
          if ( (n2a & 1) == 0 ) /*0xffd15e2e*/
          {
            if ( n5000_1 ) /*0xffd15e32*/
              goto LABEL_27; /*0xffd15e32*/
            break; /*0xffd15e32*/
          }
        }
        nullsub_5(); /*0xffd15e34*/
        nullsub_5(); /*0xffd15e6b*/
        IioTailFuncCA08(); /*0xffd15e73*/
LABEL_27:
        n2a_1 = n2a; /*0xffd15e7b*/
      }
      nullsub_5(); /*0xffd15e97*/
      IioTailFuncC8D3( /*0xffd15ebc*/
        src,
        n4,
        v13,
        7,
        7,
        18012,
        2 * (a6 & 0x3FFF),
        src,
        64,
        "  LBC_COM programming for IIO[%d] Bus[0x%x] Port[%d] Sel_ld[%d] Data[0x%x]\n",
        (unsigned __int8)n4,
        v13,
        n0x15,
        a5,
        a6);
      return IioTailFuncC8D3(src, n4, v13, 7, 7, 18008, n2a_1 & 0xFFFFFC05 | (8 * (a5 & 0x7F)) | 5); /*0xffd15ee5*/
    }
  }
  return result; /*0xffd15ef0*/
}

// Function: IioTailCfgFieldCheck @ 0xffd15efb (0x1d bytes)
// Index: 2420/2560

bool __cdecl IioTailCfgFieldCheck(int src, unsigned __int8 n4, char n0x15)
{
  return *(_BYTE *)((unsigned __int8)n0x15 + src + 21 * n4 + 3842) != 0; /*0xffd15f17*/
}

// Function: IioTailBitMaskCheck @ 0xffd15f18 (0x1e bytes)
// Index: 2421/2560

char __cdecl IioTailBitMaskCheck(int a1, char n4)
{
  char v2; // dl

  v2 = 0; /*0xffd15f1d*/
  if ( a1 == -1 || ((unsigned __int8)(1 << n4) & (unsigned __int8)a1) != 0 ) /*0xffd15f2e*/
    return 1; /*0xffd15f30*/
  return v2; /*0xffd15f34*/
}

// Function: IioTailZeroCheck @ 0xffd15f36 (0x13 bytes)
// Index: 2422/2560

bool __cdecl IioTailZeroCheck(int src, int a2, int a3)
{
  bool result; // al

  result = 0; /*0xffd15f36*/
  if ( !a2 ) /*0xffd15f3d*/
    return a3 == 0; /*0xffd15f46*/
  return result; /*0xffd15f48*/
}

// Function: IioTailX_FFD15F49 @ 0xffd15f49 (0x3b bytes)
// Index: 2423/2560

char __cdecl IioTailX_FFD15F49(int a1, _DWORD *a2)
{
  char v2; // bl
  int v3; // ecx

  v2 = 0; /*0xffd15f4e*/
  if ( a1 ) /*0xffd15f52*/
  {
    v3 = *(_DWORD *)(a1 + 8588); /*0xffd15f58*/
    *a2 = v3; /*0xffd15f5e*/
    if ( v3 && *(_DWORD *)(v3 + 628676) ) /*0xffd15f64*/
      return 1; /*0xffd15f6c*/
    else
      AssertPrint((_BYTE *)v3, 1, (int)"MrcOemHooksPpi used before available!\n"); /*0xffd15f78*/
  }
  return v2; /*0xffd15f82*/
}

// Function: IioTailMrcOemHooksCall304 @ 0xffd15f84 (0x35 bytes)
// Index: 2424/2560

char __cdecl IioTailMrcOemHooksCall304(_BYTE *src, int n4, int a3)
{
  char result; // al
  int v4; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49((int)src, &v4); /*0xffd15f8f*/
  if ( result ) /*0xffd15f98*/
    return (*(char (__cdecl **)(_BYTE *, int, int))(*(_DWORD *)(v4 + 628676) + 304))(src, n4, a3); /*0xffd15fac*/
  return result; /*0xffd15fb5*/
}

// Function: IioTailMrcOemHooksCall300 @ 0xffd15fb9 (0x35 bytes)
// Index: 2425/2560

char __cdecl IioTailMrcOemHooksCall300(_BYTE *src, int n4, int a3)
{
  char result; // al
  int v4; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49((int)src, &v4); /*0xffd15fc4*/
  if ( result ) /*0xffd15fcd*/
    return (*(char (__cdecl **)(_BYTE *, int, int))(*(_DWORD *)(v4 + 628676) + 300))(src, n4, a3); /*0xffd15fe1*/
  return result; /*0xffd15fea*/
}

// Function: IioTailMrcOemHooksCall308 @ 0xffd15fee (0x35 bytes)
// Index: 2426/2560

char __cdecl IioTailMrcOemHooksCall308(_BYTE *src, int n4, int a3)
{
  char result; // al
  int v4; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49((int)src, &v4); /*0xffd15ff9*/
  if ( result ) /*0xffd16002*/
    return (*(char (__cdecl **)(_BYTE *, int, int))(*(_DWORD *)(v4 + 628676) + 308))(src, n4, a3); /*0xffd16016*/
  return result; /*0xffd1601f*/
}

// Function: IioTailX_FFD16023 @ 0xffd16023 (0x2d bytes)
// Index: 2427/2560

char __cdecl IioTailX_FFD16023(int __return_address)
{
  char result; // al
  int v2; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49(__return_address, &v2); /*0xffd1602e*/
  if ( result ) /*0xffd16037*/
    return (*(int (__cdecl **)(int))(*(_DWORD *)(v2 + 628676) + 276))(__return_address); /*0xffd16045*/
  return result; /*0xffd1604c*/
}

// Function: IioTailX_FFD16050 @ 0xffd16050 (0x35 bytes)
// Index: 2428/2560

char __cdecl IioTailX_FFD16050(int src, int n4, int n3)
{
  char result; // al
  int v4; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49(src, &v4); /*0xffd1605b*/
  if ( result ) /*0xffd16064*/
    return (*(int (__cdecl **)(int, int, int))(*(_DWORD *)(v4 + 628676) + 284))(src, n4, n3); /*0xffd16078*/
  return result; /*0xffd16081*/
}

// Function: IioTailX_FFD16085 @ 0xffd16085 (0x3e bytes)
// Index: 2429/2560

char __cdecl IioTailX_FFD16085(int src, int n4, int a3, int a4, int a5, int a6)
{
  char result; // al
  int v7; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49(src, &v7); /*0xffd16090*/
  if ( result ) /*0xffd16099*/
    return (*(char (__cdecl **)(int, int, int, int, int, int))(*(_DWORD *)(v7 + 628676) + 280))(src, n4, a3, a4, a5, a6); /*0xffd160b6*/
  return result; /*0xffd160bf*/
}

// Function: IioTailX_FFD160C3 @ 0xffd160c3 (0x2d bytes)
// Index: 2430/2560

char __cdecl IioTailX_FFD160C3(int __return_address)
{
  char result; // al
  int v2; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49(__return_address, &v2); /*0xffd160ce*/
  if ( result ) /*0xffd160d7*/
    return (*(int (__cdecl **)(int))(*(_DWORD *)(v2 + 628676) + 296))(__return_address); /*0xffd160e5*/
  return result; /*0xffd160ec*/
}

// Function: IioTailMrcOemHooksCall288 @ 0xffd160f0 (0x31 bytes)
// Index: 2431/2560

char __cdecl IioTailMrcOemHooksCall288(int src, int n4)
{
  char result; // al
  int v3; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49(src, &v3); /*0xffd160fb*/
  if ( result ) /*0xffd16104*/
    return (*(int (__cdecl **)(int, int))(*(_DWORD *)(v3 + 628676) + 288))(src, n4); /*0xffd16115*/
  return result; /*0xffd1611d*/
}

// Function: IioTailX_FFD16121 @ 0xffd16121 (0x2d bytes)
// Index: 2432/2560

char __cdecl IioTailX_FFD16121(char *src)
{
  char result; // al
  int v2; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49((int)src, &v2); /*0xffd1612c*/
  if ( result ) /*0xffd16135*/
    return (*(int (__cdecl **)(char *))(*(_DWORD *)(v2 + 628676) + 320))(src); /*0xffd16143*/
  return result; /*0xffd1614a*/
}

// Function: IioTailX_FFD1614E @ 0xffd1614e (0x2d bytes)
// Index: 2433/2560

char __cdecl IioTailX_FFD1614E(int __return_address)
{
  char result; // al
  int v2; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49(__return_address, &v2); /*0xffd16159*/
  if ( result ) /*0xffd16162*/
    return (*(int (__cdecl **)(int))(*(_DWORD *)(v2 + 628676) + 312))(__return_address); /*0xffd16170*/
  return result; /*0xffd16177*/
}

// Function: IioTailX_FFD1617B @ 0xffd1617b (0x2d bytes)
// Index: 2434/2560

char __cdecl IioTailX_FFD1617B(int __return_address)
{
  char result; // al
  int v2; // [esp+0h] [ebp-4h] BYREF

  result = IioTailX_FFD15F49(__return_address, &v2); /*0xffd16186*/
  if ( result ) /*0xffd1618f*/
    return (*(int (__cdecl **)(int))(*(_DWORD *)(v2 + 628676) + 316))(__return_address); /*0xffd1619d*/
  return result; /*0xffd161a4*/
}

// Function: IioTailX_FFD161A8 @ 0xffd161a8 (0x10d bytes)
// Index: 2435/2560

int __cdecl IioTailX_FFD161A8(int a1, int a2, int *a3, int *a4)
{
  int v4; // edi
  int v5; // edx
  int v6; // ecx
  int v7; // eax
  _DWORD v9[3]; // [esp+10h] [ebp-10h] BYREF
  int v10; // [esp+1Ch] [ebp-4h]

  v4 = a3[3]; /*0xffd161b3*/
  if ( v4 && (*a3 & 0x8000) != 0 ) /*0xffd161c6*/
    *a3 = AutoGenFuncEF4E(v4, *a3); /*0xffd161d8*/
  v5 = *a3; /*0xffd161da*/
  a3[2] = a3[2] & 0xFFFFF0FF | ((((unsigned int)*a3 >> 13) & 3) << 8); /*0xffd161f6*/
  if ( v4 /*0xffd16219*/
    && *(_BYTE *)(v4 + 628672)
    && *(_DWORD *)(v4 + 628660) == (v5 & 0xFFFFF000)
    && *(_DWORD *)(v4 + 628664) == a3[1] )
  {
    *a4 = *(_DWORD *)(v4 + 628668) | *(_WORD *)a3 & 0xFFF; /*0xffd1622e*/
  }
  else
  {
    v10 = 0; /*0xffd16234*/
    memset(v9, 0, sizeof(v9)); /*0xffd16240*/
    IioTailAddrHashCalc(a3, v4 + 255608, v9); /*0xffd1624b*/
    v6 = (LOWORD(v9[0]) ^ *(_WORD *)a3) & 0xFFF ^ v9[0]; /*0xffd1625e*/
    v10 = a3[3]; /*0xffd16263*/
    v9[0] = v6; /*0xffd1626c*/
    v7 = AutoGenFuncFBDD((int)v9); /*0xffd16270*/
    *a4 = v7 + (v9[0] & 0xFFFFFFF); /*0xffd16288*/
    if ( v4 ) /*0xffd1628c*/
    {
      *(_DWORD *)(v4 + 628660) = *a3 & 0xFFFFF000; /*0xffd16292*/
      *(_DWORD *)(v4 + 628664) = a3[1]; /*0xffd1629b*/
      *(_DWORD *)(v4 + 628668) = *a4 & 0xFFFFF000; /*0xffd162a5*/
    }
  }
  return 0; /*0xffd162ab*/
}

// Function: IioTailAddrHashCalc @ 0xffd162b5 (0x98 bytes)
// Index: 2436/2560

int __cdecl IioTailAddrHashCalc(int n2, int a2, int a3)
{
  unsigned __int8 v3; // bl
  int v4; // edi
  unsigned __int8 n20; // [esp+10h] [ebp-8h]
  unsigned __int8 n6; // [esp+14h] [ebp-4h]

  v3 = *(_BYTE *)(n2 + 5); /*0xffd162c7*/
  v4 = *(_DWORD *)(n2 + 12); /*0xffd162ca*/
  n20 = *(_BYTE *)(n2 + 3); /*0xffd162cd*/
  n6 = *(_BYTE *)(n2 + 4); /*0xffd162d3*/
  LOBYTE(n2) = *(_BYTE *)(n2 + 2); /*0xffd162d9*/
  *(_DWORD *)a3 ^= (*(_DWORD *)a3 ^ (AutoGenFuncE656(v4, v3, n20, n6, n2, a2) << 20)) & 0xFF00000; /*0xffd1630a*/
  *(_DWORD *)a3 ^= (*(_DWORD *)a3 ^ (AutoGenFuncE969(v4, n20, n6, n2, a2) << 15)) & 0xF8000; /*0xffd16328*/
  *(_DWORD *)a3 ^= (*(_DWORD *)a3 ^ (AutoGenFuncED19(v4, n20, n6, n2, a2) << 12)) & 0x7000; /*0xffd1633d*/
  *(_WORD *)(a3 + 4) = v3; /*0xffd16343*/
  return v3; /*0xffd16342*/
}

// Function: IioTailX_FFD1634D @ 0xffd1634d (0x146 bytes)
// Index: 2437/2560

int __cdecl IioTailX_FFD1634D(int n4)
{
  unsigned int v2; // edi
  int v3; // eax
  int v4; // eax

  nullsub_5(); /*0xffd1635a*/
  IioTailPhyStatusPoll(n4); /*0xffd16360*/
  if ( *(_BYTE *)(n4 + 2582) == 2 ) /*0xffd16374*/
    KtiFunc72ED(); /*0xffd1637d*/
  else
    KtiFunc7347(); /*0xffd16376*/
  if ( *(_DWORD *)(n4 + 7116) <= *(_DWORD *)(n4 + 7100) ) /*0xffd1638f*/
    return -536870661; /*0xffd16391*/
  v2 = *(_DWORD *)(n4 + 7133) & 0xFFFFF000; /*0xffd163a0*/
  IioTailFlagUpdate(n4); /*0xffd163a6*/
  nullsub_5(); /*0xffd163c3*/
  if ( *(unsigned __int8 *)(n4 + 6734) + *(unsigned __int8 *)(n4 + 6735) ) /*0xffd163d9*/
  {
    IioTailFuncC9C2(n4, 0, 0, 218120272, v2 + 1); /*0xffd163f2*/
    v3 = IioTailFuncC97F(n4, 0, 0, 285229508); /*0xffd16402*/
    IioTailFuncC9C2(n4, 0, 0, 285229508, v3 & 0xFFDFFFFF); /*0xffd16413*/
    nullsub_5(); /*0xffd16420*/
    KtiFunc7446((_BYTE *)n4); /*0xffd16429*/
    nullsub_5(); /*0xffd16438*/
    IioTailCmdPortMaskIssue(n4, v2); /*0xffd16441*/
    IioTailStatusPollWait(n4, v2); /*0xffd1644a*/
    KtiFunc73A1((_BYTE *)n4); /*0xffd16450*/
    IioTailFuncC9C2(n4, 0, 0, 218120272, 0); /*0xffd1645c*/
    v4 = IioTailFuncC97F(n4, 0, 0, 285229508); /*0xffd16465*/
    IioTailFuncC9C2(n4, 0, 0, 285229508, v4 | 0x200000); /*0xffd16477*/
    nullsub_5(); /*0xffd16484*/
  }
  return 0; /*0xffd16396*/
}

// Function: IioTailFlagUpdate @ 0xffd16493 (0x27 bytes)
// Index: 2438/2560

int __cdecl IioTailFlagUpdate(int n4)
{
  *(_BYTE *)(n4 + 6734) = *(_BYTE *)(n4 + 6727) != 0; /*0xffd164a1*/
  *(_BYTE *)(n4 + 6735) = *(_DWORD *)(n4 + 6729) != 0; /*0xffd164b1*/
  return 0; /*0xffd164b9*/
}

// Function: IioTailStatusPollWait @ 0xffd164ba (0x63 bytes)
// Index: 2439/2560

int __cdecl IioTailStatusPollWait(int n4, int a2)
{
  unsigned __int8 v2; // bl
  int v3; // edi
  int n26; // [esp-4h] [ebp-14h]

  v2 = 0; /*0xffd164c0*/
  while ( !*(_BYTE *)(v2 + n4 + 6733) ) /*0xffd164d3*/
  {
LABEL_12:
    if ( ++v2 >= 3u ) /*0xffd1650d*/
      return 0; /*0xffd16515*/
  }
  switch ( v2 ) /*0xffd164d8*/
  {
    case 0u: /*0xffd164d8*/
      n26 = 26; /*0xffd164ec*/
LABEL_9:
      if ( (*(_BYTE *)(n4 + 7445) & 4) == 0 ) /*0xffd164f6*/
      {
        v3 = n26 + a2; /*0xffd164f8*/
        while ( (IioTailFuncEB7C(n4, v3) & 2) != 0 ) /*0xffd16506*/
          ; /*0xffd164fb*/
      }
      goto LABEL_12; /*0xffd16506*/
    case 1u: /*0xffd164d8*/
      n26 = 38; /*0xffd164e8*/
      goto LABEL_9; /*0xffd164ea*/
    case 2u: /*0xffd164d8*/
      n26 = 62; /*0xffd164e4*/
      goto LABEL_9; /*0xffd164e6*/
  }
  return -536870660; /*0xffd16511*/
}

// Function: IioTailCmdPortMaskIssue @ 0xffd1651d (0xc0 bytes)
// Index: 2440/2560

int __cdecl IioTailCmdPortMaskIssue(int n4, int a2)
{
  int v2; // edx
  int *v3; // edi
  int n8; // ebx
  int v5; // ecx
  int v6; // eax
  unsigned __int8 v7; // bl
  int n20; // [esp-4h] [ebp-14h]
  char v10; // [esp+Ch] [ebp-4h]
  __int16 v11; // [esp+Dh] [ebp-3h]

  v10 = 0; /*0xffd1652b*/
  v2 = 0; /*0xffd1652f*/
  v11 = 0; /*0xffd16531*/
  v3 = (int *)(n4 + 6739); /*0xffd16535*/
  n8 = 8; /*0xffd1653b*/
  do /*0xffd16551*/
  {
    v5 = *v3++; /*0xffd1653c*/
    v6 = (unsigned __int8)*(&v10 + v5) | (1 << v2++); /*0xffd16546*/
    *(&v10 + v5) = v6; /*0xffd1654a*/
    --n8; /*0xffd1654e*/
  }
  while ( n8 ); /*0xffd16551*/
  v7 = 0; /*0xffd16556*/
  while ( !*(_BYTE *)(v7 + n4 + 6733) ) /*0xffd16563*/
  {
LABEL_12:
    if ( ++v7 >= 3u ) /*0xffd165ab*/
    {
      IioTailFuncEB54(n4, a2 + 4, 248, *(_BYTE *)(n4 + 6734) != 0); /*0xffd165c5*/
      return 0; /*0xffd165d5*/
    }
  }
  switch ( v7 ) /*0xffd1657d*/
  {
    case 0u: /*0xffd1657d*/
      n20 = 20; /*0xffd16591*/
      goto LABEL_11; /*0xffd16591*/
    case 1u: /*0xffd1657d*/
      n20 = 32; /*0xffd1658d*/
      goto LABEL_11; /*0xffd1658f*/
    case 2u: /*0xffd1657d*/
      n20 = 56; /*0xffd16589*/
LABEL_11:
      IioTailFuncEB2F( /*0xffd16593*/
        n4,
        a2 + n20,
        -117440767,
        (unsigned __int8)*(&v10 + v7) | ((*(unsigned __int8 *)(v7 + n4 + 6736) | 0xFFFFFF80) << 24));
      goto LABEL_12; /*0xffd1659e*/
  }
  return -536870660; /*0xffd165cf*/
}

// Function: IioTailPhyStatusPoll @ 0xffd165dd (0x70 bytes)
// Index: 2441/2560

void __cdecl IioTailPhyStatusPoll(int n4)
{
  int n4_1; // esi
  unsigned __int8 n4_2; // bl
  unsigned __int8 *v3; // edi
  unsigned __int8 v4; // bp

  n4_1 = n4; /*0xffd165de*/
  if ( *(_BYTE *)(n4 + 7475) ) /*0xffd165e2*/
  {
    n4_2 = 0; /*0xffd165ed*/
    LOBYTE(n4) = 0; /*0xffd165f0*/
    v3 = (unsigned __int8 *)(n4_1 + 6780); /*0xffd165f4*/
    do /*0xffd16646*/
    {
      if ( *(v3 - 4) ) /*0xffd165fa*/
      {
        v4 = *v3; /*0xffd16600*/
        if ( (IioTailFuncC7CE(n4_1, n4, *v3, 0, 0, 8) & 0xFFFFFF00) == 0x6000000 ) /*0xffd16621*/
          IioTailFuncC87D(n4_1, n4, v4, 17, 0, 0, 32902); /*0xffd16634*/
      }
      ++n4_2; /*0xffd1663c*/
      ++v3; /*0xffd1663e*/
      LOBYTE(n4) = n4_2; /*0xffd1663f*/
    }
    while ( n4_2 < 4u ); /*0xffd16646*/
  }
}

// Function: IioTailCmdDdrSeq @ 0xffd1671f (0x125 bytes)
// Index: 2442/2560

char __cdecl IioTailCmdDdrSeq(int i, int a2, int a3, int a4)
{
  char result; // al
  _DWORD *v5; // ecx
  int n2; // ebp
  int n3; // edx

  if ( !*(_BYTE *)(a2 + 6282) ) /*0xffd1672c*/
    IioTailX_FFD1871B(i, a2 + 12, a2 + 36, a2 + 223, 0, (int *)(a2 + 2208)); /*0xffd1674c*/
  if ( IioTailX_FFD1CD6C(i, a2, a3, 53, 0) || (unsigned __int8)sub_FFD1664D(i, a2, 0, 0) ) /*0xffd1677c*/
    return 1; /*0xffd1677c*/
  if ( a3 ) /*0xffd1678a*/
    IioTailFunc7DEF(i, a2 + 12, a2 + 36, a2 + 2362, (int *)(a2 + 223)); /*0xffd167a3*/
  *(_DWORD *)(a2 + 743) = 1; /*0xffd167ae*/
  v5 = (_DWORD *)(a2 + 1516); /*0xffd167b8*/
  n2 = 2; /*0xffd167be*/
  do /*0xffd167e2*/
  {
    n3 = 3; /*0xffd167c1*/
    do /*0xffd167dd*/
    {
      *(_DWORD *)((char *)v5 - 745) = 1; /*0xffd167c4*/
      *v5++ = (_BYTE)a4 == 0; /*0xffd167d5*/
      --n3; /*0xffd167da*/
    }
    while ( n3 ); /*0xffd167dd*/
    --n2; /*0xffd167df*/
  }
  while ( n2 ); /*0xffd167e2*/
  result = IioTailX_FFD1ADFF( /*0xffd16829*/
             i,
             a2 + 12,
             *(_DWORD *)(a2 + 32),
             a2 + 36,
             (_DWORD *)(a2 + 223),
             (_DWORD *)(a2 + 743),
             (int)IioTailX_FFD1E74E,
             a2,
             a3,
             a4,
             *(_BYTE *)(*(_DWORD *)a2 + 49),
             *(_BYTE *)(a2 + 6282),
             *(_BYTE *)(a2 + 6282),
             (_DWORD *)(a2 + 2208),
             *(_DWORD *)(a2 + 8));
  if ( result ) /*0xffd16834*/
    return 1; /*0xffd1676f*/
  *(_BYTE *)(a2 + 6282) = 0; /*0xffd1683a*/
  return result; /*0xffd16840*/
}

// Function: IioTailCmdDdrTrain @ 0xffd16844 (0xcf bytes)
// Index: 2443/2560

char __cdecl IioTailCmdDdrTrain(int i, int a2, int a3, int a4, char a5)
{
  char result; // al

  if ( !*(_BYTE *)(a2 + 6282) ) /*0xffd1684e*/
    IioTailX_FFD1871B(i, a2 + 12, a2 + 36, a2 + 223, 0, (int *)(a2 + 2208)); /*0xffd16870*/
  if ( IioTailX_FFD1CD6C(i, a2, a3, 104, 0) || (unsigned __int8)sub_FFD1664D(i, a2, 0, 0) ) /*0xffd1689c*/
    return 1; /*0xffd1689c*/
  if ( !a5 ) /*0xffd168ab*/
    *(_DWORD *)(a2 + 743) = 1; /*0xffd168ad*/
  result = IioTailX_FFD1ADFF( /*0xffd168fd*/
             i,
             a2 + 12,
             *(_DWORD *)(a2 + 32),
             a2 + 36,
             (_DWORD *)(a2 + 223),
             (_DWORD *)(a2 + 743),
             (int)IioTailX_FFD1E74E,
             a2,
             a3,
             a4,
             *(_BYTE *)(*(_DWORD *)a2 + 49),
             *(_BYTE *)(a2 + 6282),
             *(_BYTE *)(a2 + 6282),
             (_DWORD *)(a2 + 2208),
             *(_DWORD *)(a2 + 8));
  if ( result ) /*0xffd16907*/
    return 1; /*0xffd16892*/
  *(_BYTE *)(a2 + 6282) = 0; /*0xffd16909*/
  return result; /*0xffd1690f*/
}

// Function: IioTailCmdDdrInit @ 0xffd16913 (0x103 bytes)
// Index: 2444/2560

char __cdecl IioTailCmdDdrInit(int i, int a2)
{
  _BYTE *v3; // ebx
  int n2; // ecx
  int n3; // eax

  if ( !*(_BYTE *)(a2 + 6282) ) /*0xffd16920*/
    IioTailX_FFD1871B(i, a2 + 12, a2 + 36, a2 + 223, 0, (int *)(a2 + 2208)); /*0xffd16940*/
  if ( IioTailX_FFD1CD6C(i, a2, 0, 104, 0) ) /*0xffd16951*/
    return 1; /*0xffd1695d*/
  IioTailX_FFD17FC0(i, a2 + 12, a2 + 36, (int *)(a2 + 223)); /*0xffd16975*/
  if ( (unsigned __int8)sub_FFD1664D(i, a2, 0, 0) ) /*0xffd1697e*/
    return 1; /*0xffd1697e*/
  v3 = (_BYTE *)(a2 + 415); /*0xffd1698c*/
  *(_BYTE *)(a2 + 2153) = 1; /*0xffd16992*/
  IioTailFunc6DA4((void *)(a2 + 415), 0, 0x36u); /*0xffd1699c*/
  n2 = 2; /*0xffd169a6*/
  do /*0xffd169b8*/
  {
    n3 = 3; /*0xffd169a9*/
    do /*0xffd169b3*/
    {
      *v3 = 3; /*0xffd169aa*/
      v3 += 9; /*0xffd169ad*/
      --n3; /*0xffd169b0*/
    }
    while ( n3 ); /*0xffd169b3*/
    --n2; /*0xffd169b5*/
  }
  while ( n2 ); /*0xffd169b8*/
  if ( IioTailX_FFD1ADFF( /*0xffd169f8*/
         i,
         a2 + 12,
         *(_DWORD *)(a2 + 32),
         a2 + 36,
         (_DWORD *)(a2 + 223),
         (_DWORD *)(a2 + 743),
         (int)IioTailX_FFD1E74E,
         a2,
         0,
         1,
         *(_BYTE *)(*(_DWORD *)a2 + 49),
         *(_BYTE *)(a2 + 6282),
         *(_BYTE *)(a2 + 6282),
         (_DWORD *)(a2 + 2208),
         *(_DWORD *)(a2 + 8)) )
  {
    return 1; /*0xffd16a04*/
  }
  *(_BYTE *)(a2 + 6282) = 0; /*0xffd16a08*/
  return 0; /*0xffd16a12*/
}

// Function: IioFunc6A16 @ 0xffd16a16 (0x38e bytes)
// Index: 2445/2560

int __cdecl IioFunc6A16(_DWORD *i, int buf_)
{
  bool v3; // zf
  _BYTE buf[8]; // [esp+10h] [ebp-18FCh] BYREF
  int v5[2]; // [esp+18h] [ebp-18F4h] BYREF
  int v6[2]; // [esp+20h] [ebp-18ECh] BYREF
  int v7[2]; // [esp+28h] [ebp-18E4h] BYREF
  char v8[31]; // [esp+30h] [ebp-18DCh] BYREF
  unsigned int v9; // [esp+4Fh] [ebp-18BDh]
  char v10; // [esp+54h] [ebp-18B8h]
  unsigned int v11; // [esp+55h] [ebp-18B7h]
  int buf__1; // [esp+7Ch] [ebp-1890h] BYREF
  int v13; // [esp+80h] [ebp-188Ch] BYREF
  int v14; // [esp+84h] [ebp-1888h]
  int v15[5]; // [esp+88h] [ebp-1884h] BYREF
  _BYTE *v16; // [esp+9Ch] [ebp-1870h]
  int buf_1[46]; // [esp+A0h] [ebp-186Ch] BYREF
  int buf_2[496]; // [esp+15Bh] [ebp-17B1h] BYREF
  int v19[1018]; // [esp+91Ch] [ebp-FF0h] BYREF
  char v20; // [esp+1906h] [ebp-6h]

  (*(void (**)(_DWORD *, unsigned int, const char *, ...))(i[1] + 52))( /*0xffd16a3e*/
    i,
    0x80000000,
    "Starting RMT test v%u.%u.%u.%u\n",
    3,
    22,
    0,
    0);
  IioTailFunc6DA4(buf, 0, 0x20u); /*0xffd16a49*/
  IioTailFunc6DA4(&buf__1, 0, 0x1890u); /*0xffd16a5c*/
  if ( !buf_ )
  {
    (*(void (__cdecl **)(_DWORD *, unsigned int, const char *))(i[1] + 52))(i, 0x80000000, "ERROR: Config is NULL!\n");
    IioTailFunc6DEB((int)i, 1, "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\Pei\\RMT.c", 563, v14); /*0xffd16a92*/
    return 1; /*0xffd16a9c*/
  }
  buf__1 = buf_; /*0xffd16aa1*/
  v19[1] = (int)IioTailX_FFD18756; /*0xffd16aab*/
  v16 = v8; /*0xffd16ab6*/
  v19[2] = (int)IioTailX_FFD1A9F7; /*0xffd16ac5*/
  v19[3] = (int)IioTailX_FFD1A931; /*0xffd16ad9*/
  v19[4] = (int)IioTailX_FFD19C21; /*0xffd16ae6*/
  v20 = 1; /*0xffd16af1*/
  if ( IioTailX_FFD1FBA0(i, &buf__1, 1, &v13) ) /*0xffd16af8*/
    return 1; /*0xffd16b02*/
  v3 = *i == 16842752; /*0xffd16b0e*/
  v14 = v13 + 60; /*0xffd16b14*/
  if ( !v3 ) /*0xffd16b1b*/
  {
    IioTailFunc6DEB((int)i, 1, "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\Pei\\RMT.c", 598, v13 + 60); /*0xffd16b2a*/
    return 1; /*0xffd16b32*/
  }
  (*(void (__cdecl **)(_DWORD *, int *))(i[3] + 8))(i, v15); /*0xffd16b43*/
  if ( IioTailFunc6E50((int)i, v15, v14) ) /*0xffd16b56*/
    return 1; /*0xffd16b56*/
  (*(void (__cdecl **)(_DWORD *, char *))(i[5] + 4))(i, v8); /*0xffd16b6f*/
  if ( IioTailX_FFD182C6((int)i, v16, v14) ) /*0xffd16b81*/
    return 1; /*0xffd16b81*/
  if ( IioTailFunc6FA6((int)i, (int)v15, buf_1) ) /*0xffd16ba9*/
    return 1; /*0xffd16ba9*/
  if ( IioTailX_FFD1CD6C((int)i, (int)&buf__1, 0, 104, 0) ) /*0xffd16bc8*/
    return 1; /*0xffd16bc8*/
  if ( IioTailX_FFD1B110((int)i, &buf__1, 3u, v8[30], v9, v10, v11) ) /*0xffd16bf3*/
    return 1; /*0xffd16bf3*/
  IioTailX_FFD1AFDE((int)i, (int)v15, (int)buf_1, buf_2, 0, *(_DWORD *)(buf__1 + 42), (int)buf, (int)v5); /*0xffd16c31*/
  IioTailX_FFD1816D((int)i, (int)v15, (int)buf_1, buf_2, 0, (int)v7); /*0xffd16c55*/
  IioTailX_FFD1820F((int)i, (int)v15, (int)buf_1, buf_2, 0, (int)v6); /*0xffd16c79*/
  IioTailFunc6DA4(buf_2, 0, 0x104u); /*0xffd16c8f*/
  if ( IioLateInitFuncE8A4(i, &buf__1, sub_FFD16844, sub_FFD1671F, sub_FFD16913, 0) ) /*0xffd16cad*/
    return 1; /*0xffd16cad*/
  IioTailX_FFD1871B((int)i, (int)v15, (int)buf_1, (int)buf_2, 1, v19); /*0xffd16cdf*/
  if ( IioTailX_FFD1CD6C((int)i, (int)&buf__1, 0, 104, 0) ) /*0xffd16cf3*/
    return 1; /*0xffd16cfd*/
  IioTailX_FFD1820F((int)i, (int)v15, (int)buf_1, buf_2, 1, (int)v6); /*0xffd16d22*/
  IioTailX_FFD1816D((int)i, (int)v15, (int)buf_1, buf_2, 1, (int)v7); /*0xffd16d46*/
  IioTailX_FFD1AFDE((int)i, (int)v15, (int)buf_1, buf_2, 1, *(_DWORD *)(buf__1 + 42), (int)buf, (int)v5); /*0xffd16d79*/
  (*(void (**)(_DWORD *, unsigned int, const char *, ...))(i[1] + 52))( /*0xffd16d91*/
    i,
    0x80000000,
    "RMT test v%u.%u.%u.%u complete\n",
    3,
    22,
    0,
    0);
  return 0; /*0xffd16d99*/
}

// Function: IioTailFunc6DA4 @ 0xffd16da4 (0x1f bytes)
// Index: 2446/2560

void *__cdecl IioTailFunc6DA4(void *buf, char value, unsigned int count)
{
  if ( count ) /*0xffd16dab*/
    KtiFunc7D83(buf, value, count); /*0xffd16db6*/
  return buf; /*0xffd16dc1*/
}

// Function: IioTailFunc6DC3 @ 0xffd16dc3 (0x28 bytes)
// Index: 2447/2560

char __cdecl IioTailFunc6DC3(int a1, int a2, int a3, int a4, int a5)
{
  if ( !a2 ) /*0xffd16dca*/
    return 0; /*0xffd16de7*/
  IioTailFunc6DEB(a1, a2, a3, a4, a5); /*0xffd16ddb*/
  return 1; /*0xffd16de5*/
}

// Function: IioTailFunc6DEB @ 0xffd16deb (0x65 bytes)
// Index: 2448/2560

_BYTE *__cdecl IioTailFunc6DEB(int a1, int a2, _BYTE *a3, int a4, int a5)
{
  _BYTE *result; // eax
  int v6; // eax
  int n13; // edx
  int v8; // eax

  result = (_BYTE *)(*(int (**)(int, unsigned int, const char *, ...))(*(_DWORD *)(a1 + 4) + 52))(
                      a1,
                      0x80000000,
                      "ERROR: File=%s Line=%u RetStat=%d\n",
                      a3,
                      a4,
                      a2);
  if ( a5 ) /*0xffd16e19*/
  {
    v6 = 0; /*0xffd16e1b*/
    n13 = 13; /*0xffd16e1f*/
    if ( *a3 ) /*0xffd16e20*/
    {
      do /*0xffd16e25*/
        ++v6; /*0xffd16e24*/
      while ( a3[v6] ); /*0xffd16e25*/
    }
    v8 = v6 - 13; /*0xffd16e2b*/
    if ( v8 < 0 ) /*0xffd16e2e*/
    {
      n13 = v8 + 13; /*0xffd16e30*/
      v8 = 0; /*0xffd16e33*/
    }
    *(_BYTE *)a5 = a2; /*0xffd16e38*/
    *(_WORD *)(a5 + 1) = a4; /*0xffd16e3e*/
    return IioTailX_FFD1FD41((_BYTE *)(a5 + 3), (int)&a3[v8], n13); /*0xffd16e43*/
  }
  return result; /*0xffd16e4b*/
}

// Function: IioTailFunc6E50 @ 0xffd16e50 (0x46 bytes)
// Index: 2449/2560

char __cdecl IioTailFunc6E50(int i, _BYTE *a2, int a3)
{
  if ( *a2 <= 4u && a2[1] <= 2u && a2[2] <= 3u && a2[3] <= 2u && a2[4] <= 8u && a2[9] <= 0x48u ) /*0xffd16e75*/
    return 0; /*0xffd16e77*/
  IioTailFunc6DEB(i, 1, "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\util\\ChkSystemInfo.c", 81, a3); /*0xffd16e8b*/
  return 1; /*0xffd16e79*/
}

// Function: IioTailFunc6E96 @ 0xffd16e96 (0x110 bytes)
// Index: 2450/2560

char __cdecl IioTailFunc6E96(int i, int a2, int a3)
{
  char v3; // dl
  int v4; // ebp
  unsigned __int8 v5; // bl
  int v6; // edi
  unsigned __int8 v7; // dh
  unsigned __int8 v8; // bh
  unsigned __int8 n2; // cl
  unsigned __int8 n2_1; // [esp+13h] [ebp-1Dh]
  int v12; // [esp+18h] [ebp-18h]
  int v13; // [esp+1Ch] [ebp-14h]
  int v14; // [esp+20h] [ebp-10h]

  v3 = 0; /*0xffd16e9d*/
  v4 = *(_DWORD *)(a2 + 5); /*0xffd16ea2*/
  v5 = 0; /*0xffd16ea5*/
  v6 = a3; /*0xffd16ea8*/
  while ( ((1 << v5) & v4) == 0 ) /*0xffd16ebc*/
  {
LABEL_17:
    if ( ++v5 >= 4u ) /*0xffd16f96*/
      return v3; /*0xffd16f96*/
  }
  v7 = 0; /*0xffd16ec5*/
  v13 = v6 + 6 * v5; /*0xffd16ec9*/
  v12 = *(unsigned __int8 *)(v5 + v6); /*0xffd16ed1*/
  while ( ((1 << v7) & v12) == 0 ) /*0xffd16ee3*/
  {
LABEL_15:
    if ( ++v7 >= 2u ) /*0xffd16f83*/
    {
      v4 = *(_DWORD *)(a2 + 5); /*0xffd16f8d*/
      goto LABEL_17; /*0xffd16f8d*/
    }
  }
  v8 = 0; /*0xffd16eec*/
  v14 = *(unsigned __int8 *)(v6 + 2 * v5 + v7 + 4); /*0xffd16f00*/
  while ( 1 ) /*0xffd16f09*/
  {
    if ( ((1 << v8) & v14) != 0 ) /*0xffd16f16*/
    {
      n2 = 0; /*0xffd16f1c*/
      n2_1 = 0; /*0xffd16f22*/
      while ( 1 ) /*0xffd16f31*/
      {
        v6 = a3; /*0xffd16f31*/
        if ( ((1 << n2) & *(unsigned __int8 *)(v13 + 3 * v7 + v8 + 12)) != 0 /*0xffd16f5a*/
          && *(_BYTE *)(n2 + 2 * (v8 + 3 * (v7 + 2 * v5 + 14)) + a3) == 13 )
        {
          break; /*0xffd16f5a*/
        }
        n2 = n2_1 + 1; /*0xffd16f60*/
        n2_1 = n2; /*0xffd16f62*/
        if ( n2 >= 2u ) /*0xffd16f69*/
          goto LABEL_13; /*0xffd16f69*/
      }
      v3 = 1; /*0xffd16f6d*/
LABEL_13:
      if ( v3 ) /*0xffd16f71*/
        return v3; /*0xffd16f9c*/
    }
    if ( ++v8 >= 3u ) /*0xffd16f78*/
      goto LABEL_15; /*0xffd16f78*/
  }
}

// Function: IioTailFunc6FA6 @ 0xffd16fa6 (0x209 bytes)
// Index: 2451/2560

char __cdecl IioTailFunc6FA6(int i, int a2, _BYTE *buf)
{
  int i_1; // edi
  unsigned __int8 n4_2; // bl
  _BYTE *buf_1; // edx
  int v6; // ecx
  int n4; // ebp
  unsigned __int8 n2_1; // bh
  int v9; // ebp
  unsigned __int8 n3; // dl
  int v11; // ecx
  unsigned __int8 n2; // bl
  int v13; // edx
  bool v14; // zf
  char n4_3; // [esp+10h] [ebp-48h]
  char n3_1; // [esp+14h] [ebp-44h]
  int v18; // [esp+18h] [ebp-40h]
  unsigned __int8 n2_3; // [esp+1Ch] [ebp-3Ch]
  int n4_1; // [esp+20h] [ebp-38h]
  unsigned __int8 n2_2; // [esp+24h] [ebp-34h]
  _BYTE *buf_2; // [esp+28h] [ebp-30h]
  int v23; // [esp+2Ch] [ebp-2Ch]
  int v24; // [esp+30h] [ebp-28h]
  int v25; // [esp+34h] [ebp-24h]
  _BYTE *v26; // [esp+38h] [ebp-20h]
  _BYTE v27[13]; // [esp+40h] [ebp-18h] BYREF
  int n13; // [esp+4Dh] [ebp-Bh]
  int n11; // [esp+51h] [ebp-7h]

  IioTailFunc6DA4(buf, 0, 0x85u); /*0xffd16fb9*/
  i_1 = i; /*0xffd16fbe*/
  n4_2 = 0; /*0xffd16fc5*/
  buf_1 = buf; /*0xffd16fc7*/
  v6 = 0; /*0xffd16fc9*/
  n4_3 = 0; /*0xffd16fcb*/
  v25 = 0; /*0xffd16fcf*/
  n4 = 4; /*0xffd16fd5*/
  buf_2 = buf; /*0xffd16fd6*/
  n4_1 = 4; /*0xffd16fda*/
  do /*0xffd1719f*/
  {
    if ( ((1 << v6) & *(_DWORD *)(a2 + 5)) != 0 ) /*0xffd16fee*/
    {
      (*(void (__cdecl **)(int, char, _BYTE *))(*(_DWORD *)(i_1 + 12) + 24))(i_1, n4_3, buf_1); /*0xffd16ffd*/
      buf_1 = buf_2; /*0xffd17000*/
      n2_1 = 0; /*0xffd17004*/
      n2_3 = 0; /*0xffd17009*/
      v9 = 0; /*0xffd1700d*/
      do /*0xffd17173*/
      {
        if ( ((unsigned __int8)(1 << v9) & *buf_1) != 0 ) /*0xffd17018*/
        {
          (*(void (__cdecl **)(int, char, unsigned __int8, _BYTE *))(*(_DWORD *)(i_1 + 12) + 28))( /*0xffd1703d*/
            i_1,
            n4_3,
            n2_3,
            &buf[v9 + n4_1]);
          n3 = 0; /*0xffd17044*/
          n3_1 = 0; /*0xffd17048*/
          v23 = v9 + n4_1; /*0xffd1704f*/
          v11 = 0; /*0xffd17053*/
          v18 = 0; /*0xffd17055*/
          do /*0xffd1715f*/
          {
            i_1 = i; /*0xffd17065*/
            if ( ((unsigned __int8)(1 << v11) & buf[v23]) != 0 ) /*0xffd17069*/
            {
              v26 = &buf[3 * v23 + v11]; /*0xffd17080*/
              (*(void (__cdecl **)(int, char, unsigned __int8, char, _BYTE *))(*(_DWORD *)(i + 12) + 32))( /*0xffd1708d*/
                i,
                n4_3,
                n2_3,
                n3_1,
                v26);
              n2 = 0; /*0xffd17090*/
              v13 = 0; /*0xffd17095*/
              n2_2 = 0; /*0xffd17097*/
              v24 = 0; /*0xffd1709b*/
              do /*0xffd17147*/
              {
                if ( ((unsigned __int8)(1 << v13) & *v26) != 0 ) /*0xffd170ac*/
                {
                  (*(void (__cdecl **)(int, char, unsigned __int8, char, unsigned __int8, _BYTE *))(*(_DWORD *)(i + 12) /*0xffd170da*/
                                                                                                  + 36))(
                    i,
                    n4_3,
                    n2_3,
                    n3_1,
                    n2_2,
                    &buf[6 * v9 + 12 + 6 * n4_1 + 2 * v18 + v13]);
                  (*(void (__cdecl **)(int, char, unsigned __int8, char, unsigned __int8, _BYTE *))(*(_DWORD *)(i + 12) /*0xffd170f6*/
                                                                                                  + 44))(
                    i,
                    n4_3,
                    n2_3,
                    n3_1,
                    n2_2,
                    v27);
                  v13 = v24; /*0xffd17100*/
                  v14 = n11 == 11; /*0xffd17114*/
                  buf[6 * v9 + 60 + 6 * n4_1 + 2 * v18 + v24] = n13; /*0xffd1711c*/
                  v11 = v18; /*0xffd1711f*/
                  if ( v14 && n13 != 13 ) /*0xffd1712a*/
                    buf[132] = 1; /*0xffd1712c*/
                }
                else
                {
                  v11 = v18; /*0xffd17135*/
                }
                ++n2; /*0xffd17139*/
                ++v13; /*0xffd1713b*/
                n2_2 = n2; /*0xffd1713c*/
                v24 = v13; /*0xffd17140*/
              }
              while ( n2 < 2u ); /*0xffd17147*/
              n3 = n3_1; /*0xffd1714d*/
            }
            ++n3; /*0xffd17151*/
            ++v11; /*0xffd17153*/
            n3_1 = n3; /*0xffd17154*/
            v18 = v11; /*0xffd17158*/
          }
          while ( n3 < 3u ); /*0xffd1715f*/
          buf_1 = buf_2; /*0xffd17165*/
        }
        ++n2_1; /*0xffd17169*/
        ++v9; /*0xffd1716b*/
        n2_3 = n2_1; /*0xffd1716c*/
      }
      while ( n2_1 < 2u ); /*0xffd17173*/
      n4_2 = n4_3; /*0xffd17179*/
      n4 = n4_1; /*0xffd1717d*/
      v6 = v25; /*0xffd17181*/
    }
    ++n4_2; /*0xffd17185*/
    n4 += 2; /*0xffd17187*/
    ++v6; /*0xffd1718a*/
    n4_3 = n4_2; /*0xffd1718b*/
    ++buf_1; /*0xffd1718f*/
    v25 = v6; /*0xffd17190*/
    buf_2 = buf_1; /*0xffd17194*/
    n4_1 = n4; /*0xffd17198*/
  }
  while ( n4_2 < 4u ); /*0xffd1719f*/
  return 0; /*0xffd171a5*/
}

// Function: IioTailFunc71AF @ 0xffd171af (0x29d bytes)
// Index: 2452/2560

char __cdecl IioTailFunc71AF(int __return_address, int a2, int a3, _DWORD *a4, int a5)
{
  int v5; // edx
  int v7; // ebp
  unsigned __int8 n4_1; // al
  int n4_2; // ebx
  int n2_1; // eax
  unsigned __int8 v12; // dl
  char i; // al
  unsigned __int8 n2; // [esp+8h] [ebp-24h]
  unsigned __int8 n3; // [esp+Ch] [ebp-20h]
  unsigned __int8 n4; // [esp+10h] [ebp-1Ch]
  unsigned __int8 v17; // [esp+14h] [ebp-18h]
  int v18; // [esp+20h] [ebp-Ch]
  unsigned __int8 v19; // [esp+3Ch] [ebp+10h]
  unsigned __int8 v20; // [esp+3Ch] [ebp+10h]

  v5 = a2; /*0xffd171af*/
  v7 = *a4; /*0xffd171bc*/
  if ( *a4 != -1 && (v7 & *(_DWORD *)(a2 + 5)) != v7 ) /*0xffd171ca*/
  {
    IioTailFunc6DEB( /*0xffd171e0*/
      __return_address,
      3,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemPointTest\\MemPointTest.c",
      906,
      a5);
    return 1; /*0xffd171ea*/
  }
  n4_1 = 0; /*0xffd171f0*/
  n4 = 0; /*0xffd171f7*/
  while ( 1 ) /*0xffd171fb*/
  {
    n4_2 = n4_1; /*0xffd171fb*/
    if ( (*(_DWORD *)(v5 + 5) & (1 << n4_1) & v7) != 0 ) /*0xffd1720a*/
      break; /*0xffd1720a*/
LABEL_27:
    n4_1 = n4 + 1; /*0xffd173dc*/
    n4 = n4_1; /*0xffd173e2*/
    if ( n4_1 >= 4u ) /*0xffd173e8*/
      return 0; /*0xffd173ee*/
  }
  if ( *((_BYTE *)a4 + n4_1 + 4) == 0xFF /*0xffd17226*/
    || (*((_BYTE *)a4 + n4_1 + 4) & *(_BYTE *)(n4_1 + a3)) == *((_BYTE *)a4 + n4_1 + 4) )
  {
    n2 = 0; /*0xffd1722c*/
    while ( !IioTailFunc7BC9(__return_address, v5, a3, a4, n4, n2) ) /*0xffd1724a*/
    {
LABEL_26:
      v5 = a2; /*0xffd173c6*/
      if ( ++n2 >= 2u ) /*0xffd173d6*/
        goto LABEL_27; /*0xffd173d6*/
    }
    n2_1 = n2; /*0xffd17250*/
    v12 = *((_BYTE *)a4 + 2 * n4_2 + n2 + 8); /*0xffd1725f*/
    if ( v12 == 0xFF ) /*0xffd17269*/
      goto LABEL_13; /*0xffd17269*/
    if ( (v12 & *(_BYTE *)(n2 + 2 * n4_2 + a3 + 4)) == v12 ) /*0xffd1727a*/
    {
      n2_1 = n2; /*0xffd17280*/
LABEL_13:
      v18 = n2_1 + 2 * n4_2 + 16; /*0xffd17284*/
      if ( (v12 & *((_BYTE *)a4 + v18)) == *((_BYTE *)a4 + v18) ) /*0xffd17297*/
      {
        n3 = 0; /*0xffd1729d*/
        while ( !IioTailFunc7AC8(__return_address, a2, a3, (int)a4, n4, n2, n3) ) /*0xffd172c2*/
        {
LABEL_25:
          if ( ++n3 >= 3u ) /*0xffd173c0*/
            goto LABEL_26; /*0xffd173c0*/
        }
        v19 = *((_BYTE *)a4 + 3 * v18 + n3); /*0xffd172df*/
        if ( v19 == 0xFF || (v19 & *(_BYTE *)(n3 + 3 * (n2 + 2 * n4_2 + 4) + a3)) == v19 ) /*0xffd17301*/
        {
          if ( *((_BYTE *)a4 + 6 * n4_2 + 3 * n2 + n3 + 24) >= 2u ) /*0xffd17312*/
          {
            IioTailFunc6DEB( /*0xffd1743f*/
              __return_address,
              3,
              "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemPointTest\\MemPointTest.c",
              1010,
              a5);
          }
          else
          {
            v17 = 0; /*0xffd17318*/
            for ( i = IioTailFunc7C60(__return_address, a2, a3, a4, n4, n2, n3, 0); /*0xffd1731d*/
                  ;
                  i = IioTailFunc7C60(__return_address, a2, a3, a4, n4, n2, n3, v17) )
            {
              if ( i ) /*0xffd17344*/
              {
                v7 = *a4; /*0xffd17357*/
                v20 = *((_BYTE *)&a4[3 * n4_2 + 18] + 6 * n2 + 2 * n3 + v17); /*0xffd17372*/
                if ( v20 != 0xFF && v20 > (1 << *(_BYTE *)(v17 + 2 * (n3 + 3 * (n2 + 6 + 2 * n4_2)) + a3)) - 1 ) /*0xffd173a0*/
                  break; /*0xffd173a0*/
              }
              if ( ++v17 >= 2u ) /*0xffd173ae*/
                goto LABEL_25; /*0xffd173ae*/
            }
            IioTailFunc6DEB( /*0xffd1742a*/
              __return_address,
              3,
              "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemPointTest\\MemPointTest.c",
              1060,
              a5);
          }
        }
        else
        {
          IioTailFunc6DEB( /*0xffd17417*/
            __return_address,
            3,
            "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemPointTest\\MemPointTest.c",
            995,
            a5);
        }
      }
      else
      {
        IioTailFunc6DEB( /*0xffd1744a*/
          __return_address,
          3,
          "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemPointTest\\MemPointTest.c",
          971,
          a5);
      }
      return 1; /*0xffd1742a*/
    }
    IioTailFunc6DEB( /*0xffd1740c*/
      __return_address,
      3,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemPointTest\\MemPointTest.c",
      955,
      a5);
  }
  else
  {
    IioTailFunc6DEB( /*0xffd17401*/
      __return_address,
      3,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemPointTest\\MemPointTest.c",
      930,
      a5);
  }
  return 1; /*0xffd173f2*/
}

// Function: IioTailFunc744C @ 0xffd1744c (0x9e bytes)
// Index: 2453/2560

char __cdecl IioTailFunc744C(
        int a1,
        int a2,
        int a3,
        int a4,
        char n4,
        unsigned __int8 i,
        unsigned __int8 j,
        _BYTE *a8,
        char a9,
        _BYTE *buf,
        void *buf_1)
{
  int v11; // ebp
  int v12; // eax
  unsigned __int8 k; // bl
  int v15; // [esp+10h] [ebp-4h]

  v15 = 0; /*0xffd1745b*/
  IioTailFunc6DA4(buf, 0, 2u); /*0xffd1745f*/
  IioTailFunc6DA4(buf_1, 0, 2u); /*0xffd1746b*/
  v11 = IioTailFunc75CF(a1, a3, a4, n4, i, j, 65); /*0xffd1749a*/
  v12 = 0; /*0xffd1749c*/
  for ( k = 0; k < 0x10u; ++k ) /*0xffd1749e*/
  {
    if ( ((1 << k) & v11) != 0 ) /*0xffd174a9*/
    {
      LOBYTE(v12) = v12 + 1; /*0xffd174ab*/
      v15 = v12; /*0xffd174ad*/
    }
    if ( a9 ) /*0xffd174b3*/
    {
      if ( (unsigned __int8)v12 == (unsigned __int8)*a8 + 1 ) /*0xffd174be*/
      {
        *buf = k >> 3; /*0xffd174de*/
        buf[1] = k - 8 * (k >> 3); /*0xffd174e5*/
        return 0; /*0xffd174e8*/
      }
      v12 = v15; /*0xffd174c0*/
    }
  }
  if ( !a9 ) /*0xffd174cd*/
    *a8 = v12; /*0xffd174cf*/
  return 0; /*0xffd174d1*/
}

// Function: IioTailFunc74EA @ 0xffd174ea (0x7d bytes)
// Index: 2454/2560

char __cdecl IioTailFunc74EA(int __return_address, int a2, int a3, int a4, int a5)
{
  char v5; // bl
  unsigned __int8 i; // [esp+4h] [ebp-Ch]
  unsigned __int8 v8; // [esp+8h] [ebp-8h]
  unsigned __int8 j; // [esp+Ch] [ebp-4h]

  v5 = 0; /*0xffd174f1*/
  for ( i = 0; i < 4u; ++i ) /*0xffd174f3*/
  {
    v8 = 0; /*0xffd174f6*/
    while ( 2 ) /*0xffd174f9*/
    {
      for ( j = 0; j < 3u; ++j ) /*0xffd174f9*/
      {
        if ( IioTailFunc7AC8(__return_address, a2, a3, a4, i, v8, j) && (*(_BYTE *)(j + a5 + 3 * (v8 + 2 * i)) & 1) != 0 ) /*0xffd1753a*/
          return 1; /*0xffd1755e*/
      }
      if ( ++v8 < 2u ) /*0xffd17550*/
        continue; /*0xffd17550*/
      break;
    }
  }
  return v5; /*0xffd17562*/
}

// Function: IioTailFunc7567 @ 0xffd17567 (0x38 bytes)
// Index: 2455/2560

char __cdecl IioTailFunc7567(int a1, int a2, int a3, int a4, _BYTE *buf, unsigned __int8 n2, unsigned __int8 *j)
{
  _BYTE bufa[4]; // [esp+0h] [ebp-Ch] BYREF
  _BYTE buf_1[7]; // [esp+4h] [ebp-8h] BYREF
  char v10; // [esp+Bh] [ebp-1h] BYREF

  IioTailFunc744C(a1, a2, a3, a4, (char)buf, n2, (unsigned __int8)j, &v10, 0, bufa, buf_1); /*0xffd17590*/
  return v10; /*0xffd1759b*/
}

// Function: IioTailFunc759F @ 0xffd1759f (0x30 bytes)
// Index: 2456/2560

char __cdecl IioTailFunc759F(
        int a1,
        int a2,
        int a3,
        int a4,
        char n4,
        unsigned __int8 i,
        unsigned __int8 j,
        int a8,
        _BYTE *buf,
        void *buf_1)
{
  IioTailFunc744C(a1, a2, a3, a4, n4, i, j, &a8, 1, buf, buf_1); /*0xffd175c3*/
  return 0; /*0xffd175cd*/
}

// Function: IioTailFunc75CF @ 0xffd175cf (0xf5 bytes)
// Index: 2457/2560

int __cdecl IioTailFunc75CF(int a1, int a2, int a3, char n4, unsigned __int8 i, unsigned __int8 j, char n65)
{
  int j_1; // ebx
  int i_1; // edi
  int v9; // eax
  int ia_1; // edx
  int ja_1; // ecx
  int v12; // eax
  int v13; // edx
  int result; // eax
  bool v15; // zf
  int v16; // [esp+10h] [ebp-Ch]
  int n2; // [esp+14h] [ebp-8h]
  int v18; // [esp+18h] [ebp-4h]
  int ia; // [esp+30h] [ebp+14h]
  int ja; // [esp+34h] [ebp+18h]

  j_1 = j; /*0xffd175d3*/
  i_1 = i; /*0xffd175eb*/
  v16 = 0; /*0xffd175f0*/
  v9 = (unsigned __int8)n4 + 8; /*0xffd175f4*/
  if ( n65 != 65 ) /*0xffd175f7*/
    v9 = (unsigned __int8)n4 + 20; /*0xffd175f9*/
  n2 = 2; /*0xffd17606*/
  ia_1 = 0; /*0xffd17621*/
  ja_1 = 0; /*0xffd17626*/
  v18 = (unsigned __int8)(*(_BYTE *)(j + 3 * (i + 2 * ((unsigned __int8)n4 + 2)) + a2) /*0xffd17628*/
                        & *(_BYTE *)(j + 3 * (i + 2 * v9) + a3));
  ja = 0; /*0xffd1762c*/
  ia = 0; /*0xffd17630*/
  do /*0xffd176b6*/
  {
    if ( ((1 << ja_1) & v18) != 0 ) /*0xffd17641*/
    {
      v12 = (unsigned __int8)n4 + 6; /*0xffd17648*/
      if ( n65 != 65 ) /*0xffd1764b*/
        v12 = (unsigned __int8)n4 + 12; /*0xffd1764d*/
      v13 = (unsigned __int8)(*(_BYTE *)(ja_1 + 2 * (j_1 + 3 * (i_1 + 2 * v12)) + a3) /*0xffd1768f*/
                            & ((1 << *(_BYTE *)(ja_1 + 2 * (j_1 + 3 * (i_1 + 2 * ((unsigned __int8)n4 + 3))) + a2)) - 1)) << ia;
      ja_1 = ja; /*0xffd17691*/
      result = v13 | v16; /*0xffd17695*/
      ia_1 = ia; /*0xffd17697*/
      v16 = result; /*0xffd1769b*/
    }
    else
    {
      result = v16; /*0xffd176a1*/
    }
    ++ja_1; /*0xffd176a5*/
    ia_1 += 8; /*0xffd176a6*/
    v15 = n2-- == 1; /*0xffd176a9*/
    ja = ja_1; /*0xffd176ae*/
    ia = ia_1; /*0xffd176b2*/
  }
  while ( !v15 ); /*0xffd176b6*/
  return result; /*0xffd176bc*/
}

// Function: IioTailFunc76C4 @ 0xffd176c4 (0xf1 bytes)
// Index: 2458/2560

char __cdecl IioTailFunc76C4(int a1, int a2, int a3, int a4, int a5, int a6, _BYTE *buf, unsigned __int8 *a8)
{
  _BYTE *buf_1; // edi
  unsigned __int8 *v9; // esi
  int v10; // ebp
  unsigned __int8 n2_1; // bh
  unsigned __int8 n3; // bl
  unsigned __int8 v13; // al
  int v15; // [esp+10h] [ebp-Ch]
  unsigned __int8 n2; // [esp+14h] [ebp-8h]
  int v17; // [esp+18h] [ebp-4h]

  buf_1 = buf; /*0xffd176cb*/
  if ( buf ) /*0xffd176d1*/
    IioTailFunc6DA4(buf, 0, 0x18u); /*0xffd176d8*/
  v9 = a8; /*0xffd176e0*/
  if ( a8 ) /*0xffd176e6*/
    *a8 = 0; /*0xffd176e8*/
  v10 = 0; /*0xffd176ed*/
  LOBYTE(buf) = 0; /*0xffd176ef*/
  do /*0xffd177a5*/
  {
    n2_1 = 0; /*0xffd176f3*/
    v17 = 0; /*0xffd176f5*/
    n2 = 0; /*0xffd176fa*/
    do /*0xffd1778f*/
    {
      n3 = 0; /*0xffd176fe*/
      v15 = 0; /*0xffd17700*/
      LOBYTE(a8) = 0; /*0xffd17705*/
      do /*0xffd17780*/
      {
        if ( IioTailFunc7AC8(a1, a2, a3, a4, (unsigned __int8)buf, n2, (char)a8) ) /*0xffd17725*/
        {
          v13 = IioTailFunc7567(a1, a2, a3, a4, buf, n2, a8); /*0xffd1774d*/
          if ( buf_1 ) /*0xffd17757*/
            buf_1[3 * v10 + 3 * v17 + v15] = v13; /*0xffd17766*/
          if ( v9 && v13 > *v9 ) /*0xffd1776f*/
            *v9 = v13; /*0xffd17771*/
        }
        ++n3; /*0xffd17773*/
        ++v15; /*0xffd17775*/
        LOBYTE(a8) = n3; /*0xffd17779*/
      }
      while ( n3 < 3u ); /*0xffd17780*/
      ++n2_1; /*0xffd17782*/
      ++v17; /*0xffd17784*/
      n2 = n2_1; /*0xffd17788*/
    }
    while ( n2_1 < 2u ); /*0xffd1778f*/
    v10 += 2; /*0xffd17799*/
    LOBYTE(buf) = (_BYTE)buf + 1; /*0xffd1779e*/
  }
  while ( (unsigned __int8)buf < 4u ); /*0xffd177a5*/
  return 0; /*0xffd177ab*/
}

// Function: IioTailFunc77B5 @ 0xffd177b5 (0x83 bytes)
// Index: 2459/2560

char __cdecl IioTailFunc77B5(int a1, int a2, int a3, int a4, unsigned __int8 a5, char i, char j)
{
  char v7; // bh
  unsigned __int8 v8; // bl
  unsigned __int8 v10; // [esp+4h] [ebp-Ch]
  unsigned __int8 k; // [esp+8h] [ebp-8h]
  char m; // [esp+Ch] [ebp-4h]

  v7 = 0; /*0xffd177bc*/
  v8 = 0; /*0xffd177be*/
  v10 = 0; /*0xffd177c0*/
  do /*0xffd1782d*/
  {
    for ( k = 0; k < 2u; ++k ) /*0xffd177c3*/
    {
      for ( m = 0; (unsigned __int8)m < 3u; ++m ) /*0xffd177c7*/
      {
        if ( IioTailFunc7AC8(a1, a2, a3, a4, v10, k, m) ) /*0xffd177e0*/
          ++v7; /*0xffd177ec*/
        if ( v8 == a5 && k == i && m == j ) /*0xffd17805*/
          break; /*0xffd17805*/
      }
      if ( v8 == a5 && k == i ) /*0xffd17817*/
        break; /*0xffd17817*/
    }
    if ( v8 == a5 ) /*0xffd17824*/
      break; /*0xffd17824*/
    v10 = ++v8; /*0xffd17828*/
  }
  while ( v8 <= a5 ); /*0xffd1782d*/
  return v7 - 1; /*0xffd17833*/
}

// Function: IioTailFunc7838 @ 0xffd17838 (0x127 bytes)
// Index: 2460/2560

char __cdecl IioTailFunc7838(int __return_address, int a2, int a3, int *a4)
{
  char v4; // dl
  int *v5; // edi
  unsigned __int8 v6; // bl
  int v7; // ebp
  int v8; // esi
  unsigned __int8 v9; // dh
  unsigned __int8 v10; // bh
  unsigned __int8 n2; // ch
  int n2_1; // ecx
  unsigned __int8 n2_2; // [esp+13h] [ebp-1Dh]
  int v15; // [esp+1Ch] [ebp-14h]
  char *v16; // [esp+20h] [ebp-10h]
  int v17; // [esp+24h] [ebp-Ch]

  v4 = 0; /*0xffd1783b*/
  v5 = a4; /*0xffd17841*/
  v6 = 0; /*0xffd17845*/
  v7 = *a4; /*0xffd17847*/
  while ( 1 ) /*0xffd1784b*/
  {
    v8 = v6; /*0xffd1784b*/
    if ( ((1 << v6) & v7) != 0 ) /*0xffd17859*/
      break; /*0xffd17859*/
LABEL_17:
    if ( ++v6 >= 4u ) /*0xffd1794f*/
      return v4; /*0xffd1794f*/
  }
  v9 = 0; /*0xffd17862*/
  v16 = (char *)v5 + 6 * v6; /*0xffd17866*/
  v15 = *((unsigned __int8 *)v5 + v6 + 4); /*0xffd1786f*/
  while ( ((1 << v9) & v15) == 0 ) /*0xffd17881*/
  {
LABEL_15:
    if ( ++v9 >= 2u ) /*0xffd1793e*/
    {
      v7 = *v5; /*0xffd17948*/
      goto LABEL_17; /*0xffd17948*/
    }
  }
  v10 = 0; /*0xffd1788a*/
  v17 = *((unsigned __int8 *)v5 + 2 * v8 + v9 + 16); /*0xffd1789e*/
  while ( 1 ) /*0xffd178a7*/
  {
    if ( ((1 << v10) & v17) != 0 ) /*0xffd178b4*/
    {
      n2 = 0; /*0xffd178ba*/
      n2_2 = 0; /*0xffd178c4*/
      v8 = v6; /*0xffd178d4*/
      while ( 1 ) /*0xffd178e4*/
      {
        v5 = a4; /*0xffd178e4*/
        n2_1 = n2; /*0xffd178eb*/
        if ( ((1 << n2_1) & ((unsigned __int8)v16[3 * v9 + 48 + v10] | (unsigned __int8)v16[3 * v9 + 120 + v10])) != 0 /*0xffd17911*/
          && *(_BYTE *)(n2_1 + 2 * (v10 + 3 * (v9 + 2 * v6 + 14)) + a3) == 13 )
        {
          break; /*0xffd17911*/
        }
        n2 = n2_2 + 1; /*0xffd17917*/
        n2_2 = n2; /*0xffd17919*/
        if ( n2 >= 2u ) /*0xffd17920*/
          goto LABEL_13; /*0xffd17920*/
      }
      v4 = 1; /*0xffd17924*/
LABEL_13:
      if ( v4 ) /*0xffd17928*/
        return v4; /*0xffd17955*/
    }
    if ( ++v10 >= 3u ) /*0xffd1792f*/
      goto LABEL_15; /*0xffd1792f*/
  }
}

// Function: IioTailFunc795F @ 0xffd1795f (0x148 bytes)
// Index: 2461/2560

unsigned __int8 __cdecl IioTailFunc795F(
        int __return_address,
        int a2,
        int a3,
        _DWORD *a4,
        int a5,
        unsigned __int8 n3,
        _WORD *a7)
{
  unsigned __int8 n2_2; // bl
  unsigned __int8 n3_2; // bh
  unsigned __int8 n3_1; // al
  int n104; // ecx
  unsigned __int8 n2_1; // al
  unsigned __int8 n3_3; // [esp+13h] [ebp-2Dh]
  _BYTE v14[4]; // [esp+14h] [ebp-2Ch] BYREF
  _BYTE v15[4]; // [esp+18h] [ebp-28h] BYREF
  _BYTE v16[4]; // [esp+1Ch] [ebp-24h] BYREF
  char v17[4]; // [esp+20h] [ebp-20h] BYREF
  char v18[4]; // [esp+24h] [ebp-1Ch]
  unsigned __int8 n4[4]; // [esp+28h] [ebp-18h]
  unsigned __int8 n3a[4]; // [esp+2Ch] [ebp-14h]
  unsigned __int8 n2[4]; // [esp+30h] [ebp-10h]
  _BYTE buf[12]; // [esp+34h] [ebp-Ch] BYREF

  IioTailFunc6DA4(buf, 255, 9u); /*0xffd17972*/
  n4[0] = 0; /*0xffd17988*/
  do /*0xffd17a99*/
  {
    n2_2 = 0; /*0xffd1798e*/
    *a7 = 0; /*0xffd17990*/
    n2[0] = 0; /*0xffd17993*/
    do /*0xffd17a83*/
    {
      n3_2 = 0; /*0xffd17997*/
      n3a[0] = 0; /*0xffd17999*/
      do /*0xffd17a74*/
      {
        v18[0] = 0; /*0xffd1799d*/
        do /*0xffd17a65*/
        {
          if ( IioTailFunc7C60(__return_address, a2, a3, a4, n4[0], n2[0], n3a[0], v18[0]) ) /*0xffd179bf*/
          {
            n3_1 = 0; /*0xffd179cf*/
            n3_3 = 0; /*0xffd179d1*/
            if ( n3 ) /*0xffd179d9*/
            {
              while ( 1 ) /*0xffd179de*/
              {
                n104 = *(_DWORD *)(a5 + 4 * n3_1); /*0xffd179de*/
                if ( n104 != 104 /*0xffd17a22*/
                  && (*(int (__cdecl **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _BYTE *, int, int, char *, _BYTE *, _BYTE *, _BYTE *))(*(_DWORD *)(__return_address + 12) + 72))(
                       __return_address,
                       *(_DWORD *)n4,
                       *(_DWORD *)n2,
                       *(_DWORD *)n3a,
                       *(_DWORD *)v18,
                       0,
                       buf,
                       1,
                       n104,
                       v17,
                       v16,
                       v15,
                       v14) != 4 )
                {
                  break; /*0xffd17a22*/
                }
                n3_1 = n3_3 + 1; /*0xffd17a28*/
                n3_3 = n3_1; /*0xffd17a2a*/
                if ( n3_1 >= n3 ) /*0xffd17a32*/
                  goto LABEL_12; /*0xffd17a32*/
              }
              *a7 |= 1 << ((v18[0] + 2 * (n3_2 + 3 * n2_2)) & 0xF); /*0xffd17a56*/
            }
          }
LABEL_12:
          n2_1 = v18[0] + 1; /*0xffd17a59*/
          v18[0] = n2_1; /*0xffd17a5f*/
        }
        while ( n2_1 < 2u ); /*0xffd17a65*/
        n3a[0] = ++n3_2; /*0xffd17a6d*/
      }
      while ( n3_2 < 3u ); /*0xffd17a74*/
      n2[0] = ++n2_2; /*0xffd17a7c*/
    }
    while ( n2_2 < 2u ); /*0xffd17a83*/
    ++a7; /*0xffd17a8d*/
    ++n4[0]; /*0xffd17a92*/
  }
  while ( n4[0] < 4u ); /*0xffd17a99*/
  return n2_1; /*0xffd17a9f*/
}

// Function: IioTailFunc7AA7 @ 0xffd17aa7 (0x21 bytes)
// Index: 2462/2560

char __cdecl IioTailFunc7AA7(int a1)
{
  char v1; // cl
  unsigned __int8 v2; // dl

  v1 = 0; /*0xffd17aa7*/
  v2 = 0; /*0xffd17aae*/
  while ( !*(_WORD *)(a1 + 2 * v2) ) /*0xffd17ab7*/
  {
    if ( ++v2 >= 4u ) /*0xffd17abe*/
      return v1; /*0xffd17abe*/
  }
  return 1; /*0xffd17ac6*/
}

// Function: IioTailFunc7AC8 @ 0xffd17ac8 (0x5d bytes)
// Index: 2463/2560

char __cdecl IioTailFunc7AC8(int a1, int a2, int a3, int a4, unsigned __int8 a5, unsigned __int8 a6, char a7)
{
  char v7; // bh

  v7 = IioTailFunc7BC9(a1, a2, a3, a4, a5, a6); /*0xffd17aea*/
  if ( v7 )
    return (*(_BYTE *)(a6 + 2 * a5 + a3 + 4) & (unsigned __int8)(*(_BYTE *)(a6 + 2 * a5 + a4 + 8) & (1 << a7))) != 0
         ? v7
         : 0;
  return v7; /*0xffd17b1f*/
}

// Function: IioTailFunc7B25 @ 0xffd17b25 (0xa4 bytes)
// Index: 2464/2560

char __cdecl IioTailFunc7B25(
        int a1,
        int a2,
        int a3,
        int a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        unsigned __int8 a7)
{
  char v7; // bl
  int v8; // ecx
  unsigned __int8 v9; // dh
  unsigned __int8 n9; // dl

  v7 = IioTailFunc7AC8(a1, a2, a3, a4, a5, a6, a7); /*0xffd17b4c*/
  if ( v7 ) /*0xffd17b53*/
  {
    v8 = a7; /*0xffd17b63*/
    v7 &= -((*(_BYTE *)(a6 + 2 * a5 + a4 + 16) & (unsigned __int8)(1 << a7)) != 0); /*0xffd17b86*/
    if ( v7 ) /*0xffd17b88*/
    {
      v7 = 0; /*0xffd17b8d*/
      v9 = *(_BYTE *)(a2 + 9) >> 3; /*0xffd17b8f*/
      n9 = 0; /*0xffd17b92*/
      if ( v9 ) /*0xffd17b96*/
      {
        while ( n9 < 9u ) /*0xffd17b9b*/
        {
          if ( *(_BYTE *)(n9 + a4 + 9 * (v8 + 3 * a6) + 192) ) /*0xffd17baa*/
            return 1; /*0xffd17bbf*/
          v8 = a7; /*0xffd17bb3*/
          if ( ++n9 >= v9 ) /*0xffd17bbb*/
            return v7; /*0xffd17bbb*/
        }
      }
    }
  }
  return v7; /*0xffd17bc2*/
}

// Function: IioTailFunc7BC9 @ 0xffd17bc9 (0x3f bytes)
// Index: 2465/2560

char __cdecl IioTailFunc7BC9(int a1, int a2, int a3, _DWORD *a4, unsigned __int8 a5, char a6)
{
  int v6; // edx
  char result; // al

  v6 = *a4 & *(_DWORD *)(a2 + 5) & (1 << a5); /*0xffd17be5*/
  result = v6 != 0; /*0xffd17be7*/
  if ( v6 )
    return (*(_BYTE *)(a5 + a3) & (unsigned __int8)(*((_BYTE *)a4 + a5 + 4) & (1 << a6))) != 0 ? result : 0;
  return result; /*0xffd17c03*/
}

// Function: IioTailFunc7C08 @ 0xffd17c08 (0x58 bytes)
// Index: 2466/2560

char __cdecl IioTailFunc7C08(int __return_address, int a2, int a3, _DWORD *a4, unsigned __int8 n4, char a6)
{
  char result; // al
  unsigned __int8 n3; // bl
  unsigned __int8 v8; // [esp+0h] [ebp-4h]

  result = IioTailFunc7BC9(__return_address, a2, a3, a4, n4, a6); /*0xffd17c1e*/
  if ( result ) /*0xffd17c28*/
  {
    n3 = 0; /*0xffd17c2b*/
    v8 = 0; /*0xffd17c2d*/
    do /*0xffd17c59*/
    {
      result = IioTailFunc7B25(__return_address, a2, a3, (int)a4, n4, a6, v8); /*0xffd17c45*/
      if ( result ) /*0xffd17c4f*/
        break; /*0xffd17c4f*/
      v8 = ++n3; /*0xffd17c53*/
    }
    while ( n3 < 3u ); /*0xffd17c59*/
  }
  return result; /*0xffd17c5e*/
}

// Function: IioTailFunc7C60 @ 0xffd17c60 (0x7b bytes)
// Index: 2467/2560

char __cdecl IioTailFunc7C60(
        int __return_address,
        int a2,
        int a3,
        _DWORD *a4,
        unsigned __int8 n4,
        unsigned __int8 n2,
        unsigned __int8 n3,
        char a8)
{
  char v8; // bl

  v8 = IioTailFunc7AC8(__return_address, a2, a3, (int)a4, n4, n2, n3); /*0xffd17c84*/
  if ( v8 )
    return ((unsigned __int8)(1 << a8)
          & (unsigned __int8)(*(_BYTE *)(n3 + 3 * (n2 + 2 * (n4 + 2)) + a3) & *((_BYTE *)a4 + 6 * n4 + 3 * n2 + n3 + 48))) != 0
         ? v8
         : 0;
  return v8; /*0xffd17cd6*/
}

// Function: IioTailFunc7CDB @ 0xffd17cdb (0xa8 bytes)
// Index: 2468/2560

char __cdecl IioTailFunc7CDB(
        int __return_address,
        int a2,
        int a3,
        _DWORD *a4,
        unsigned __int8 n4,
        unsigned __int8 n2,
        unsigned __int8 n3,
        unsigned __int8 a8,
        char a9)
{
  char result; // al

  result = IioTailFunc7C60(__return_address, a2, a3, a4, n4, n2, n3, a8); /*0xffd17cfe*/
  if ( result )
    return ((unsigned __int8)(1 << a9)
          & (unsigned __int8)(*((_BYTE *)&a4[3 * n4 + 18] + 6 * n2 + 2 * n3 + a8)
                            & ((1 << *(_BYTE *)(a8 + 2 * (n3 + 3 * (n2 + 2 * (n4 + 3))) + a3)) - 1))) != 0
         ? result
         : 0;
  return result; /*0xffd17d80*/
}

// Function: IioTailFunc7D83 @ 0xffd17d83 (0x1a bytes)
// Index: 2469/2560

bool __cdecl IioTailFunc7D83(int a1, int a2, _DWORD *a3, char a4)
{
  return (*(_DWORD *)(a2 + 5) & (1 << a4) & *a3) != 0; /*0xffd17d9c*/
}

// Function: IioTailFunc7D9D @ 0xffd17d9d (0x52 bytes)
// Index: 2470/2560

char __cdecl IioTailFunc7D9D(int __return_address, int a2, int a3, _DWORD *a4, unsigned __int8 n4)
{
  int v6; // eax
  char v7; // cl
  unsigned __int8 n2; // bl
  char v10; // [esp+14h] [ebp+Ch]

  v6 = *a4 & *(_DWORD *)(a2 + 5) & (1 << n4); /*0xffd17db3*/
  v7 = v6 != 0; /*0xffd17db5*/
  if ( v6 ) /*0xffd17dba*/
  {
    n2 = 0; /*0xffd17dbd*/
    v10 = 0; /*0xffd17dbf*/
    do /*0xffd17de6*/
    {
      v7 = IioTailFunc7C08(__return_address, a2, a3, a4, n4, v10); /*0xffd17dd5*/
      if ( v7 ) /*0xffd17ddc*/
        break; /*0xffd17ddc*/
      v10 = ++n2; /*0xffd17de0*/
    }
    while ( n2 < 2u ); /*0xffd17de6*/
  }
  return v7; /*0xffd17de9*/
}

// Function: IioTailFunc7DEF @ 0xffd17def (0x1d1 bytes)
// Index: 2471/2560

char __cdecl IioTailFunc7DEF(int __return_address, int a2, int a3, int a4, int *a5)
{
  int v5; // esi
  int n16; // ebp
  int v7; // eax
  int v8; // edi
  int v9; // ebx
  int v10; // ecx
  int v11; // eax
  int v12; // ecx
  int v13; // ebx
  char v14; // al
  int v15; // eax
  bool v16; // zf
  char v18; // [esp+11h] [ebp-2Bh]
  char v19; // [esp+12h] [ebp-2Ah]
  char v20; // [esp+13h] [ebp-29h]
  int v21; // [esp+14h] [ebp-28h]
  int v22; // [esp+18h] [ebp-24h]
  char v23; // [esp+1Ch] [ebp-20h]
  char v24; // [esp+20h] [ebp-1Ch]
  int v25; // [esp+24h] [ebp-18h]
  int n2_1; // [esp+28h] [ebp-14h]
  int n3; // [esp+2Ch] [ebp-10h]
  int n2; // [esp+30h] [ebp-Ch]
  int v29; // [esp+34h] [ebp-8h]
  int n4; // [esp+38h] [ebp-4h]

  v5 = 0; /*0xffd17dfa*/
  n4 = 4; /*0xffd17dfc*/
  v29 = 0; /*0xffd17e06*/
  n16 = 16; /*0xffd17e0a*/
  do /*0xffd17fb2*/
  {
    v7 = 1 << v5; /*0xffd17e10*/
    if ( ((1 << v5) & *a5) == 0 ) /*0xffd17e14*/
      goto LABEL_32; /*0xffd17e14*/
    v8 = 0; /*0xffd17e1a*/
    v20 = 0; /*0xffd17e1c*/
    v24 = 0; /*0xffd17e21*/
    n2 = 2; /*0xffd17e25*/
    do /*0xffd17f83*/
    {
      v7 = 1 << v8; /*0xffd17e32*/
      if ( ((unsigned __int8)(1 << v8) & *((_BYTE *)a5 + v5 + 4)) == 0 ) /*0xffd17e38*/
        goto LABEL_27; /*0xffd17e38*/
      n3 = 3; /*0xffd17e40*/
      v19 = 0; /*0xffd17e48*/
      v9 = v8 + n16; /*0xffd17e4c*/
      v10 = 0; /*0xffd17e53*/
      v21 = 0; /*0xffd17e55*/
      v23 = v24; /*0xffd17e59*/
      do /*0xffd17f48*/
      {
        if ( ((unsigned __int8)(1 << v10) & *((_BYTE *)a5 + v9 - 8)) == 0 ) /*0xffd17e66*/
          goto LABEL_22; /*0xffd17e66*/
        v18 = 0; /*0xffd17e76*/
        n2_1 = 2; /*0xffd17e7b*/
        v11 = v10 + 3 * (v8 + n16); /*0xffd17e83*/
        v12 = 0; /*0xffd17e85*/
        v25 = v11; /*0xffd17e87*/
        v22 = 0; /*0xffd17e8b*/
        LOBYTE(v13) = *((_BYTE *)a5 + v11); /*0xffd17e8f*/
        do /*0xffd17f04*/
        {
          if ( ((unsigned __int8)(1 << v12) & (unsigned __int8)v13) != 0 ) /*0xffd17e99*/
          {
            if ( ((unsigned __int16)(1 << (v23 + v12)) & *(_WORD *)(a4 + n16 - 16)) != 0 ) /*0xffd17eae*/
            {
              v12 = v22; /*0xffd17eb0*/
              v14 = 1; /*0xffd17eb4*/
              v20 = 1; /*0xffd17eb6*/
              v19 = 1; /*0xffd17ebb*/
              v18 = 1; /*0xffd17ec0*/
              goto LABEL_16; /*0xffd17ec4*/
            }
            if ( (_BYTE)v13 == 0xFF ) /*0xffd17ec9*/
            {
              LOBYTE(v13) = *(_BYTE *)(v21 + 3 * (v8 + n16 - 12) + a3); /*0xffd17ed9*/
              v15 = v25; /*0xffd17edc*/
              *((_BYTE *)a5 + v25) = v13; /*0xffd17ee0*/
            }
            else
            {
              v15 = v25; /*0xffd17ee5*/
            }
            v12 = v22; /*0xffd17ee9*/
            v13 = (unsigned __int8)v13 & ~(1 << v22); /*0xffd17ef0*/
            *((_BYTE *)a5 + v15) = v13; /*0xffd17ef3*/
          }
          v14 = v18; /*0xffd17ef6*/
LABEL_16:
          ++v12; /*0xffd17efa*/
          v16 = n2_1-- == 1; /*0xffd17efb*/
          v22 = v12; /*0xffd17f00*/
        }
        while ( !v16 ); /*0xffd17f04*/
        v9 = v8 + n16; /*0xffd17f06*/
        if ( v14 ) /*0xffd17f0b*/
        {
          v10 = v21; /*0xffd17f35*/
        }
        else
        {
          if ( *((_BYTE *)a5 + v9 - 8) == 0xFF ) /*0xffd17f12*/
            *((_BYTE *)a5 + v9 - 8) = *(_BYTE *)(v8 + n16 + a3 - 12); /*0xffd17f1f*/
          v10 = v21; /*0xffd17f28*/
          *((_BYTE *)a5 + v9 - 8) &= ~(1 << v21); /*0xffd17f2f*/
        }
LABEL_22:
        v23 += 2; /*0xffd17f39*/
        ++v10; /*0xffd17f3e*/
        v16 = n3-- == 1; /*0xffd17f3f*/
        v21 = v10; /*0xffd17f44*/
      }
      while ( !v16 ); /*0xffd17f48*/
      LOBYTE(v7) = v19; /*0xffd17f4e*/
      v5 = v29; /*0xffd17f52*/
      if ( !v19 ) /*0xffd17f58*/
      {
        if ( *((_BYTE *)a5 + v29 + 4) == 0xFF ) /*0xffd17f5f*/
          *((_BYTE *)a5 + v29 + 4) = *(_BYTE *)(v29 + a3); /*0xffd17f68*/
        v7 = *((unsigned __int8 *)a5 + v29 + 4) & ~(1 << v8); /*0xffd17f71*/
        *((_BYTE *)a5 + v29 + 4) = v7; /*0xffd17f74*/
      }
LABEL_27:
      v24 += 6; /*0xffd17f78*/
      ++v8; /*0xffd17f7d*/
      --n2; /*0xffd17f7e*/
    }
    while ( n2 ); /*0xffd17f83*/
    if ( !v20 ) /*0xffd17f8e*/
    {
      if ( *a5 == -1 ) /*0xffd17f93*/
        *a5 = *(_DWORD *)(a2 + 5); /*0xffd17f9c*/
      v7 = *a5 & ~(1 << v5); /*0xffd17fa0*/
      *a5 = v7; /*0xffd17fa3*/
    }
LABEL_32:
    ++v5; /*0xffd17fa5*/
    n16 += 2; /*0xffd17fa6*/
    v16 = n4-- == 1; /*0xffd17fa9*/
    v29 = v5; /*0xffd17fae*/
  }
  while ( !v16 ); /*0xffd17fb2*/
  return v7; /*0xffd17fb8*/
}

// Function: IioTailX_FFD17FC0 @ 0xffd17fc0 (0x1ad bytes)
// Index: 2472/2560

char __cdecl IioTailX_FFD17FC0(int i, int a2, int a3, int *a4)
{
  int *v4; // edx
  int v5; // esi
  int n16; // edi
  int v7; // eax
  int v8; // edi
  int v9; // ebp
  int v10; // ebx
  int v11; // ecx
  int v12; // ebx
  char v13; // al
  int v14; // eax
  bool v15; // zf
  char v17; // [esp+11h] [ebp-1Fh]
  char v18; // [esp+12h] [ebp-1Eh]
  char v19; // [esp+13h] [ebp-1Dh]
  int n16_1; // [esp+14h] [ebp-1Ch]
  int v21; // [esp+18h] [ebp-18h]
  int n2_1; // [esp+1Ch] [ebp-14h]
  int n3; // [esp+20h] [ebp-10h]
  int n2; // [esp+24h] [ebp-Ch]
  int v25; // [esp+28h] [ebp-8h]
  int n4; // [esp+2Ch] [ebp-4h]

  v4 = a4; /*0xffd17fc3*/
  v5 = 0; /*0xffd17fcd*/
  n4 = 4; /*0xffd17fcf*/
  n16 = 16; /*0xffd17fd7*/
  v25 = 0; /*0xffd17fd8*/
  n16_1 = 16; /*0xffd17fdc*/
  do /*0xffd1815f*/
  {
    v7 = 1 << v5; /*0xffd17fe5*/
    if ( ((1 << v5) & *v4) == 0 ) /*0xffd17fe9*/
      goto LABEL_32; /*0xffd17fe9*/
    v19 = 0; /*0xffd17fef*/
    v8 = 0; /*0xffd17ff4*/
    n2 = 2; /*0xffd17ff6*/
    do /*0xffd18128*/
    {
      v7 = 1 << v8; /*0xffd18003*/
      if ( ((unsigned __int8)(1 << v8) & *((_BYTE *)v4 + v5 + 4)) == 0 ) /*0xffd18009*/
        goto LABEL_26; /*0xffd18009*/
      v18 = 0; /*0xffd18015*/
      v9 = 0; /*0xffd18019*/
      n3 = 3; /*0xffd1801b*/
      v10 = v8 + n16_1; /*0xffd18023*/
      do /*0xffd180f2*/
      {
        if ( ((unsigned __int8)(1 << v9) & *((_BYTE *)v4 + v10 - 8)) == 0 ) /*0xffd18031*/
          goto LABEL_21; /*0xffd18031*/
        v17 = 0; /*0xffd1803a*/
        n2_1 = 2; /*0xffd18042*/
        v11 = 0; /*0xffd1804c*/
        v21 = v9 + 3 * (v8 + n16_1); /*0xffd1804e*/
        LOBYTE(v12) = *((_BYTE *)v4 + v21); /*0xffd18052*/
        do /*0xffd180c1*/
        {
          if ( ((unsigned __int8)(1 << v11) & (unsigned __int8)v12) != 0 ) /*0xffd1805c*/
          {
            v4 = a4; /*0xffd18073*/
            if ( *(_BYTE *)(v11 + 2 * (v9 + 3 * (v8 + n16_1 - 2)) + a3) == 13 ) /*0xffd18077*/
            {
              v13 = 1; /*0xffd18079*/
              v19 = 1; /*0xffd1807b*/
              v18 = 1; /*0xffd18080*/
              v17 = 1; /*0xffd18085*/
              goto LABEL_16; /*0xffd18089*/
            }
            if ( (_BYTE)v12 == 0xFF ) /*0xffd1808e*/
            {
              LOBYTE(v12) = *(_BYTE *)(v9 + 3 * (v8 + n16_1 - 12) + a3); /*0xffd1809e*/
              v14 = v9 + 3 * (v8 + n16_1); /*0xffd180a1*/
              *((_BYTE *)a4 + v21) = v12; /*0xffd180a5*/
            }
            else
            {
              v14 = v9 + 3 * (v8 + n16_1); /*0xffd180aa*/
            }
            v12 = (unsigned __int8)v12 & ~(1 << v11); /*0xffd180b1*/
            *((_BYTE *)a4 + v14) = v12; /*0xffd180b4*/
          }
          v13 = v17; /*0xffd180b7*/
LABEL_16:
          ++v11; /*0xffd180bb*/
          --n2_1; /*0xffd180bc*/
        }
        while ( n2_1 ); /*0xffd180c1*/
        v10 = v8 + n16_1; /*0xffd180c3*/
        if ( !v13 ) /*0xffd180c8*/
        {
          if ( *((_BYTE *)v4 + v10 - 8) == 0xFF ) /*0xffd180cf*/
            *((_BYTE *)v4 + v10 - 8) = *(_BYTE *)(v8 + n16_1 + a3 - 12); /*0xffd180dc*/
          *((_BYTE *)v4 + v10 - 8) &= ~(1 << v9); /*0xffd180e8*/
        }
LABEL_21:
        ++v9; /*0xffd180ec*/
        --n3; /*0xffd180ed*/
      }
      while ( n3 ); /*0xffd180f2*/
      LOBYTE(v7) = v18; /*0xffd180f8*/
      v5 = v25; /*0xffd180fc*/
      if ( !v18 ) /*0xffd18102*/
      {
        if ( *((_BYTE *)v4 + v25 + 4) == 0xFF ) /*0xffd18109*/
          *((_BYTE *)v4 + v25 + 4) = *(_BYTE *)(v25 + a3); /*0xffd18112*/
        v7 = *((unsigned __int8 *)v4 + v25 + 4) & ~(1 << v8); /*0xffd1811b*/
        *((_BYTE *)v4 + v25 + 4) = v7; /*0xffd1811e*/
      }
LABEL_26:
      ++v8; /*0xffd18122*/
      --n2; /*0xffd18123*/
    }
    while ( n2 ); /*0xffd18128*/
    if ( !v19 ) /*0xffd18133*/
    {
      if ( *v4 == -1 ) /*0xffd18138*/
        *v4 = *(_DWORD *)(a2 + 5); /*0xffd18141*/
      v7 = *v4 & ~(1 << v5); /*0xffd18145*/
      *v4 = v7; /*0xffd18148*/
    }
    n16 = n16_1; /*0xffd1814a*/
LABEL_32:
    ++v5; /*0xffd1814e*/
    n16 += 2; /*0xffd1814f*/
    v15 = n4-- == 1; /*0xffd18152*/
    v25 = v5; /*0xffd18157*/
    n16_1 = n16; /*0xffd1815b*/
  }
  while ( !v15 ); /*0xffd1815f*/
  return v7; /*0xffd18165*/
}

// Function: IioTailX_FFD1816D @ 0xffd1816d (0xa2 bytes)
// Index: 2473/2560

char __cdecl IioTailX_FFD1816D(int i, int a2, int buf, _DWORD *a4, int a5, int a6)
{
  unsigned __int8 n4; // bl
  int v7; // esi
  char n2; // bh
  int v9; // edi
  int v10; // eax
  int v11; // ecx
  char n2_1; // [esp+10h] [ebp-8h]
  unsigned __int8 n4_1; // [esp+14h] [ebp-4h]

  n4 = 0; /*0xffd18175*/
  n4_1 = 0; /*0xffd18179*/
  v7 = 0; /*0xffd1817d*/
  do /*0xffd18202*/
  {
    n2 = 0; /*0xffd1817f*/
    v9 = 0; /*0xffd18181*/
    n2_1 = 0; /*0xffd18183*/
    do /*0xffd181f4*/
    {
      LOBYTE(v10) = IioTailFunc7BC9(i, a2, buf, a4, n4_1, n2_1); /*0xffd1819c*/
      if ( (_BYTE)v10 ) /*0xffd181a6*/
      {
        v10 = v7 + v9; /*0xffd181ad*/
        if ( a5 ) /*0xffd181b0*/
        {
          v11 = a6; /*0xffd181ca*/
          LOBYTE(v11) = *(_BYTE *)(v10 + a6); /*0xffd181ce*/
          if ( (_BYTE)v11 ) /*0xffd181d3*/
            LOBYTE(v10) = (*(int (__cdecl **)(int, unsigned __int8, char, int, _DWORD))(*(_DWORD *)(i + 12) + 84))( /*0xffd181e4*/
                            i,
                            n4_1,
                            n2_1,
                            v11,
                            0);
        }
        else
        {
          LOBYTE(v10) = (*(int (__cdecl **)(int, unsigned __int8, char, _DWORD, int))(*(_DWORD *)(i + 12) + 84))( /*0xffd181c5*/
                          i,
                          n4_1,
                          n2_1,
                          0,
                          a6 + v10);
        }
      }
      ++n2; /*0xffd181ea*/
      ++v9; /*0xffd181ec*/
      n2_1 = n2; /*0xffd181ed*/
    }
    while ( (unsigned __int8)n2 < 2u ); /*0xffd181f4*/
    ++n4; /*0xffd181f6*/
    v7 += 2; /*0xffd181f8*/
    n4_1 = n4; /*0xffd181fb*/
  }
  while ( n4 < 4u ); /*0xffd18202*/
  return v10; /*0xffd18208*/
}

// Function: IioTailX_FFD1820F @ 0xffd1820f (0xa2 bytes)
// Index: 2474/2560

char __cdecl IioTailX_FFD1820F(int i, int a2, int buf, _DWORD *a4, int a5, int a6)
{
  unsigned __int8 n4; // bl
  int v7; // esi
  char n2; // bh
  int v9; // edi
  int v10; // eax
  int v11; // ecx
  char n2_1; // [esp+10h] [ebp-8h]
  unsigned __int8 n4_1; // [esp+14h] [ebp-4h]

  n4 = 0; /*0xffd18217*/
  n4_1 = 0; /*0xffd1821b*/
  v7 = 0; /*0xffd1821f*/
  do /*0xffd182a4*/
  {
    n2 = 0; /*0xffd18221*/
    v9 = 0; /*0xffd18223*/
    n2_1 = 0; /*0xffd18225*/
    do /*0xffd18296*/
    {
      LOBYTE(v10) = IioTailFunc7BC9(i, a2, buf, a4, n4_1, n2_1); /*0xffd1823e*/
      if ( (_BYTE)v10 ) /*0xffd18248*/
      {
        v10 = v7 + v9; /*0xffd1824f*/
        if ( a5 ) /*0xffd18252*/
        {
          v11 = a6; /*0xffd1826c*/
          LOBYTE(v11) = *(_BYTE *)(v10 + a6); /*0xffd18270*/
          if ( (_BYTE)v11 ) /*0xffd18275*/
            LOBYTE(v10) = (*(int (__cdecl **)(int, unsigned __int8, char, int, _DWORD))(*(_DWORD *)(i + 12) + 80))( /*0xffd18286*/
                            i,
                            n4_1,
                            n2_1,
                            v11,
                            0);
        }
        else
        {
          LOBYTE(v10) = (*(int (__cdecl **)(int, unsigned __int8, char, _DWORD, int))(*(_DWORD *)(i + 12) + 80))( /*0xffd18267*/
                          i,
                          n4_1,
                          n2_1,
                          0,
                          a6 + v10);
        }
      }
      ++n2; /*0xffd1828c*/
      ++v9; /*0xffd1828e*/
      n2_1 = n2; /*0xffd1828f*/
    }
    while ( (unsigned __int8)n2 < 2u ); /*0xffd18296*/
    ++n4; /*0xffd18298*/
    v7 += 2; /*0xffd1829a*/
    n4_1 = n4; /*0xffd1829d*/
  }
  while ( n4 < 4u ); /*0xffd182a4*/
  return v10; /*0xffd182aa*/
}

// Function: IioTailX_FFD182B1 @ 0xffd182b1 (0x15 bytes)
// Index: 2475/2560

char __cdecl IioTailX_FFD182B1(int a1, int sub_FFD1E74E, int a3)
{
  if ( !a3 ) /*0xffd182b7*/
    return 1; /*0xffd182c3*/
  *(_DWORD *)(a3 + 57) = sub_FFD1E74E; /*0xffd182bd*/
  return 0; /*0xffd182c2*/
}

// Function: IioTailX_FFD182C6 @ 0xffd182c6 (0x38 bytes)
// Index: 2476/2560

char __cdecl IioTailX_FFD182C6(int i, _BYTE *a2, int a3)
{
  if ( a2[3] <= 3u && a2[14] <= 0x10u && a2[15] <= 4u ) /*0xffd182da*/
    return 0; /*0xffd182dc*/
  IioTailFunc6DEB( /*0xffd182f3*/
    i,
    1,
    "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\CpgcPointTest\\CpgcPointTest.c",
    2802,
    a3);
  return 1; /*0xffd182de*/
}

// Function: CpgcPointTestCpgc @ 0xffd182fe (0x41d bytes)
// Index: 2477/2560

char __cdecl CpgcPointTestCpgc(int a1, int a2, unsigned __int8 *a3, int a4, int a5, int a6, int a7)
{
  unsigned __int8 n2; // bl
  unsigned __int8 n3; // bh
  int n3_1; // edx
  int v10; // ecx
  unsigned int v11; // ebx
  unsigned __int8 v12; // al
  unsigned int v13; // eax
  unsigned __int8 n2_1; // al
  int n2_2; // eax
  bool v16; // zf
  unsigned __int8 v17; // al
  unsigned __int8 n3_4; // dl
  int v19; // ecx
  int v20; // eax
  int n3_3; // ecx
  int v22; // ecx
  int v23; // eax
  unsigned __int8 i; // dl
  int v25; // ecx
  int n3_5; // eax
  int v27; // ebx
  int n5; // eax
  int v30; // [esp+10h] [ebp-1Ch]
  char n3_6; // [esp+14h] [ebp-18h]
  unsigned __int8 n2_3; // [esp+18h] [ebp-14h]
  unsigned __int8 v33; // [esp+1Ch] [ebp-10h]
  int n3_2; // [esp+20h] [ebp-Ch]
  int v35; // [esp+24h] [ebp-8h]
  int v36; // [esp+28h] [ebp-4h]

  v33 = 0; /*0xffd18311*/
LABEL_2:
  n2 = 0; /*0xffd18316*/
  n2_3 = 0; /*0xffd18318*/
LABEL_3:
  n3 = 0; /*0xffd1831c*/
  n3_6 = 0; /*0xffd18... [11285 chars total]

// Function: IioTailX_FFD1871B @ 0xffd1871b (0x3b bytes)
// Index: 2478/2560

int __cdecl IioTailX_FFD1871B(int i, int a2, int buf, int a4, char a5, int *a6)
{
  int v6; // esi
  int result; // eax

  v6 = *a6; /*0xffd18726*/
  if ( a5 && v6 ) /*0xffd1872c*/
  {
    if ( *(_DWORD *)(v6 + 3) ) /*0xffd1872e*/
      (*(void (__cdecl **)(int, _DWORD))(*(_DWORD *)(i + 4) + 44))(i, *(_DWORD *)(v6 + 3)); /*0xffd18740*/
    result = (*(int (__cdecl **)(int, int))(*(_DWORD *)(i + 4) + 44))(i, v6); /*0xffd1874a*/
    *a6 = 0; /*0xffd1874d*/
  }
  return result; /*0xffd18753*/
}

// Function: IioTailX_FFD18756 @ 0xffd18756 (0x92 bytes)
// Index: 2479/2560

char __cdecl IioTailX_FFD18756(
        int __return_address,
        int a2,
        int a3,
        int a4,
        int a5,
        unsigned __int8 a6,
        char i,
        char j,
        char *a9,
        _BYTE *a10,
        int a11)
{
  char v11; // bl
  unsigned __int8 v12; // al

  v11 = *a9; /*0xffd18767*/
  if ( !IioTailFunc7AC8(__return_address, a2, a3, a4, a6, i, j) ) /*0xffd18775*/
  {
    *a9 = 0; /*0xffd18781*/
    return 0; /*0xffd187c6*/
  }
  v12 = IioTailFunc77B5(__return_address, a2, a3, a4, a6, i, j); /*0xffd1879a*/
  if ( v11 ) /*0xffd187a5*/
  {
    *a9 = 1; /*0xffd187b0*/
    IioTailX_FFD1FD41(a10, *(_DWORD *)(a5 + 3) + 5 * v12, 2); /*0xffd187bc*/
    return 0; /*0xffd187bc*/
  }
  IioTailFunc6DEB( /*0xffd187da*/
    __return_address,
    1,
    "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\CpgcPointTest\\CpgcPointTest.c",
    4037,
    a11);
  return 1; /*0xffd187e4*/
}

// Function: IioTailX_FFD187E8 @ 0xffd187e8 (0x148 bytes)
// Index: 2480/2560

char __cdecl IioTailX_FFD187E8(int a1, int a2, int a3, int a4, int j, int a6)
{
  int n14; // edi
  unsigned __int8 i_1; // bh
  char j_2; // bl
  int v9; // esi
  char result; // al
  int v11; // esi
  int v12; // esi
  unsigned __int8 n4; // [esp+10h] [ebp-20h]
  char j_1; // [esp+14h] [ebp-1Ch]
  unsigned __int8 i; // [esp+18h] [ebp-18h]
  char v16; // [esp+1Ch] [ebp-14h]
  char v17; // [esp+20h] [ebp-10h]
  int v18; // [esp+24h] [ebp-Ch]
  int v19; // [esp+28h] [ebp-8h]
  int v20; // [esp+2Ch] [ebp-4h]

  n4 = 0; /*0xffd187f7*/
  n14 = 14; /*0xffd187fb*/
  do /*0xffd18922*/
  {
    v19 = 0; /*0xffd187fc*/
    i_1 = 0; /*0xffd18801*/
    v20 = 0; /*0xffd18803*/
    i = 0; /*0xffd18808*/
    do /*0xffd1890c*/
    {
      j_2 = 0; /*0xffd1880c*/
      v9 = 0; /*0xffd1880e*/
      j_1 = 0; /*0xffd18810*/
      v18 = 0; /*0xffd18814*/
      do /*0xffd188f4*/
      {
        result = IioTailFunc7AC8(a1, a2, a3, a4, n4, i, j_1); /*0xffd18831*/
        if ( !result ) /*0xffd1883b*/
          goto LABEL_13; /*0xffd1883b*/
        v11 = *(_DWORD *)(j + 4 * (v9 + v20) + 773); /*0xffd1885b*/
        if ( *(_BYTE *)(a3 /*0xffd18899*/
                      + *(unsigned __int8 *)(5 * (unsigned __int8)IioTailFunc77B5(a1, a2, a3, a4, n4, i, j_1)
                                           + *(_DWORD *)(a6 + 3))
                      + 2 * (v18 + 3 * (n14 + v19))) == 13 )
          v11 = 0; /*0xffd1889d*/
        v12 = v11 - 1; /*0xffd188a3*/
        if ( !v12 ) /*0xffd188a6*/
        {
          v16 = 1; /*0xffd188b8*/
LABEL_11:
          v17 = 0; /*0xffd188bd*/
          goto LABEL_12; /*0xffd188bd*/
        }
        v16 = 0; /*0xffd188a8*/
        if ( v12 != 1 ) /*0xffd188af*/
          goto LABEL_11; /*0xffd188af*/
        v17 = 1; /*0xffd188b1*/
LABEL_12:
        result = (*(int (__cdecl **)(int, unsigned __int8, unsigned __int8, char, char, char, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 80))( /*0xffd188c1*/
                   a1,
                   n4,
                   i,
                   j_1,
                   v17,
                   v16,
                   0,
                   0,
                   0);
        v9 = v18; /*0xffd188df*/
LABEL_13:
        ++j_2; /*0xffd188e6*/
        ++v9; /*0xffd188e8*/
        j_1 = j_2; /*0xffd188e9*/
        v18 = v9; /*0xffd188ed*/
      }
      while ( (unsigned __int8)j_2 < 3u ); /*0xffd188f4*/
      v20 += 3; /*0xffd188fa*/
      ++i_1; /*0xffd188ff*/
      ++v19; /*0xffd18901*/
      i = i_1; /*0xffd18905*/
    }
    while ( i_1 < 2u ); /*0xffd1890c*/
    n14 += 2; /*0xffd18916*/
    ++n4; /*0xffd1891b*/
  }
  while ( n4 < 4u ); /*0xffd18922*/
  return result; /*0xffd18928*/
}

// Function: IioTailX_FFD18930 @ 0xffd18930 (0x374 bytes)
// Index: 2481/2560

char __cdecl IioTailX_FFD18930(int a1, int a2, int a3, int a4, int n4, int a6)
{
  unsigned __int8 n2; // bh
  unsigned __int8 n3; // bl
  int v8; // esi
  int v9; // eax
  unsigned __int8 n4_1; // bl
  int v11; // esi
  unsigned __int8 v12; // al
  unsigned __int8 v13; // al
  char n3_2; // [esp+10h] [ebp-A8h]
  unsigned __int8 i; // [esp+14h] [ebp-A4h]
  unsigned __int8 v17; // [esp+18h] [ebp-A0h]
  char v18; // [esp+1Ch] [ebp-9Ch]
  char v19; // [esp+20h] [ebp-98h]
  char v20; // [esp+24h] [ebp-94h]
  int n3_1; // [esp+2Ch] [ebp-8Ch]
  int v22; // [esp+30h] [ebp-88h]
  int v23; // [esp+34h] [ebp-84h]
  _DWORD v24[32]; // [esp+38h] [ebp-80h] BYREF

  for ( i = 0; i < 4u; ++i ) /*0xffd1894a*/
  {
    n2 = 0; /*0xffd1894e*/
    v17 = 0; /*0xffd18950*/
    do /*0xffd18c7f*/
    {
      n3 = 0; /*0xffd18954*/
      n3_2 = 0; /*0xffd18956*/
      do /*0xffd18c70*/
      {
        if ( !IioTailFunc7AC8(a1, a2, a3, a4, i, v17, n3_2) ) /*0xffd18986*/
          goto LABEL_25; /*0xffd18986*/
        n3_1 = n3; /*0xffd18995*/
        v22 = 3 * n2; /*0xffd18999*/
        v8 = n3 + v22; /*0xffd1899d*/
        v23 = v8; /*0xffd189a7*/
        if ( *(_DWORD *)(n4 + 4 * v8 + 773) == 1 ) /*0xffd189ae*/
        {
          v19 = 1; /*0xffd189cc*/
          goto LABEL_10; /*0xffd189cc*/
        }
        if ( *(_DWORD *)(n4 + 4 * v8 + 773) != 2 ) /*0xffd189b3*/
        {
          v19 = 0; /*0xffd189b7*/
LABEL_10:
          v20 = 0; /*0xffd189d1*/
          goto LABEL_11; /*0xffd189d1*/
        }
        v20 = 1; /*0xffd189bf*/
        v19 = 0; /*0xffd189c4*/
LABEL_11:
        (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, char, char, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 80))( /*0xffd189d5*/
          a1,
          i,
          v17,
          n3_2,
          v20,
          v19,
          0,
          0,
          0);
        if ( *(_DWORD *)(n4 + 4 * v8 + 773) && *(_DWORD *)(n4 + 4 * v8 + 28) == 1 ) /*0xffd18a0a*/
        {
          if ( *(_BYTE *)(n4 + 797) ) /*0xffd18a10*/
          {
            (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, int, int, _DWORD))(*(_DWORD *)(a1 + 20) /*0xffd18a32*/
                                                                                               + 84))(
              a1,
              i,
              v17,
              n3_2,
              n4 + 798,
              16,
              0);
          }
          else
          {
            v24[0] = 0; /*0xffd18a40*/
            v24[3] = 0x8000; /*0xffd18a46*/
            v24[11] = 0x8000; /*0xffd18a4f*/
            v24[19] = 0x8000; /*0xffd18a53*/
            v24[27] = 0x8000; /*0xffd18a5a*/
            v24[2] = 8256; /*0xffd18a6a*/
            v24[10] = 8256; /*0xffd18a72*/
            v24[18] = 8256; /*0xffd18a7a*/
            v24[26] = 8256; /*0xffd18a81*/
            v9 = *(_DWORD *)(a1 + 20); /*0xffd18a88*/
            v24[1] = 0; /*0xffd18a8c*/
            v24[4] = 259121119; /*0xffd18a90*/
            v24[5] = 28672; /*0xffd18a98*/
            v24[6] = 259129343; /*0xffd18aa0*/
            v24[7] = 61440; /*0xffd18aa8*/
            v24[8] = 0; /*0xffd18ab0*/
            v24[9] = 0; /*0xffd18ab4*/
            v24[12] = 259121119; /*0xffd18ab8*/
            v24[13] = 28672; /*0xffd18ac3*/
            v24[14] = 259129343; /*0xffd18ace*/
            v24[15] = 61440; /*0xffd18ad9*/
            v24[16] = 0; /*0xffd18ae4*/
            v24[17] = 0; /*0xffd18aeb*/
            v24[20] = 259121119; /*0xffd18af2*/
            v24[21] = 28672; /*0xffd18afd*/
            v24[22] = 259129343; /*0xffd18b08*/
            v24[23] = 61440; /*0xffd18b13*/
            v24[24] = 0; /*0xffd18b1e*/
            v24[25] = 0; /*0xffd18b25*/
            v24[28] = 259121119; /*0xffd18b2c*/
            v24[29] = 28672; /*0xffd18b37*/
            v24[30] = 259129343; /*0xffd18b42*/
            v24[31] = 61440; /*0xffd18b4d*/
            (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, _DWORD *, int, _DWORD))(v9 + 84))( /*0xffd18b58*/
              a1,
              i,
              v17,
              n3_2,
              v24,
              16,
              0);
          }
          n4_1 = 0; /*0xffd18b5e*/
          v18 = 0; /*0xffd18b60*/
          do /*0xffd18c5b*/
          {
            v11 = n4_1 + 4 * v8; /*0xffd18b6b*/
            v12 = (*(int (__cdecl **)(int, unsigned __int8, unsigned __int8, char, char, _DWORD))(*(_DWORD *)(a1 + 20) /*0xffd18b89*/
                                                                                                + 88))(
                    a1,
                    i,
                    v17,
                    n3_2,
                    v18,
                    *(_DWORD *)(n4 + 4 * v11 + 1182));
            if ( IioTailFunc6DC3( /*0xffd18ba2*/
                   a1,
                   v12,
                   (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\CpgcPointTest\\CpgcPointTest.c",
                   1890,
                   a6) )
            {
              return 1; /*0xffd18c2b*/
            }
            if ( n4_1 || *(_DWORD *)(n4 + 4 * v11 + 1182) ) /*0xffd18bb3*/
            {
              (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, char, _DWORD))(*(_DWORD *)(a1 + 20) + 92))( /*0xffd18c48*/
                a1,
                i,
                v17,
                n3_2,
                v18,
                *(_DWORD *)(n4 + 4 * v11 + 1278));
            }
            else
            {
              v13 = (*(int (__cdecl **)(int, unsigned __int8, unsigned __int8, char, char, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 96))( /*0xffd18c04*/
                      a1,
                      i,
                      v17,
                      n3_2,
                      v18,
                      *(unsigned __int16 *)(6 * (v22 + n3_1 + n4_1 + 229) + n4),
                      *(unsigned __int16 *)(6 * (v22 + n3_1 + n4_1) + n4 + 1376),
                      *(unsigned __int16 *)(6 * (v22 + n3_1 + n4_1) + n4 + 1378),
                      0,
                      0);
              if ( IioTailFunc6DC3( /*0xffd18c1d*/
                     a1,
                     v13,
                     (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\CpgcPointTest\\CpgcPointTest.c",
                     1915,
                     a6) )
              {
                return 1; /*0xffd18c27*/
              }
            }
            v8 = v23; /*0xffd18c4e*/
            v18 = ++n4_1; /*0xffd18c54*/
          }
          while ( n4_1 < 4u ); /*0xffd18c5b*/
          n3 = n3_2; /*0xffd18c61*/
        }
LABEL_25:
        n3_2 = ++n3; /*0xffd18c69*/
      }
      while ( n3 < 3u ); /*0xffd18c70*/
      v17 = ++n2; /*0xffd18c78*/
    }
    while ( n2 < 2u ); /*0xffd18c7f*/
  }
  return 0; /*0xffd18c99*/
}

// Function: IioTailX_FFD18CA4 @ 0xffd18ca4 (0x9b bytes)
// Index: 2482/2560

char __cdecl IioTailX_FFD18CA4(int a1, int a2, int a3, _DWORD *a4)
{
  unsigned __int8 n2; // bh
  char result; // al
  unsigned __int8 n3; // bl
  char v7; // [esp+8h] [ebp-Ch]
  char v8; // [esp+Ch] [ebp-8h]
  unsigned __int8 i; // [esp+10h] [ebp-4h]

  for ( i = 0; i < 4u; ++i ) /*0xffd18cb1*/
  {
    n2 = 0; /*0xffd18cb4*/
    v8 = 0; /*0xffd18cb6*/
    do /*0xffd18d26*/
    {
      result = IioTailFunc7BC9(a1, a2, a3, a4, i, v8); /*0xffd18cc9*/
      if ( result ) /*0xffd18cd3*/
      {
        n3 = 0; /*0xffd18cd5*/
        v7 = 0; /*0xffd18cd7*/
        do /*0xffd18d1c*/
        {
          result = IioTailFunc7AC8(a1, a2, a3, (int)a4, i, v8, v7); /*0xffd18ced*/
          if ( result ) /*0xffd18cf7*/
            result = (*(int (__cdecl **)(int, unsigned __int8, char, char, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) /*0xffd18d0b*/
                                                                                                  + 236))(
                       a1,
                       i,
                       v8,
                       v7,
                       0,
                       0,
                       0);
          v7 = ++n3; /*0xffd18d16*/
        }
        while ( n3 < 3u ); /*0xffd18d1c*/
      }
      v8 = ++n2; /*0xffd18d20*/
    }
    while ( n2 < 2u ); /*0xffd18d26*/
  }
  return result; /*0xffd18d39*/
}

// Function: IioTailX_FFD18D3F @ 0xffd18d3f (0x9b bytes)
// Index: 2483/2560

char __cdecl IioTailX_FFD18D3F(int a1, int a2, int a3, _DWORD *a4, _DWORD *n4)
{
  unsigned __int8 n2; // bh
  char result; // al
  unsigned __int8 n3; // bl
  char v8; // [esp+Ch] [ebp-Ch]
  char v9; // [esp+10h] [ebp-8h]
  unsigned __int8 i; // [esp+14h] [ebp-4h]

  for ( i = 0; i < 4u; ++i ) /*0xffd18d50*/
  {
    n2 = 0; /*0xffd18d53*/
    v9 = 0; /*0xffd18d55*/
    do /*0xffd18dc4*/
    {
      result = IioTailFunc7BC9(a1, a2, a3, a4, i, v9); /*0xffd18d68*/
      if ( result ) /*0xffd18d72*/
      {
        n3 = 0; /*0xffd18d74*/
        v8 = 0; /*0xffd18d76*/
        do /*0xffd18dba*/
        {
          result = IioTailFunc7AC8(a1, a2, a3, (int)a4, i, v9, v8); /*0xffd18d8c*/
          if ( result ) /*0xffd18d96*/
            result = (*(int (__cdecl **)(int, unsigned __int8, char, char, _DWORD, int))(*(_DWORD *)(a1 + 20) + 152))( /*0xffd18da9*/
                       a1,
                       i,
                       v9,
                       v8,
                       *n4,
                       1);
          v8 = ++n3; /*0xffd18db4*/
        }
        while ( n3 < 3u ); /*0xffd18dba*/
      }
      v9 = ++n2; /*0xffd18dbe*/
    }
    while ( n2 < 2u ); /*0xffd18dc4*/
  }
  return result; /*0xffd18dd3*/
}

// Function: IioTailX_FFD18DDA @ 0xffd18dda (0x4ff bytes)
// Index: 2484/2560

char __cdecl IioTailX_FFD18DDA(int i, int a2, int a3, int a4, int a5, int n4, char a7, int a8)
{
  int i_1; // esi
  int n4_1; // edi
  unsigned __int8 n2; // bh
  unsigned __int8 n3; // bl
  unsigned __int8 n7; // bl
  _BYTE *buf; // eax
  _BYTE *buf_1; // ebp
  unsigned __int8 count_1; // cl
  int v16; // edx
  unsigned int v17; // esi
  int v18; // eax
  unsigned int v19; // ecx
  int v20; // edx
  unsigned __int8 n7_1; // dl
  int n16843009; // eax
  unsigned __int64 n16843009_3; // rdi
  int n16843009_1; // ecx
  int v25; // edx
  int v26; // eax
  int v27; // edx
  int v28; // ecx
  int n3_3; // ebp
  unsigned __int8 n3_2; // bl
  int countb_1; // ecx
  int v32; // eax
  int v33; // eax
  unsigned __int8 v35; // [esp+13h] [ebp-2Dh]
  unsigned __int8 n7_2; // [esp+13h] [ebp-2Dh]
  unsigned __int8 n3_1; // [esp+14h] [ebp-2Ch]
  unsigned __int8 n2_1; // [esp+18h] [ebp-28h]
  unsigned __int8 v39; // [esp+1Ch] [ebp-24h]
  __int64 n16843009_2; // [esp+20h] [ebp-20h]
  int v41; // [esp+... [10665 chars total]

// Function: IioTailX_FFD192D9 @ 0xffd192d9 (0xe6 bytes)
// Index: 2485/2560

char __cdecl IioTailX_FFD192D9(int a1, int a2, int a3, int a4, int n4)
{
  int v5; // ebp
  unsigned __int8 n2_1; // bh
  int v7; // esi
  char n3; // bl
  int v9; // edi
  char result; // al
  int n2; // ebp
  _DWORD *v12; // esi
  unsigned __int8 i; // [esp+10h] [ebp-14h]
  char n3_1; // [esp+14h] [ebp-10h]
  unsigned __int8 n2_2; // [esp+18h] [ebp-Ch]
  int v16; // [esp+1Ch] [ebp-8h]
  int v17; // [esp+20h] [ebp-4h]

  v5 = a1; /*0xffd192de*/
  for ( i = 0; i < 4u; ++i ) /*0xffd192e6*/
  {
    n2_1 = 0; /*0xffd192ea*/
    v7 = 0; /*0xffd192ec*/
    n2_2 = 0; /*0xffd192ee*/
    v17 = 0; /*0xffd192f2*/
    do /*0xffd1939e*/
    {
      n3 = 0; /*0xffd192f6*/
      v9 = 0; /*0xffd192f8*/
      n3_1 = 0; /*0xffd192fa*/
      v16 = 0; /*0xffd192fe*/
      do /*0xffd19388*/
      {
        result = IioTailFunc7AC8(v5, a2, a3, a4, i, n2_2, n3_1); /*0xffd1931b*/
        if ( result && *(_BYTE *)(n4 + 1410) ) /*0xffd1932b*/
        {
          n2 = 0; /*0xffd19337*/
          v12 = (_DWORD *)(n4 + 1411 + 8 * (v7 + v9)); /*0xffd19343*/
          do /*0xffd1936c*/
            result = (*(int (__cdecl **)(int, unsigned __int8, unsigned __int8, char, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 24) + 16))( /*0xffd1935f*/
                       a1,
                       i,
                       n2_2,
                       n3_1,
                       n2++,
                       0,
                       0,
                       0,
                       *v12++);
          while ( n2 < 2 ); /*0xffd1936c*/
          v7 = v17; /*0xffd1936e*/
          v9 = v16; /*0xffd19372*/
          v5 = a1; /*0xffd19376*/
        }
        ++n3; /*0xffd1937a*/
        ++v9; /*0xffd1937c*/
        n3_1 = n3; /*0xffd1937d*/
        v16 = v9; /*0xffd19381*/
      }
      while ( (unsigned __int8)n3 < 3u ); /*0xffd19388*/
      ++n2_1; /*0xffd1938e*/
      v7 += 3; /*0xffd19390*/
      n2_2 = n2_1; /*0xffd19393*/
      v17 = v7; /*0xffd19397*/
    }
    while ( n2_1 < 2u ); /*0xffd1939e*/
  }
  return result; /*0xffd193b7*/
}

// Function: IioTailX_FFD193BF @ 0xffd193bf (0xd6 bytes)
// Index: 2486/2560

char __cdecl IioTailX_FFD193BF(int a1, int a2, int a3, int a4, int n4)
{
  char n4_1; // al
  unsigned __int8 n2; // bh
  int v7; // esi
  char n3; // bl
  int v9; // edi
  char v10; // al
  char n3_1; // [esp+0h] [ebp-Ch]
  unsigned __int8 n2_1; // [esp+4h] [ebp-8h]
  char v13; // [esp+8h] [ebp-4h]

  n4_1 = n4; /*0xffd193bf*/
  if ( *(_BYTE *)(n4 + 1410) )
  {
    LOBYTE(n4) = 0; /*0xffd193dd*/
    do
    {
      n2 = 0; /*0xffd193e1*/
      v7 = 0; /*0xffd193e3*/
      n2_1 = 0; /*0xffd193e5*/
      do
      {
        n3 = 0; /*0xffd193e9*/
        v9 = 0; /*0xffd193eb*/
        n3_1 = 0; /*0xffd193ed*/
        do
        {
          n4_1 = IioTailFunc7AC8(a1, a2, a3, a4, n4, n2_1, n3_1); /*0xffd1940a*/
          if ( n4_1 )
          {
            v10 = *(_BYTE *)(9 * (v7 + v9) + a4 + 192); /*0xffd19420*/
            v13 = (v10 & 1) != 0 ? 0x55 : 0;
            if ( (v10 & 2) != 0 )
              v13 = ((v10 & 1) != 0 ? 0x55 : 0) | 0x2A;
            n4_1 = (*(int (__cdecl **)(int, int, unsigned __int8, char, char))(*(_DWORD *)(a1 + 24) + 4))( /*0xffd19456*/
                     a1,
                     n4,
                     n2_1,
                     n3_1,
                     v13);
          }
          ++n3; /*0xffd1945c*/
          ++v9; /*0xffd1945e*/
          n3_1 = n3; /*0xffd1945f*/
        }
        while ( (unsigned __int8)n3 < 3u );
        ++n2; /*0xffd19468*/
        v7 += 3; /*0xffd1946a*/
        n2_1 = n2; /*0xffd1946d*/
      }
      while ( n2 < 2u );
      LOBYTE(n4) = n4 + 1; /*0xffd19480*/
    }
    while ( (unsigned __int8)n4 < 4u );
  }
  return n4_1; /*0xffd19491*/
}

// Function: IioTailX_FFD19495 @ 0xffd19495 (0xf2 bytes)
// Index: 2487/2560

void __cdecl IioTailX_FFD19495()
{
  JUMPOUT(0xFFD19587); /*0xffd19587*/
}

// Function: IioTailX_FFD19A93 @ 0xffd19a93 (0x152 bytes)
// Index: 2488/2560

char __cdecl IioTailX_FFD19A93(int a1, int a2, int a3, int a4, int buf)
{
  unsigned __int8 i_1; // bh
  int n246; // edi
  char j_1; // bl
  int v8; // esi
  char result; // al
  int v10; // esi
  int v11; // edx
  unsigned __int8 k; // [esp+10h] [ebp-10h]
  char j; // [esp+14h] [ebp-Ch]
  unsigned __int8 i; // [esp+18h] [ebp-8h]
  int v15; // [esp+1Ch] [ebp-4h]

  for ( k = 0; k < 4u; ++k ) /*0xffd19aa0*/
  {
    i_1 = 0; /*0xffd19aa4*/
    n246 = 246; /*0xffd19aa6*/
    i = 0; /*0xffd19aab*/
    do /*0xffd19bc4*/
    {
      j_1 = 0; /*0xffd19aaf*/
      v8 = 0; /*0xffd19ab1*/
      j = 0; /*0xffd19ab3*/
      v15 = 0; /*0xffd19ab7*/
      do /*0xffd19bb2*/
      {
        result = IioTailFunc7AC8(a1, a2, a3, a4, k, i, j); /*0xffd19ad4*/
        if ( result ) /*0xffd19ade*/
        {
          (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 156))( /*0xffd19af9*/
            a1,
            k,
            i,
            j,
            0,
            0,
            0);
          (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, int))(*(_DWORD *)(a1 + 20) + 160))( /*0xffd19b22*/
            a1,
            k,
            i,
            j,
            a4 - 2022 + 9 * (n246 + v8));
          (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, int))(*(_DWORD *)(a1 + 20) + 168))( /*0xffd19b3d*/
            a1,
            k,
            i,
            j,
            255);
          v10 = n246 + v8; /*0xffd19b4d*/
          (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, _DWORD))(*(_DWORD *)(a1 + 20) + 164))( /*0xffd19b61*/
            a1,
            k,
            i,
            j,
            *(unsigned __int8 *)(v10 + a4));
          v11 = 5 * (unsigned __int8)IioTailFunc77B5(a1, a2, a3, a4, k, i, j); /*0xffd19b8b*/
          result = *(_BYTE *)(v10 + a4); /*0xffd19b99*/
          v8 = v15; /*0xffd19b9c*/
          *(_BYTE *)(v11 + *(_DWORD *)(buf + 3) + 4) = result; /*0xffd19ba0*/
        }
        ++j_1; /*0xffd19ba4*/
        ++v8; /*0xffd19ba6*/
        j = j_1; /*0xffd19ba7*/
        v15 = v8; /*0xffd19bab*/
      }
      while ( (unsigned __int8)j_1 < 3u ); /*0xffd19bb2*/
      ++i_1; /*0xffd19bb8*/
      n246 += 3; /*0xffd19bba*/
      i = i_1; /*0xffd19bbd*/
    }
    while ( i_1 < 2u ); /*0xffd19bc4*/
  }
  return result; /*0xffd19bdd*/
}

// Function: IioTailX_FFD19BE5 @ 0xffd19be5 (0x3c bytes)
// Index: 2489/2560

int __cdecl IioTailX_FFD19BE5(unsigned __int64 n16843009, unsigned __int8 n0x40)
{
  unsigned __int8 n0x40_1; // al
  unsigned __int8 n0x40_2; // bl
  int v4; // esi

  n0x40_1 = n0x40; /*0xffd19be8*/
  if ( n0x40 >= 0x40u ) /*0xffd19bed*/
    n0x40_1 = n0x40 & 0x3F; /*0xffd19bef*/
  n0x40_2 = n0x40_1; /*0xffd19bf9*/
  v4 = DdrTrainFunc6117(n16843009, 64 - n0x40_1); /*0xffd19c07*/
  return v4 | DdrTrainFunc6101(n16843009, n0x40_2); /*0xffd19c1f*/
}

// Function: IioTailX_FFD19C21 @ 0xffd19c21 (0x89 bytes)
// Index: 2490/2560

char __cdecl IioTailX_FFD19C21(_DWORD *a1, int a2, int a3, _DWORD *a4, int a5, int a6, _BYTE *a7, int a8)
{
  unsigned __int8 n4; // bl
  char v10; // [esp+8h] [ebp-4h]

  n4 = 0; /*0xffd19c26*/
  v10 = 0; /*0xffd19c2c*/
  do /*0xffd19c59*/
  {
    if ( IioTailFunc7D83((int)a1, a2, a4, v10) ) /*0xffd19c39*/
      (*(void (__cdecl **)(_DWORD *, char))(a1[6] + 40))(a1, v10); /*0xffd19c4c*/
    v10 = ++n4; /*0xffd19c53*/
  }
  while ( n4 < 4u ); /*0xffd19c59*/
  IioTailFunc6DA4((void *)(a6 + 32), 0, 0x18u); /*0xffd19c67*/
  if ( IioTailX_FFD19CAA(a1, a2, a3, a4, a5, a6, a8) ) /*0xffd19c7d*/
    return 1; /*0xffd19c8a*/
  if ( a7 ) /*0xffd19c92*/
    IioTailX_FFD1FD41(a7, a6 + 32, 24); /*0xffd19c9a*/
  return 0; /*0xffd19ca4*/
}

// Function: IioTailX_FFD19CAA @ 0xffd19caa (0xafd bytes)
// Index: 2491/2560

bool __cdecl IioTailX_FFD19CAA(_DWORD *a1, int a2, int a3, _DWORD *a4, int a5, int a6, int a7)
{
  bool v7; // zf
  _DWORD *v8; // edi
  unsigned __int8 n2; // bh
  unsigned __int8 n3; // bl
  unsigned __int8 n2_1; // bh
  unsigned __int8 n3_1; // bl
  unsigned __int8 n4; // bl
  int n8; // esi
  char ib_1; // bh
  int v16; // ebp
  unsigned __int8 v17; // al
  int v18; // eax
  _DWORD *v19; // ebp
  unsigned __int8 n4_1; // bl
  unsigned __int8 n2_2; // bh
  unsigned __int8 n4_2; // bh
  int v23; // esi
  unsigned __int8 n3_2; // bl
  char v25; // cl
  int v26; // esi
  int v27; // ebx
  int v28; // eax
  int v29; // eax
  unsigned __int8 v30; // cl
  int v31; // esi
  int v32; // ecx
  int v33; // edx
  int v34; // eax
  unsigned __int8 n3_3; // bl
  char v36; // al
  int v37; // ecx
  int v38; // eax
  int v39; // ebx
  int v40; // esi
  int v41; // ebp
  int v42; // esi
  unsigned int v43; // esi
  char v44; // cl
  int v45; // edx
  char v46; // ch
  int v47; // eax
  int v48; // ... [22394 chars total]

// Function: IioTailX_FFD1A7A7 @ 0xffd1a7a7 (0x18a bytes)
// Index: 2492/2560

int __cdecl IioTailX_FFD1A7A7(_BYTE *buf)
{
  _WORD *v1; // ecx
  _DWORD *v2; // eax
  _BYTE *v3; // esi
  int n2; // edx
  int n2_1; // ebx
  _DWORD *v6; // edi
  int n3; // ebp
  int n3_1; // edi
  _BYTE *v9; // eax
  _DWORD *v10; // ecx
  _DWORD *v11; // ecx
  _BYTE *v12; // ebx
  _DWORD *v13; // ebp
  int n3_2; // esi
  _DWORD *v15; // ecx
  _BYTE *v16; // ebx
  int n3_3; // esi
  _DWORD *v18; // esi
  int n3_4; // eax
  int n2_2; // [esp+10h] [ebp-4h]
  int n2_3; // [esp+10h] [ebp-4h]

  IioTailFunc6DA4(buf, 0, 0x5B4u); /*0xffd1a7b8*/
  *(_DWORD *)buf = 0; /*0xffd1a7c6*/
  v1 = buf + 112; /*0xffd1a7c9*/
  v2 = buf + 28; /*0xffd1a7d0*/
  v3 = buf + 148; /*0xffd1a7d3*/
  n2 = 2; /*0xffd1a7d9*/
  n2_1 = 2; /*0xffd1a7da*/
  do /*0xffd1a821*/
  {
    v6 = v3; /*0xffd1a7de*/
    n3 = 3; /*0xffd1a7e0*/
    do /*0xffd1a818*/
    {
      *(v2 - 6) = 0; /*0xffd1a7e1*/
      *v2 = 0; /*0xffd1a7ea*/
      *(v1 - 30) = 128; /*0xffd1a7ed*/
      v2[9] = 15; /*0xffd1a7f3*/
      v2[15] = 10; /*0xffd1a7fa*/
      ++v2; /*0xffd1a801*/
      *v1 = 0; /*0xffd1a804*/
      v1[6] = 0; /*0xffd1a807*/
      ++v1; /*0xffd1a80b*/
      *(v6 - 3) = 0; /*0xffd1a80d*/
      *v6++ = 0; /*0xffd1a810*/
      --n3; /*0xffd1a815*/
    }
    while ( n3 ); /*0xffd1a818*/
    v3 = buf + 148; /*0xffd1a81a*/
    --n2_1; /*0xffd1a81e*/
  }
  while ( n2_1 ); /*0xffd1a821*/
  n3_1 = 3; /*0xffd1a829*/
  buf[187] = 0; /*0xffd1a82a*/
  v9 = buf + 590; /*0xffd1a831*/
  v10 = buf + 578; /*0xffd1a837*/
  do /*0xffd1a84a*/
  {
    *v10++ = 0; /*0xffd1a83d*/
    *v9++ = 4; /*0xffd1a843*/
    --n3_1; /*0xffd1a847*/
  }
  while ( n3_1 ); /*0xffd1a84a*/
  v11 = buf + 665; /*0xffd1a84c*/
  n2_2 = 2; /*0xffd1a852*/
  v12 = buf + 737; /*0xffd1a856*/
  v13 = buf + 773; /*0xffd1a85c*/
  do /*0xffd1a8a3*/
  {
    n3_2 = 3; /*0xffd1a864*/
    do /*0xffd1a89c*/
    {
      *(v11 - 18) = 2; /*0xffd1a86a*/
      *(v11 - 17) = 2; /*0xffd1a86b*/
      *(v11 - 16) = 2; /*0xffd1a86c*/
      *v11 = 1193046; /*0xffd1a872*/
      v11[1] = 11259375; /*0xffd1a878*/
      v11[2] = 8873283; /*0xffd1a87f*/
      v11 += 3; /*0xffd1a886*/
      *(_DWORD *)v12 = 65537; /*0xffd1a889*/
      *((_WORD *)v12 + 2) = 1; /*0xffd1a88b*/
      v12 += 6; /*0xffd1a88f*/
      *v13++ = 0; /*0xffd1a892*/
      --n3_2; /*0xffd1a899*/
    }
    while ( n3_2 ); /*0xffd1a89c*/
    --n2_2; /*0xffd1a89e*/
  }
  while ( n2_2 ); /*0xffd1a8a3*/
  n2_3 = 2; /*0xffd1a8a9*/
  buf[187] = 0; /*0xffd1a8ad*/
  v15 = buf + 1278; /*0xffd1a8b4*/
  v16 = buf + 1374; /*0xffd1a8ba*/
  do /*0xffd1a902*/
  {
    n3_3 = 3; /*0xffd1a8c2*/
    do /*0xffd1a8fb*/
    {
      *(v15 - 24) = 2; /*0xffd1a8cd*/
      *(v15 - 23) = 2; /*0xffd1a8ce*/
      *(v15 - 22) = 2; /*0xffd1a8cf*/
      *(v15 - 21) = 2; /*0xffd1a8d0*/
      *v15 = 3745; /*0xffd1a8d1*/
      v15[1] = 48879; /*0xffd1a8d7*/
      v15[2] = 57005; /*0xffd1a8de*/
      v15[3] = 10667; /*0xffd1a8e5*/
      v15 += 4; /*0xffd1a8ec*/
      *(_DWORD *)v16 = 65537; /*0xffd1a8ef*/
      *((_WORD *)v16 + 2) = 1; /*0xffd1a8f1*/
      v16 += 6; /*0xffd1a8f5*/
      --n3_3; /*0xffd1a8f8*/
    }
    while ( n3_3 ); /*0xffd1a8fb*/
    --n2_3; /*0xffd1a8fd*/
  }
  while ( n2_3 ); /*0xffd1a902*/
  v18 = buf + 1415; /*0xffd1a908*/
  do /*0xffd1a929*/
  {
    n3_4 = 3; /*0xffd1a910*/
    do /*0xffd1a924*/
    {
      *(v18 - 1) = 370085; /*0xffd1a911*/
      *v18 = 814188; /*0xffd1a918*/
      v18 += 2; /*0xffd1a91e*/
      --n3_4; /*0xffd1a921*/
    }
    while ( n3_4 ); /*0xffd1a924*/
    --n2; /*0xffd1a926*/
  }
  while ( n2 ); /*0xffd1a929*/
  return n3_4; /*0xffd1a92b*/
}

// Function: IioTailX_FFD1A931 @ 0xffd1a931 (0xc6 bytes)
// Index: 2493/2560

char __cdecl IioTailX_FFD1A931(int a1, int a2, int a3, int a4, int a5, int n2, char a7)
{
  int v7; // ebp
  int v8; // esi
  unsigned __int8 n3; // bl
  int v10; // edi
  int v11; // eax
  int v12; // ecx
  unsigned __int8 i; // [esp+10h] [ebp-4h]

  v7 = a5; /*0xffd1a93c*/
  *(_BYTE *)(n2 + 56) = a7; /*0xffd1a944*/
  for ( i = 0; i < 4u; ++i ) /*0xffd1a947*/
  {
    v8 = 0; /*0xffd1a94d*/
    LOBYTE(n2) = 0; /*0xffd1a94f*/
    do /*0xffd1a9d6*/
    {
      n3 = 0; /*0xffd1a957*/
      LOBYTE(a5) = 0; /*0xffd1a959*/
      v10 = 0; /*0xffd1a95d*/
      do /*0xffd1a9c4*/
      {
        if ( IioTailFunc7AC8(a1, a2, a3, a4, i, n2, a5) ) /*0xffd1a97b*/
        {
          v11 = v8 + v10; /*0xffd1a987*/
          if ( *(_DWORD *)(v7 + 4 * (v8 + v10) + 4) != 4 ) /*0xffd1a98f*/
          {
            if ( a7 ) /*0xffd1a993*/
              v12 = *(_DWORD *)(v7 + 4 * v11 + 88); /*0xffd1a995*/
            else
              v12 = *(_DWORD *)(v7 + 4 * v11 + 64); /*0xffd1a99b*/
            (*(void (__cdecl **)(int, unsigned __int8, int, int, int))(*(_DWORD *)(a1 + 20) + 120))(a1, i, n2, a5, v12); /*0xffd1a9b4*/
          }
        }
        ++n3; /*0xffd1a9ba*/
        ++v10; /*0xffd1a9bc*/
        LOBYTE(a5) = n3; /*0xffd1a9bd*/
      }
      while ( n3 < 3u ); /*0xffd1a9c4*/
      v8 += 3; /*0xffd1a9ca*/
      LOBYTE(n2) = n2 + 1; /*0xffd1a9cf*/
    }
    while ( (unsigned __int8)n2 < 2u ); /*0xffd1a9d6*/
  }
  return 0; /*0xffd1a9ef*/
}

// Function: IioTailX_FFD1A9F7 @ 0xffd1a9f7 (0x189 bytes)
// Index: 2494/2560

char __cdecl IioTailX_FFD1A9F7(int a1, int a2, int a3, int a4, int j, int a6, unsigned __int8 a7, char i)
{
  int v10; // edi
  unsigned __int8 ja_1; // bl
  int v12; // eax
  __int16 v13; // dx
  int v14; // [esp+4h] [ebp-8h]
  int v15; // [esp+8h] [ebp-4h]
  unsigned __int8 ja; // [esp+24h] [ebp+18h]
  unsigned __int8 n4; // [esp+28h] [ebp+1Ch]
  unsigned __int8 ia; // [esp+30h] [ebp+24h]

  if ( i ) /*0xffd1aa04*/
  {
    if ( !IioTailX_FFD1AB80(a1, a2, a3, a4, j, a6) ) /*0xffd1aa22*/
    {
      IioTailX_FFD19495(); /*0xffd1aa3d*/
      IioTailX_FFD187E8(a1, a2, a3, a4, j, a6); /*0xffd1aa54*/
      return 0; /*0xffd1aa5c*/
    }
    return 1; /*0xffd1aa22*/
  }
  if ( IioTailFunc76C4( /*0xffd1aa80*/
         a1,
         a2,
         a3,
         a4,
         *(_DWORD *)(a6 + 65),
         *(unsigned __int8 *)(a6 + 69),
         (_BYTE *)(a6 + 7),
         (unsigned __int8 *)(a6 + 1)) )
  {
    return 1; /*0xffd1aa26*/
  }
  *(_BYTE *)(a6 + 31) = a7; /*0xffd1aa92*/
  n4 = 0; /*0xffd1aa96*/
  v10 = 0; /*0xffd1aa99*/
  do /*0xffd1ab71*/
  {
    v15 = 0; /*0xffd1aa9d*/
    for ( ia = 0; ia < 2u; ++ia ) /*0xffd1aaa1*/
    {
      ja_1 = 0; /*0xffd1aaa7*/
      v14 = 0; /*0xffd1aaa9*/
      ja = 0; /*0xffd1aaad*/
      do /*0xffd1ab48*/
      {
        if ( IioTailFunc7AC8(a1, a2, a3, a4, n4, ia, ja) ) /*0xffd1aac5*/
        {
          HIBYTE(v13) = IioTailFunc77B5(a1, a2, a3, a4, n4, ia, ja); /*0xffd1aaeb*/
          v12 = v15; /*0xffd1aaf0*/
          LOBYTE(v13) = *(_BYTE *)(v14 + 3 * (v10 + v15) + a6 + 7); /*0xffd1aafc*/
          if ( !(_BYTE)v13 ) /*0xffd1ab02*/
            goto LABEL_13; /*0xffd1ab02*/
          IioTailFunc759F( /*0xffd1ab32*/
            a1,
            a2,
            a3,
            a4,
            n4,
            ia,
            ja,
            a7 % (unsigned int)(unsigned __int8)v13,
            (_BYTE *)(*(_DWORD *)(a6 + 3) + 5 * HIBYTE(v13)),
            (void *)(*(_DWORD *)(a6 + 3) + 5 * HIBYTE(v13) + 2));
        }
        v12 = v15; /*0xffd1ab3a*/
LABEL_13:
        ++ja_1; /*0xffd1ab3d*/
        ++v14; /*0xffd1ab3f*/
        ja = ja_1; /*0xffd1ab42*/
      }
      while ( ja_1 < 3u ); /*0xffd1ab48*/
      v15 = v12 + 1; /*0xffd1ab57*/
    }
    v10 += 2; /*0xffd1ab66*/
    ++n4; /*0xffd1ab6b*/
  }
  while ( n4 < 4u ); /*0xffd1ab71*/
  return 0; /*0xffd1ab7b*/
}

// Function: IioTailX_FFD1AB80 @ 0xffd1ab80 (0x12b bytes)
// Index: 2495/2560

char __cdecl IioTailX_FFD1AB80(int a1, int a2, int a3, int a4, int j, int a6)
{
  int n14; // esi
  unsigned __int8 i_1; // bh
  int v8; // edi
  char j_2; // bl
  int v10; // ebp
  __int16 v12; // [esp+12h] [ebp-1Eh]
  unsigned __int8 n4; // [esp+14h] [ebp-1Ch]
  char j_1; // [esp+18h] [ebp-18h]
  unsigned __int8 i; // [esp+1Ch] [ebp-14h]
  _WORD v16[8]; // [esp+20h] [ebp-10h] BYREF

  n4 = 0; /*0xffd1ab8b*/
  n14 = 14; /*0xffd1ab8f*/
  do /*0xffd1ac9b*/
  {
    i_1 = 0; /*0xffd1ab90*/
    v8 = 0; /*0xffd1ab92*/
    i = 0; /*0xffd1ab94*/
    do /*0xffd1ac85*/
    {
      j_2 = 0; /*0xffd1ab98*/
      v10 = 0; /*0xffd1ab9a*/
      j_1 = 0; /*0xffd1ab9c*/
      do /*0xffd1ac75*/
      {
        if ( IioTailFunc7AC8(a1, a2, a3, a4, n4, i, j_1) ) /*0xffd1abbc*/
        {
          v12 = *(_WORD *)(5 * (unsigned __int8)IioTailFunc77B5(a1, a2, a3, a4, n4, i, j_1) + *(_DWORD *)(a6 + 3)); /*0xffd1ac0b*/
          (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, bool))(*(_DWORD *)(a1 + 20) + 208))( /*0xffd1ac34*/
            a1,
            n4,
            i,
            j_1,
            *(_BYTE *)(a3 + (unsigned __int8)v12 + 2 * (v10 + 3 * (n14 + v8))) != 13);
          v16[0] = v12; /*0xffd1ac4e*/
          (*(void (__cdecl **)(int, unsigned __int8, unsigned __int8, char, int, _WORD *))(*(_DWORD *)(a1 + 20) + 140))( /*0xffd1ac62*/
            a1,
            n4,
            i,
            j_1,
            1,
            v16);
        }
        ++j_2; /*0xffd1ac6b*/
        ++v10; /*0xffd1ac6d*/
        j_1 = j_2; /*0xffd1ac6e*/
      }
      while ( (unsigned __int8)j_2 < 3u ); /*0xffd1ac75*/
      ++i_1; /*0xffd1ac7b*/
      ++v8; /*0xffd1ac7d*/
      i = i_1; /*0xffd1ac7e*/
    }
    while ( i_1 < 2u ); /*0xffd1ac85*/
    n14 += 2; /*0xffd1ac8f*/
    ++n4; /*0xffd1ac94*/
  }
  while ( n4 < 4u ); /*0xffd1ac9b*/
  return 0; /*0xffd1aca1*/
}

// Function: IioTailX_FFD1ACAB @ 0xffd1acab (0xff bytes)
// Index: 2496/2560

int __cdecl IioTailX_FFD1ACAB(int a1, int a2, int a3, int a4, unsigned __int8 *a5)
{
  (*(void (__cdecl **)(int, int, int, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 128))( /*0xffd1acd8*/
    a1,
    a2,
    a3,
    a4,
    *a5,
    a5[2],
    *((unsigned __int16 *)a5 + 2),
    *((unsigned __int16 *)a5 + 3));
  (*(void (__cdecl **)(int, int, int, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 132))( /*0xffd1ad04*/
    a1,
    a2,
    a3,
    a4,
    a5[8],
    a5[12],
    *((_DWORD *)a5 + 4),
    *((unsigned __int16 *)a5 + 10));
  (*(void (__cdecl **)(int, int, int, int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 136))( /*0xffd1ad4d*/
    a1,
    a2,
    a3,
    a4,
    *((_DWORD *)a5 + 7),
    *((_DWORD *)a5 + 11),
    a5[60],
    *((_DWORD *)a5 + 8),
    *((_DWORD *)a5 + 12),
    a5[62],
    *((_DWORD *)a5 + 9),
    *((_DWORD *)a5 + 13),
    *((unsigned __int16 *)a5 + 32),
    *((_DWORD *)a5 + 10),
    *((_DWORD *)a5 + 14),
    *((unsigned __int16 *)a5 + 33));
  return (*(int (__cdecl **)(int, int, int, int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(a1 + 20) + 124))( /*0xffd1ada8*/
           a1,
           a2,
           a3,
           a4,
           a5[68],
           a5[69],
           a5[70],
           a5[71],
           0,
           0,
           0,
           0,
           0,
           a5[24],
           a5[25],
           a5[26],
           a5[27]);
}

// Function: IioTailX_FFD1ADAA @ 0xffd1adaa (0x55 bytes)
// Index: 2497/2560

char __cdecl IioTailX_FFD1ADAA(int a1, int n16843009, unsigned __int8 n240, unsigned __int8 n8, _QWORD *a5)
{
  int v5; // eax
  char v7; // si
  int n8_1; // edi

  LOBYTE(v5) = n8; /*0xffd1adaa*/
  if ( n8 ) /*0xffd1adb0*/
  {
    v7 = 0; /*0xffd1adcb*/
    n8_1 = n8; /*0xffd1adcd*/
    do /*0xffd1adf8*/
    {
      v5 = 1 << v7; /*0xffd1add5*/
      if ( ((1 << v7) & n240) != 0 ) /*0xffd1addb*/
      {
        *(_DWORD *)a5 |= a1; /*0xffd1addd*/
        *((_DWORD *)a5 + 1) |= n16843009; /*0xffd1addf*/
      }
      else
      {
        LOBYTE(v5) = ~(_BYTE)n16843009; /*0xffd1adea*/
        *(_DWORD *)a5 &= ~a1; /*0xffd1adec*/
        *((_DWORD *)a5 + 1) &= ~n16843009; /*0xffd1adee*/
      }
      ++v7; /*0xffd1adf1*/
      ++a5; /*0xffd1adf2*/
      --n8_1; /*0xffd1adf5*/
    }
    while ( n8_1 ); /*0xffd1adf8*/
  }
  return v5; /*0xffd1adfe*/
}

// Function: IioTailX_FFD1ADFF @ 0xffd1adff (0x1df bytes)
// Index: 2498/2560

char __cdecl IioTailX_FFD1ADFF(
        int i,
        int a2,
        int a3,
        int a4,
        _DWORD *a5,
        _DWORD *n4,
        int sub_FFD1E74E,
        int a8,
        int a9,
        int a10,
        char a11,
        char a12,
        char a13,
        _DWORD *a14,
        int a15)
{
  _BYTE *buf; // edi
  unsigned __int8 v17; // al
  void *buf_1; // ecx
  unsigned __int8 v19; // [esp+Bh] [ebp-1h]

  if ( a12 ) /*0xffd1ae0b*/
  {
    buf = (_BYTE *)(*(int (__cdecl **)(int, int))(*(_DWORD *)(i + 4) + 40))(i, 70); /*0xffd1ae16*/
    if ( !buf ) /*0xffd1ae1c*/
    {
      IioTailFunc6DEB( /*0xffd1ae2f*/
        i,
        1,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\CpgcPointTest\\CpgcPointTest.c",
        3758,
        a15);
      return 1; /*0xffd1ae39*/
    }
    *a14 = buf; /*0xffd1ae47*/
    IioTailFunc6DA4(buf, 0, 0x46u); /*0xffd1ae49*/
  }
  else
  {
    buf = (_BYTE *)*a14; /*0xffd1ae57*/
  }
  *buf = a11; /*0xffd1ae6d*/
  *(_DWORD *)(buf + 57) = sub_FFD1E74E; /*0xffd1ae74*/
  *(_DWORD *)(buf + 61) = a8; /*0xffd1ae80*/
  *(_DWORD *)(buf + 65) = a9; /*0xffd1ae87*/
  buf[69] = a10; /*0xffd1ae8f*/
  v17 = IioTailFunc77B5(i, a2, a4, (int)a5, 3u, 1, 2) + 1; /*0xffd1ae9a*/
  v19 = v17; /*0xffd1aea1*/
  if ( !a12 && *(_DWORD *)(buf + 3) && v17 > buf[2] ) /*0xffd1aeb0*/
  {
    (*(void (__cdecl **)(int, _DWORD))(*(_DWORD *)(i + 4) + 44))(i, *(_DWORD *)(buf + 3)); /*0xffd1aeb9*/
    *(_DWORD *)(buf + 3) = 0; /*0xffd1aebc*/
    v17 = v19; /*0xffd1aec0*/
  }
  buf[2] = v17; /*0xffd1aec6*/
  if ( v17 && !*(_DWORD *)(buf + 3) ) /*0xffd1aecd*/
  {
    buf_1 = (void *)(*(int (__cdecl **)(int, int))(*(_DWORD *)(i + 4) + 40))(i, 5 * v17); /*0xffd1aee3*/
    *(_DWORD *)(buf + 3) = buf_1; /*0xffd1aee5*/
    if ( !buf_1 ) /*0xffd1aeea*/
    {
      IioTailFunc6DEB( /*0xffd1aefd*/
        i,
        1,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\CpgcPointTest\\CpgcPointTest.c",
        3832,
        a15);
      return 1; /*0xffd1afb4*/
    }
    IioTailFunc6DA4(buf_1, 0, 5 * (unsigned __int8)buf[2]); /*0xffd1af15*/
  }
  if ( IioTailFunc76C4(i, a2, a4, (int)a5, a9, a10, buf + 7, buf + 1) ) /*0xffd1af38*/
    return 1; /*0xffd1af38*/
  IioTailX_FFD18CA4(i, a2, a4, a5); /*0xffd1af4f*/
  IioTailX_FFD18D3F(i, a2, a4, a5, n4); /*0xffd1af5f*/
  if ( IioTailX_FFD18DDA(i, a2, a3, a4, (int)a5, (int)n4, a13, a15) ) /*0xffd1af7b*/
    return 1; /*0xffd1af7b*/
  IioTailX_FFD192D9(i, a2, a4, (int)a5, (int)n4); /*0xffd1af92*/
  if ( IioTailX_FFD18930(i, a2, a4, (int)a5, (int)n4, a15) ) /*0xffd1afa6*/
    return 1; /*0xffd1afb0*/
  IioTailX_FFD19A93(i, a2, a4, (int)a5, (int)buf); /*0xffd1afbe*/
  IioTailX_FFD193BF(i, a2, a4, (int)a5, (int)n4); /*0xffd1afce*/
  return 0; /*0xffd1afda*/
}

// Function: IioTailX_FFD1AFDE @ 0xffd1afde (0x132 bytes)
// Index: 2499/2560

char __cdecl IioTailX_FFD1AFDE(int i, int a2, int buf, _DWORD *a4, int a5, int n2, int a7, int a8)
{
  int v8; // ebp
  char n2_1; // bh
  int v10; // esi
  int v11; // eax
  _BYTE *v12; // esi
  int v13; // ecx
  int v14; // ecx
  unsigned __int8 j; // [esp+10h] [ebp-10h]
  char n2_2; // [esp+14h] [ebp-Ch]
  char v18; // [esp+18h] [ebp-8h]
  int v19; // [esp+1Ch] [ebp-4h]

  v18 = n2 == 1; /*0xffd1afe8*/
  v8 = 0; /*0xffd1aff5*/
  for ( j = 0; j < 4u; ++j ) /*0xffd1aff7*/
  {
    n2_1 = 0; /*0xffd1afff*/
    v10 = 0; /*0xffd1b001*/
    n2_2 = 0; /*0xffd1b003*/
    v19 = 0; /*0xffd1b007*/
    do /*0xffd1b0ec*/
    {
      LOBYTE(v11) = IioTailFunc7BC9(i, a2, buf, a4, j, n2_2); /*0xffd1b020*/
      if ( (_BYTE)v11 ) /*0xffd1b02a*/
      {
        if ( a5 ) /*0xffd1b035*/
        {
          v13 = a8; /*0xffd1b08b*/
          v11 = v10 + v8; /*0xffd1b08f*/
          LOBYTE(v13) = *(_BYTE *)(v10 + v8 + a8); /*0xffd1b092*/
          if ( (_BYTE)v13 ) /*0xffd1b097*/
          {
            (*(void (__cdecl **)(int, unsigned __int8, char, int, _DWORD))(*(_DWORD *)(i + 20) + 220))( /*0xffd1b0a8*/
              i,
              j,
              n2_2,
              v13,
              0);
            v11 = v10 + v8; /*0xffd1b0b1*/
          }
          if ( n2 != 2 ) /*0xffd1b0b9*/
          {
            v14 = a7; /*0xffd1b0bb*/
            LOBYTE(v14) = *(_BYTE *)(v11 + a7); /*0xffd1b0bf*/
            if ( (_BYTE)v14 != v18 ) /*0xffd1b0c4*/
              LOBYTE(v11) = (*(int (__cdecl **)(int, unsigned __int8, char, int, _DWORD))(*(_DWORD *)(i + 20) + 216))( /*0xffd1b0d5*/
                              i,
                              j,
                              n2_2,
                              v14,
                              0);
          }
        }
        else
        {
          if ( n2 != 2 ) /*0xffd1b03c*/
            (*(void (__cdecl **)(int, unsigned __int8, char, char, int))(*(_DWORD *)(i + 20) + 216))( /*0xffd1b056*/
              i,
              j,
              n2_2,
              v18,
              a7 + v10 + v8);
          v12 = (_BYTE *)(a8 + v8 + v10); /*0xffd1b064*/
          (*(void (__cdecl **)(int, unsigned __int8, char, _DWORD, _BYTE *))(*(_DWORD *)(i + 20) + 220))( /*0xffd1b074*/
            i,
            j,
            n2_2,
            0,
            v12);
          LOBYTE(v11) = *v12 != 0; /*0xffd1b080*/
          *v12 = v11; /*0xffd1b083*/
          v10 = v19; /*0xffd1b085*/
        }
      }
      ++n2_1; /*0xffd1b0de*/
      ++v10; /*0xffd1b0e0*/
      n2_2 = n2_1; /*0xffd1b0e1*/
      v19 = v10; /*0xffd1b0e5*/
    }
    while ( (unsigned __int8)n2_1 < 2u ); /*0xffd1b0ec*/
    v8 += 2; /*0xffd1b0f6*/
  }
  return v11; /*0xffd1b108*/
}

// Function: IioTailX_FFD1B110 @ 0xffd1b110 (0x162 bytes)
// Index: 2500/2560

int __cdecl IioTailX_FFD1B110(int i, int *buf, unsigned __int8 n3, char a4, unsigned int a5, char a6, unsigned int a7)
{
  int v7; // esi
  int v8; // edi
  unsigned __int8 n3_1; // al
  char v11; // al
  unsigned int v12; // ebx
  unsigned int v13; // edx
  unsigned int v14; // edx

  v7 = *buf; /*0xffd1b117*/
  v8 = buf[2]; /*0xffd1b11a*/
  n3_1 = *(_BYTE *)(*buf + 5); /*0xffd1b11d*/
  if ( n3_1 && n3_1 <= n3 ) /*0xffd1b12c*/
  {
    if ( !*(_BYTE *)(v7 + 11) ) /*0xffd1b135*/
    {
      IioTailFunc6DEB( /*0xffd1b14b*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        3935,
        buf[2]);
      return 1; /*0xffd1b155*/
    }
    if ( !*(_BYTE *)(v7 + 12) ) /*0xffd1b15a*/
    {
      IioTailFunc6DEB( /*0xffd1b165*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        3945,
        buf[2]);
      return 1; /*0xffd1b165*/
    }
    if ( !*(_BYTE *)(v7 + 13) ) /*0xffd1b167*/
    {
      IioTailFunc6DEB( /*0xffd1b172*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        3955,
        buf[2]);
      return 1; /*0xffd1b172*/
    }
    if ( !*(_BYTE *)(v7 + 14) ) /*0xffd1b174*/
    {
      IioTailFunc6DEB( /*0xffd1b17f*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        3965,
        buf[2]);
      return 1; /*0xffd1b17f*/
    }
    if ( !*(_BYTE *)(v7 + 15) ) /*0xffd1b181*/
    {
      IioTailFunc6DEB( /*0xffd1b18c*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        3975,
        buf[2]);
      return 1; /*0xffd1b18c*/
    }
    if ( !*(_BYTE *)(v7 + 16) ) /*0xffd1b18e*/
    {
      IioTailFunc6DEB( /*0xffd1b199*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        3985,
        buf[2]);
      return 1; /*0xffd1b199*/
    }
    if ( !*(_BYTE *)(v7 + 17) ) /*0xffd1b19b*/
    {
      IioTailFunc6DEB( /*0xffd1b1a6*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        3995,
        buf[2]);
      return 1; /*0xffd1b1a6*/
    }
    v11 = IioTailX_FFD1FD65(*(unsigned __int16 *)(v7 + 20), 32); /*0xffd1b1af*/
    if ( !*(_WORD *)(v7 + 20) || ((v12 = *(unsigned __int16 *)(v7 + 20), v12 != 1 << v11) || v12 > 1 << a6) && v12 > a7 ) /*0xffd1b1e2*/
    {
      IioTailFunc6DEB( /*0xffd1b24c*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        4010,
        v8);
      return 1; /*0xffd1b24c*/
    }
    v13 = *(_DWORD *)(v7 + 22); /*0xffd1b1e4*/
    if ( !v13 ) /*0xffd1b1e9*/
      goto LABEL_25; /*0xffd1b1e9*/
    if ( a4 ) /*0xffd1b1f5*/
    {
      if ( v13 > 1 << a5 ) /*0xffd1b1fd*/
      {
LABEL_25:
        IioTailFunc6DEB( /*0xffd1b1ff*/
          i,
          4,
          "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
          4024,
          v8);
        return 1; /*0xffd1b21a*/
      }
    }
    else if ( v13 > a5 ) /*0xffd1b21e*/
    {
      goto LABEL_25; /*0xffd1b21e*/
    }
    v14 = *(_DWORD *)(v7 + 26); /*0xffd1b220*/
    if ( !v14 ) /*0xffd1b225*/
    {
LABEL_31:
      IioTailFunc6DEB( /*0xffd1b233*/
        i,
        4,
        "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
        4038,
        v8);
      return 1; /*0xffd1b239*/
    }
    if ( a4 ) /*0xffd1b229*/
    {
      if ( v14 > 1 << a5 ) /*0xffd1b231*/
        goto LABEL_31; /*0xffd1b231*/
    }
    else if ( v14 > a5 ) /*0xffd1b23d*/
    {
      goto LABEL_31; /*0xffd1b23d*/
    }
    return 0; /*0xffd1b23f*/
  }
  else
  {
    IioTailFunc6DEB( /*0xffd1b262*/
      i,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
      3925,
      buf[2]);
    return 1; /*0xffd1b26c*/
  }
}

// Function: IioTailX_FFD1B272 @ 0xffd1b272 (0x12e bytes)
// Index: 2501/2560

char __cdecl IioTailX_FFD1B272(_DWORD *i, int buf, int a3)
{
  char result; // al
  int n2; // edi
  int *v5; // edx
  char v6; // bl
  int *src_1; // ecx
  int n3; // esi
  int v9; // eax
  _DWORD *v10; // eax
  int n2_1; // edx
  int n3_1; // ecx
  _BYTE src[24]; // [esp+Ch] [ebp-18h] BYREF

  result = IioTailFunc6E96((int)i, buf + 12, buf + 36); /*0xffd1b28d*/
  if ( result ) /*0xffd1b297*/
  {
    n2 = 2; /*0xffd1b2a0*/
    v5 = (int *)(buf + 1516); /*0xffd1b2a1*/
    v6 = 0; /*0xffd1b2a7*/
    src_1 = (int *)src; /*0xffd1b2ab*/
    do /*0xffd1b2cc*/
    {
      n3 = 3; /*0xffd1b2b2*/
      do /*0xffd1b2c7*/
      {
        v9 = *v5; /*0xffd1b2b3*/
        *src_1 = *v5; /*0xffd1b2b5*/
        if ( v9 == 1 ) /*0xffd1b2ba*/
          v6 = 1; /*0xffd1b2bc*/
        ++src_1; /*0xffd1b2be*/
        ++v5; /*0xffd1b2c1*/
        --n3; /*0xffd1b2c4*/
      }
      while ( n3 ); /*0xffd1b2c7*/
      --n2; /*0xffd1b2c9*/
    }
    while ( n2 ); /*0xffd1b2cc*/
    if ( v6 ) /*0xffd1b2d4*/
    {
      v10 = (_DWORD *)(buf + 1516); /*0xffd1b2df*/
      n2_1 = 2; /*0xffd1b2e5*/
      do /*0xffd1b2fc*/
      {
        n3_1 = 3; /*0xffd1b2e8*/
        do /*0xffd1b2f7*/
        {
          if ( *v10 ) /*0xffd1b2e9*/
            *v10 = 0; /*0xffd1b2ee*/
          ++v10; /*0xffd1b2f1*/
          --n3_1; /*0xffd1b2f4*/
        }
        while ( n3_1 ); /*0xffd1b2f7*/
        --n2_1; /*0xffd1b2f9*/
      }
      while ( n2_1 ); /*0xffd1b2fc*/
      if ( IioTailX_FFD1A9F7( /*0xffd1b360*/
             (int)i,
             buf + 12,
             buf + 36,
             buf + 483,
             buf + 743,
             *(_DWORD *)(buf + 2208),
             *(_BYTE *)(buf + 2265),
             1)
        || IioTailX_FFD182B1((int)i, 0, *(_DWORD *)(buf + 2208))
        || IioTailX_FFD19C21(i, buf + 12, buf + 36, (_DWORD *)(buf + 483), buf + 743, *(_DWORD *)(buf + 2208), 0, a3) )
      {
        return 1; /*0xffd1b36c*/
      }
      else
      {
        qmemcpy((void *)(buf + 1516), src, 0x18u); /*0xffd1b37d*/
        return IioTailX_FFD182B1((int)i, (int)IioTailX_FFD1E74E, *(_DWORD *)(buf + 2208)) != 0; /*0xffd1b395*/
      }
    }
    else
    {
      return 0; /*0xffd1b2d6*/
    }
  }
  return result; /*0xffd1b39a*/
}

// Function: IioTailX_FFD1B3A0 @ 0xffd1b3a0 (0x240 bytes)
// Index: 2502/2560

bool __cdecl IioTailX_FFD1B3A0(int i_1, _DWORD *a6)
{
  int i_2; // esi
  unsigned __int8 n4; // bl
  _DWORD *v4; // ecx
  _DWORD *v5; // ebp
  _DWORD *v6; // edi
  unsigned __int8 n2; // bh
  unsigned __int8 n4_1; // bl
  char n3; // bl
  unsigned __int8 n2_1; // bh
  int n20_1; // edx
  int v12; // ecx
  unsigned __int8 n4_2; // bl
  unsigned __int8 n2_2; // bh
  unsigned __int8 v16; // [esp+10h] [ebp-2Ch]
  char n4_3; // [esp+10h] [ebp-2Ch]
  unsigned __int8 v18; // [esp+10h] [ebp-2Ch]
  char v19; // [esp+14h] [ebp-28h]
  unsigned __int8 i; // [esp+14h] [ebp-28h]
  char v21; // [esp+14h] [ebp-28h]
  int v22; // [esp+18h] [ebp-24h]
  int n20; // [esp+1Ch] [ebp-20h]
  char n3_1; // [esp+20h] [ebp-1Ch]
  int v25; // [esp+24h] [ebp-18h]
  unsigned __int8 n2_3; // [esp+2Ch] [ebp-10h]
  int v27; // [esp+30h] [ebp-Ch]

  i_2 = i_1; /*0xffd1b3a6*/
  n4 = 0; /*0xffd1b3aa*/
  v16 = 0; /*0xffd1b3b1*/
  v4 = (_DWORD *)((char *)a6 + 483); /*0xffd1b3b5*/
  v5 = a6 + 3; /*0xffd1b3c2*/
  v6 = a6 + 9; /*0xffd1b3c9*/
  do /*0xffd1b413*/
  {
    n2 = 0; /*0xffd1b3cb*/
    v19 = 0; /*0xffd1b3cd*/
    do /*0xffd1b408*/
    {
      if ( IioTailFunc7BC9(i_1, (int)v5, (int)v6, v4, v16, v19) ) /*0xffd1b3dd*/
        (*(void (__cdecl **)(int, unsigned __int8, char))(*(_DWORD *)(i_1 + 12) + 60))(i_1, v16, v19); /*0xffd1b3f5*/
      v4 = (_DWORD *)((char *)a6 + 483); /*0xffd1b3fb*/
      v19 = ++n2; /*0xffd1b401*/
    }
    while ( n2 < 2u ); /*0xffd1b408*/
    v16 = ++n4; /*0xffd1b40c*/
  }
  while ( n4 < 4u ); /*0xffd1b413*/
  if ( IioTailFunc6E96(i_1, (int)v5, (int)v6) ) /*0xffd1b418*/
  {
    n4_1 = 0; /*0xffd1b42c*/
    n20 = 20; /*0xffd1b42e*/
    n4_3 = 0; /*0xffd1b436*/
    do /*0xffd1b559*/
    {
      if ( IioTailFunc7D83(i_2, (int)v5, (_DWORD *)((char *)a6 + 483), n4_3) ) /*0xffd1b447*/
      {
        v25 = 0; /*0xffd1b459*/
        for ( i = 0; i < 2u; ++i ) /*0xffd1b45e*/
        {
          n3 = 0; /*0xffd1b462*/
          v22 = 0; /*0xffd1b464*/
          n3_1 = 0; /*0xffd1b469*/
          do /*0xffd1b51d*/
          {
            if ( IioTailFunc7AC8(i_2, (int)v5, (int)(a6 + 9), (int)a6 + 483, n4_3, i, n3_1) ) /*0xffd1b486*/
            {
              n2_1 = 0; /*0xffd1b496*/
              n20_1 = n20; /*0xffd1b498*/
              n2_3 = 0; /*0xffd1b49c*/
              v12 = 0; /*0xffd1b4ac*/
              v27 = 0; /*0xffd1b4b2*/
              do /*0xffd1b50b*/
              {
                i_2 = i_1; /*0xffd1b4c2*/
                if ( ((unsigned __int8)(1 << v12) & *((_BYTE *)a6 + 3 * n20 + 3 * v25 + v22 - 12)) != 0 /*0xffd1b4d9*/
                  && *((_BYTE *)a6 + 6 * n20_1 + 6 * v25 + 2 * v22 + v12) == 13 )
                {
                  (*(void (__cdecl **)(int, char, unsigned __int8, char, unsigned __int8))(*(_DWORD *)(i_1 + 24) + 28))( /*0xffd1b4ef*/
                    i_1,
                    n4_3,
                    i,
                    n3_1,
                    n2_3);
                  n20_1 = n20; /*0xffd1b4f2*/
                  v12 = v27; /*0xffd1b4f9*/
                }
                ++n2_1; /*0xffd1b4fd*/
                ++v12; /*0xffd1b4ff*/
                n2_3 = n2_1; /*0xffd1b500*/
                v27 = v12; /*0xffd1b504*/
              }
              while ( n2_1 < 2u ); /*0xffd1b50b*/
              v5 = a6 + 3; /*0xffd1b50d*/
            }
            ++n3; /*0xffd1b510*/
            ++v22; /*0xffd1b512*/
            n3_1 = n3; /*0xffd1b516*/
          }
          while ( (unsigned __int8)n3 < 3u ); /*0xffd1b51d*/
          ++v25; /*0xffd1b529*/
        }
        (*(void (__cdecl **)(int, char))(*(_DWORD *)(i_2 + 24) + 40))(i_2, n4_3); /*0xffd1b542*/
        n4_1 = n4_3; /*0xffd1b545*/
      }
      n20 += 2; /*0xffd1b54b*/
      n4_3 = ++n4_1; /*0xffd1b552*/
    }
    while ( n4_1 < 4u ); /*0xffd1b559*/
  }
  n4_2 = 0; /*0xffd1b563*/
  v18 = 0; /*0xffd1b565*/
  do /*0xffd1b5b0*/
  {
    n2_2 = 0; /*0xffd1b569*/
    v21 = 0; /*0xffd1b56b*/
    do /*0xffd1b5a5*/
    {
      if ( IioTailFunc7BC9(i_2, (int)v5, (int)(a6 + 9), (_DWORD *)((char *)a6 + 483), v18, v21) ) /*0xffd1b57e*/
        (*(void (__cdecl **)(int, unsigned __int8, char))(*(_DWORD *)(i_2 + 12) + 56))(i_2, v18, v21); /*0xffd1b596*/
      v21 = ++n2_2; /*0xffd1b59e*/
    }
    while ( n2_2 < 2u ); /*0xffd1b5a5*/
    v18 = ++n4_2; /*0xffd1b5a9*/
  }
  while ( n4_2 < 4u ); /*0xffd1b5b0*/
  return IioTailX_FFD1E011(i_2, (int)v5, (int)(a6 + 9), (int)a6 + 483, *a6, (int)a6, 1, a6[2]); /*0xffd1b5d8*/
}

// Function: IioTailX_FFD1B5E0 @ 0xffd1b5e0 (0x1a0 bytes)
// Index: 2503/2560

char __cdecl IioTailX_FFD1B5E0(int i, int buf, _BYTE *p_n2)
{
  unsigned __int8 n4; // bl
  _BYTE *p_n2_1; // edi
  int v5; // ebp
  unsigned __int8 n2; // bh
  int v7; // ecx
  int v8; // eax
  unsigned int *v9; // ebp
  unsigned __int8 v10; // dl
  int v11; // edi
  int v12; // ecx
  int v14; // [esp-4h] [ebp-34h]
  char v15; // [esp+13h] [ebp-1Dh] BYREF
  int n3; // [esp+14h] [ebp-1Ch]
  int v17; // [esp+18h] [ebp-18h]
  int v18; // [esp+1Ch] [ebp-14h]
  char v19[4]; // [esp+20h] [ebp-10h] BYREF
  int n3_1; // [esp+24h] [ebp-Ch]
  int n4_1; // [esp+28h] [ebp-8h]
  int n2_1; // [esp+2Ch] [ebp-4h]

  n4 = 0; /*0xffd1b5ea*/
  p_n2_1 = p_n2; /*0xffd1b5ed*/
  LOBYTE(v18) = 0; /*0xffd1b5f1*/
  v5 = buf + 223; /*0xffd1b5f5*/
  *p_n2 = 1; /*0xffd1b5fb*/
LABEL_2:
  n2 = 0; /*0xffd1b5fe*/
  v7 = buf + 12; /*0xffd1b600*/
  v8 = buf + 36; /*0xffd1b603*/
  LOBYTE(v17) = 0; /*0xffd1b606*/
LABEL_3:
  LOBYTE(n3) = 0; /*0xffd1b60a*/
  while ( !IioTailFunc7B25(i, v7, v8, v5, v18, v17, n3) ) /*0xffd1b62c*/
  {
LABEL_14:
    v7 = buf + 12; /*0xffd1b731*/
    LOBYTE(n3) = n3 + 1; /*0xffd1b73a*/
    v8 = buf + 36; /*0xffd1b740*/
    if ( (unsigned __int8)n3 >= 3u ) /*0xffd1b743*/
    {
      ++n2; /*0xffd1b749*/
      v8 = buf + 36; /*0xffd1b74b*/
      LOBYTE(v17) = n2; /*0xffd1b74e*/
      v7 = buf + 12; /*0xffd1b752*/
      if ( n2 < 2u ) /*0xffd1b758*/
        goto LABEL_3; /*0xffd1b758*/
      LOBYTE(v18) = ++n4; /*0xffd1b760*/
      if ( n4 >= 4u ) /*0xffd1b767*/
        return 0; /*0xffd1b776*/
      goto LABEL_2; /*0xffd1b767*/
    }
  }
  v14 = *(_DWORD *)(buf + 8); /*0xffd1b632*/
  v15 = 1; /*0xffd1b639*/
  if ( !(*(unsigned __int8 (__cdecl **)(int, int, int, int, _DWORD, int, int, int, char *, char *, int))(buf + 2212))( /*0xffd1b663*/
          i,
          buf + 12,
          buf + 36,
          v5,
          *(_DWORD *)(buf + 2208),
          v18,
          v17,
          n3,
          &v15,
          v19,
          v14) )
  {
    if ( v15 ) /*0xffd1b678*/
    {
      if ( v19[1] ) /*0xffd1b684*/
      {
        n3_1 = (unsigned __int8)n3; /*0xffd1b68f*/
        n4_1 = n4; /*0xffd1b6b8*/
        n2_1 = n2; /*0xffd1b6c1*/
        v9 = IioTailX_FFD1B780( /*0xffd1b6e2*/
               i,
               buf,
               1,
               0,
               *(_BYTE *)(buf + (unsigned __int8)v19[0] + 2 * ((unsigned __int8)n3 + 3 * (n2 + 2 * n4 + 20))) == 13,
               v18,
               v17,
               n3,
               v19[0],
               0,
               0,
               0,
               0);
        if ( v9 ) /*0xffd1b6e9*/
        {
          v10 = 0; /*0xffd1b6eb*/
          if ( *(_BYTE *)(buf + 21) ) /*0xffd1b6ed*/
          {
            v11 = 72 * (n3_1 + 3 * (n2_1 + 2 * n4_1)); /*0xffd1b704*/
            do /*0xffd1b725*/
            {
              v12 = v11 + v10++; /*0xffd1b70d*/
              *(_BYTE *)(v12 + buf + 2394) = *((_BYTE *)v9 + 4); /*0xffd1b711*/
              *(_BYTE *)(v12 + buf + 4122) = *((_BYTE *)v9 + 5); /*0xffd1b71b*/
            }
            while ( v10 < *(_BYTE *)(buf + 21) ); /*0xffd1b725*/
            p_n2_1 = p_n2; /*0xffd1b727*/
          }
        }
        v5 = buf + 223; /*0xffd1b72b*/
      }
      else
      {
        *p_n2_1 = 0; /*0xffd1b777*/
      }
    }
    goto LABEL_14; /*0xffd1b72b*/
  }
  return 1; /*0xffd1b76f*/
}

// Function: IioTailX_FFD1B780 @ 0xffd1b780 (0xe0 bytes)
// Index: 2504/2560

unsigned int *__cdecl IioTailX_FFD1B780(
        int a1,
        int a2,
        int a3,
        int a4,
        char a5,
        char a6,
        char a7,
        char a8,
        char a9,
        char a10,
        char a11,
        char a12,
        char a13)
{
  unsigned int *i_1; // edx
  unsigned int v14; // esi
  char v15; // bl
  int v16; // edi
  unsigned int *i; // ebp
  unsigned int v18; // ecx

  i_1 = 0; /*0xffd1b784*/
  v14 = *(_DWORD *)(a2 + 2228); /*0xffd1b789*/
  v15 = 0; /*0xffd1b78f*/
  v16 = 0; /*0xffd1b791*/
  if ( v14 )
  {
    for ( i = *(unsigned int **)(a2 + 2232); ; i += 3 )
    {
      v18 = *i; /*0xffd1b7a6*/
      i_1 = i; /*0xffd1b7a9*/
      if ( (*i & 7) == a3 /*0xffd1b840*/
        && ((v18 >> 26) & 3) == a4
        && ((v18 & 0x10000000) != 0) == a5
        && ((v18 >> 3) & 7) == a6
        && ((*i & 0x40) != 0) == a7
        && ((v18 >> 7) & 3) == a8
        && ((v18 >> 9) & 3) == a9
        && ((v18 >> 11) & 7) == a10
        && (unsigned __int16)v18 >> 14 == a11
        && (BYTE2(v18) & 7) == a12
        && ((v18 >> 19) & 0x7F) == a13 )
      {
        break; /*0xffd1b840*/
      }
      if ( ++v16 >= v14 )
        return v15 != 0 ? i_1 : 0;
    }
    v15 = 1; /*0xffd1b850*/
  }
  return v15 != 0 ? i_1 : 0;
}

// Function: IioTailX_FFD1B860 @ 0xffd1b860 (0x32a bytes)
// Index: 2505/2560

char __cdecl IioTailX_FFD1B860(int i, int buf, int n3, int n2)
{
  unsigned __int8 v4; // dl
  unsigned __int8 j; // cl
  unsigned int v7; // edi
  int v8; // eax
  unsigned int *v9; // ebp
  unsigned int v10; // ebx
  unsigned __int8 v11; // bl
  unsigned __int8 v12; // bl
  unsigned __int8 count; // al
  unsigned __int8 v14; // dl
  char v15; // di
  int v16; // eax
  int n4; // eax
  int v18; // eax
  int j_2; // edi
  unsigned __int8 v20; // cl
  unsigned __int8 v21; // al
  char *v22; // edx
  bool v23; // cf
  char v24[4]; // [esp+14h] [ebp-5Ch] BYREF
  char v25[4]; // [esp+18h] [ebp-58h] BYREF
  __int16 v26; // [esp+1Ch] [ebp-54h] BYREF
  __int16 v27; // [esp+20h] [ebp-50h] BYREF
  int v28; // [esp+24h] [ebp-4Ch] BYREF
  int v29; // [esp+28h] [ebp-48h] BYREF
  unsigned int v30; // [esp+2Ch] [ebp-44h]
  int v31; // [esp+30h] [ebp-40h]
  int v32; // [esp+34h] [ebp-3Ch]
  int v33; // [esp+38h] [ebp-38h]
  int v34; // [esp+3Ch] [ebp-34h]
  int v35; // [esp+40h] [ebp-30h]
  int v36; // [esp+44h] [ebp-2Ch]
  unsigned int v37; // [esp+48h] [ebp-28h]
  unsigned int v38; // [esp+4Ch] [ebp-24h]
  unsigned int v39; // [esp+50h] [ebp-20h]
  unsigned int v40; // [esp+54h] [ebp-1Ch]
  int v41; // [esp+58h] [ebp-18h]
  int v42; // [esp+5Ch] [ebp-14h]
  int j_1; // [esp+60h] [ebp-10h]
  _BYTE bufa[12]; // [esp+64h] [ebp-Ch] BYREF

  v4 = 0; /*0xffd1b863*/
  while ( 2 ) /*0xffd1b876*/
  {
    for ( j = 0; j < 4u; ++j ) /*0xffd1b876*/
    {
      if ( n44[4 * v4 + j] == *(_DWORD *)(buf + 2380) ) /*0xffd1b887*/
      {
        v7 = 0; /*0xffd1b8c4*/
        v30 = 0; /*0xffd1b8c6*/
        if ( *(_DWORD *)(buf + 2228) ) /*0xffd1b8ca*/
        {
          j_1 = j; /*0xffd1b8d9*/
          v8 = 0; /*0xffd1b8dd*/
          v34 = 0; /*0xffd1b8df*/
          do /*0xffd1bb7d*/
          {
            v9 = (unsigned int *)(v8 + *(_DWORD *)(buf + 2232)); /*0xffd1b8e9*/
            v10 = *v9; /*0xffd1b8eb*/
            if ( ((*v9 >> 26) & 3) == *(_DWORD *)(buf + 2372) && (*v9 & 7) == n2 ) /*0xffd1b90e*/
            {
              LOBYTE(v33) = (v10 >> 3) & 7; /*0xffd1b91b*/
              LOBYTE(v32) = (v10 & 0x40) != 0; /*0xffd1b926*/
              LOBYTE(v31) = (v10 >> 7) & 3; /*0xffd1b931*/
              v38 = (v10 >> 9) & 0xFFFFFF03; /*0xffd1b93f*/
              LOBYTE(v36) = (v10 >> 9) & 3; /*0xffd1b943*/
              v40 = (v10 >> 11) & 0xFFFFFF07; /*0xffd1b951*/
              LOBYTE(v35) = (v10 >> 11) & 7; /*0xffd1b955*/
              v37 = (v10 >> 14) & 0xFFFFFF03; /*0xffd1b963*/
              LOBYTE(v42) = (v10 >> 14) & 3; /*0xffd1b967*/
              v39 = HIWORD(v10) & 0xFFFFFF07; /*0xffd1b97a*/
              v11 = (v10 >> 19) & 0x7F; /*0xffd1b97e*/
              LOBYTE(v41) = v39; /*0xffd1b981*/
              IioTailFunc6DA4(bufa, 0, 9u); /*0xffd1b98c*/
              if ( n2 == 2 ) /*0xffd1b99c*/
              {
                bufa[v11 >> 3] = 1 << (v11 & 7); /*0xffd1b9ad*/
              }
              else
              {
                v12 = 0; /*0xffd1b9b6*/
                count = *(_BYTE *)(buf + 21) >> 3; /*0xffd1b9b8*/
                if ( count ) /*0xffd1b9bd*/
                {
                  v12 = *(_BYTE *)(buf + 21) >> 3; /*0xffd1b9bf*/
                  KtiFunc7D83(bufa, 255, count); /*0xffd1b9cd*/
                }
                v14 = 0; /*0xffd1b9d8*/
                if ( (*(_BYTE *)(buf + 21) & 7) != 0 ) /*0xffd1b9e0*/
                {
                  v15 = 0; /*0xffd1b9e5*/
                  LOBYTE(v16) = bufa[v12]; /*0xffd1b9e7*/
                  do /*0xffd1b9f8*/
                  {
                    v16 = (unsigned __int8)v16 | (1 << v15); /*0xffd1b9ee*/
                    v15 = ++v14; /*0xffd1b9f3*/
                  }
                  while ( v14 < (*(_BYTE *)(buf + 21) & 7u) ); /*0xffd1b9f8*/
                  v7 = v30; /*0xffd1b9fa*/
                  bufa[v12] = v16; /*0xffd1b9fe*/
                }
              }
              n4 = (*(int (__cdecl **)(int, int, int, int, int, int, _BYTE *, _DWORD, _DWORD, int *, int *, char *, char *))(*(_DWORD *)(i + 12) + 72))( /*0xffd1ba43*/
                     i,
                     v33,
                     v32,
                     v31,
                     v36,
                     v35,
                     bufa,
                     *(_DWORD *)(buf + 2372),
                     *(_DWORD *)(buf + 2380),
                     &v28,
                     &v29,
                     v25,
                     v24);
              if ( n4 != 4 ) /*0xffd1ba4c*/
              {
                if ( IioTailFunc6DC3( /*0xffd1ba61*/
                       i,
                       n4,
                       (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
                       1093,
                       *(_DWORD *)(buf + 8)) )
                {
                  return 1; /*0xffd1ba6b*/
                }
                if ( n2 == 3 && ((_BYTE)v38 != (_BYTE)v37 || (_BYTE)v40 != (_BYTE)v39) ) /*0xffd1ba91*/
                {
                  v18 = (*(int (__cdecl **)(int, int, int, int, int, int, _BYTE *, _DWORD, _DWORD, __int16 *, __int16 *, char *, char *))(*(_DWORD *)(i + 12) + 72))( /*0xffd1bad4*/
                          i,
                          v33,
                          v32,
                          v31,
                          v42,
                          v41,
                          bufa,
                          *(_DWORD *)(buf + 2372),
                          *(_DWORD *)(buf + 2380),
                          &v26,
                          &v27,
                          v25,
                          v24);
                  if ( IioTailFunc6DC3( /*0xffd1bae6*/
                         i,
                         v18,
                         (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
                         1128,
                         *(_DWORD *)(buf + 8)) )
                  {
                    return 1; /*0xffd1baf0*/
                  }
                  if ( (__int16)v28 < v26 ) /*0xffd1bb00*/
                    v28 = (unsigned __int16)v26; /*0xffd1bb05*/
                  if ( (__int16)v29 > v27 ) /*0xffd1bb13*/
                    v29 = (unsigned __int16)v27; /*0xffd1bb18*/
                }
                j_2 = j_1; /*0xffd1bb1c*/
                v20 = 0; /*0xffd1bb20*/
                do /*0xffd1bb61*/
                {
                  if ( (n3 || !v20) && (n3 != 1 || v20 == 1) ) /*0xffd1bb37*/
                  {
                    if ( v20 ) /*0xffd1bb3b*/
                      v21 = v29; /*0xffd1bb49*/
                    else
                      v21 = abs16(v28); /*0xffd1bb45*/
                    v22 = (char *)v9 + v20; /*0xffd1bb50*/
                    if ( (unsigned __int8)v22[2 * j_2 + 4] > v21 ) /*0xffd1bb56*/
                      v22[2 * j_2 + 4] = v21; /*0xffd1bb58*/
                  }
                  v23 = v20++ == 0xFF; /*0xffd1bb5e*/
                }
                while ( v23 || v20 == 1 ); /*0xffd1bb61*/
                v7 = v30; /*0xffd1bb63*/
              }
            }
            ++v7; /*0xffd1bb6b*/
            v8 = v34 + 12; /*0xffd1bb6c*/
            v30 = v7; /*0xffd1bb6f*/
            v34 += 12; /*0xffd1bb73*/
          }
          while ( v7 < *(_DWORD *)(buf + 2228) ); /*0xffd1bb7d*/
        }
        return 0; /*0xffd1bb83*/
      }
    }
    if ( ++v4 < 3u ) /*0xffd1b895*/
      continue; /*0xffd1b895*/
    break;
  }
  IioTailFunc6DEB( /*0xffd1b8ad*/
    i,
    1,
    "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
    1015,
    *(_DWORD *)(buf + 8));
  return 1; /*0xffd1b8b7*/
}

// Function: IioTailX_FFD1BB8A @ 0xffd1bb8a (0x60 bytes)
// Index: 2506/2560

__int16 __cdecl IioTailX_FFD1BB8A(int n40)
{
  if ( n40 <= 40 ) /*0xffd1bb91*/
  {
    switch ( n40 ) /*0xffd1bb93*/
    {
      case 40: /*0xffd1bb93*/
        return 16; /*0xffd1bbbe*/
      case 1: /*0xffd1bb93*/
        return 1; /*0xffd1bbba*/
      case 5: /*0xffd1bb93*/
        return 4; /*0xffd1bbb6*/
      case 22: /*0xffd1bb93*/
        return 2; /*0xffd1bbb2*/
      case 23: /*0xffd1bb93*/
        return 8; /*0xffd1bbae*/
    }
    return 0; /*0xffd1bba9*/
  }
  switch ( n40 ) /*0xffd1bbc2*/
  {
    case ',': /*0xffd1bbc2*/
      return 64; /*0xffd1bbe8*/
    case '5': /*0xffd1bbc2*/
      return 32; /*0xffd1bbe4*/
    case '<': /*0xffd1bbc2*/
      return 128; /*0xffd1bbdc*/
  }
  if ( n40 != 61 ) /*0xffd1bbd1*/
    return 0; /*0xffd1bbd5*/
  return 256; /*0xffd1bbae*/
}

// Function: IioTailX_FFD1BBEA @ 0xffd1bbea (0x78 bytes)
// Index: 2507/2560

char __cdecl IioTailX_FFD1BBEA(int a1, int *a2, char value, void **p_buf)
{
  int v4; // eax
  int v6; // ecx

  v4 = (*(int (__cdecl **)(int, void **))(*(_DWORD *)(a1 + 8) + 56))(a1, p_buf); /*0xffd1bbfa*/
  if ( IioTailFunc6DC3( /*0xffd1bc10*/
         a1,
         v4,
         (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
         1532,
         a2[2]) )
  {
    return 1; /*0xffd1bc1c*/
  }
  v6 = a2[557]; /*0xffd1bc20*/
  if ( !v6 ) /*0xffd1bc28*/
    a2[558] = (int)*p_buf; /*0xffd1bc2c*/
  a2[557] = v6 + 1; /*0xffd1bc37*/
  IioTailFunc6DA4(*p_buf, 0, 4u); /*0xffd1bc41*/
  IioTailFunc6DA4((char *)*p_buf + 4, value, 8u); /*0xffd1bc54*/
  return 0; /*0xffd1bc5e*/
}

// Function: IioTailX_FFD1BC62 @ 0xffd1bc62 (0x512 bytes)
// Index: 2508/2560

char __cdecl IioTailX_FFD1BC62(int __return_address, _DWORD *buf, char a3, _WORD *p_n4)
{
  _DWORD *buf_1; // esi
  _BYTE *v6; // ebx
  char v7; // al
  unsigned __int8 n2; // bh
  int v9; // esi
  unsigned __int8 n3_1; // bl
  int v11; // ebp
  int v12; // ecx
  unsigned __int8 n2_1; // bh
  unsigned __int8 n3_2; // bl
  int v15; // ebp
  _BYTE *v16; // eax
  unsigned __int8 n2_2; // bh
  unsigned __int8 n3_3; // bl
  int v19; // ebp
  int v20; // ecx
  int v21; // edx
  unsigned __int8 n3_4; // [esp+10h] [ebp-38h]
  unsigned __int8 n3_5; // [esp+10h] [ebp-38h]
  unsigned __int8 n3_6; // [esp+10h] [ebp-38h]
  unsigned __int8 n2_3; // [esp+14h] [ebp-34h]
  unsigned __int8 n2_4; // [esp+14h] [ebp-34h]
  unsigned __int8 v29; // [esp+14h] [ebp-34h]
  _BYTE *v30; // [esp+18h] [ebp-30h]
  int v31; // [esp+1Ch] [ebp-2Ch]
  int v32; // [esp+1Ch] [ebp-2Ch]
  int v33; // [esp+1Ch] [ebp-2Ch]
  int v34; // [esp+20h] [ebp-28h]
  int v35; // [esp+20h] [ebp-28h]
  int v36; // [esp+20h] [ebp-28h]
  unsigned __int8 n3; // [esp+24h] [ebp-24h]
  int v38; // [esp+28h] [ebp-20h]
  int v39; // [esp+2Ch] [ebp-1Ch]
  _BYTE bufa[24]; // [esp+30h] [ebp-18h] BYREF
  unsigned __int8 p_n4a; // [esp+58h] [ebp+10h]
  unsigned __int8 p_n4b; // [esp+58h] [ebp+10h]
  unsigned __int8 p_n4c; // [esp+58h] [ebp+10h]

  buf_1 = buf; /*0xffd1bc68*/
  v6 = (_BYTE *)*buf; /*0xffd1bc75*/
  v30 = (_BYTE *)*buf; /*0xffd1bc77*/
  *p_n4 = 0; /*0xffd1bc7b*/
  buf[593] = 0; /*0xffd1bc7e*/
  while ( ((unsigned __int8)(1 << buf_1[593]) & v6[5]) == 0 ) /*0xffd1bc93*/
  {
LABEL_69:
    if ( (int)++buf_1[593] > 1 ) /*0xffd1c160*/
      return 0; /*0xffd1c16f*/
  }
  *((_BYTE *)buf_1 + 2370) = 0; /*0xffd1bc99*/
  while ( 1 ) /*0xffd1bca0*/
  {
    if ( v6[6] ) /*0xffd1bca0*/
    {
      if ( buf_1[593] != 1 ) /*0xffd1bcad*/
        goto LABEL_12; /*0xffd1bcad*/
      n3 = (*(_BYTE *)(*buf_1 + 7) != 0) + 2; /*0xffd1bcc0*/
      if ( IioTailX_FFD1CD6C(__return_address, (int)buf_1, 1, 53, 0) ) /*0xffd1bcd7*/
        return 1; /*0xffd1bce1*/
      IioTailFunc795F( /*0xffd1bd0a*/
        __return_address,
        (int)(buf_1 + 3),
        (int)(buf_1 + 9),
        (_DWORD *)((char *)buf_1 + 223),
        (int)dword_FFD6388C,
        n3,
        (_WORD *)buf_1 + 1181);
    }
    if ( buf_1[593] == 1 && !IioTailFunc7AA7((int)buf_1 + 2362) && !*((_BYTE *)buf_1 + 168) && !a3 ) /*0xffd1bd38*/
      goto LABEL_68; /*0xffd1bd38*/
LABEL_12:
    if ( v6[6] || v6[9] ) /*0xffd1bd44*/
      *p_n4 += 2; /*0xffd1bd4a*/
    v7 = a3; /*0xffd1bd53*/
    if ( *(_BYTE *)(*buf_1 + 8) && a3 && !buf_1[593] ) /*0xffd1bd65*/
    {
      ++*p_n4; /*0xffd1bd72*/
      if ( IioTailX_FFD1CD6C(__return_address, (int)buf_1, buf_1[593], 104, 0) ) /*0xffd1bd8e*/
        return 1; /*0xffd1bd8e*/
      v31 = (int)buf_1 + 223; /*0xffd1bdbf*/
      v38 = (int)(buf_1 + 9); /*0xffd1bdc8*/
      v39 = (int)(buf_1 + 3); /*0xffd1bdd1*/
      if ( IioTailFunc76C4( /*0xffd1bdd5*/
             __return_address,
             (int)(buf_1 + 3),
             (int)(buf_1 + 9),
             (int)buf_1 + 223,
             buf_1[593],
             *((unsigned __int8 *)buf_1 + 2370),
             bufa,
             0) )
      {
        return 1; /*0xffd1bddf*/
      }
      v34 = 0; /*0xffd1bde7*/
      for ( p_n4a = 0; p_n4a < 4u; ++p_n4a ) /*0xffd1bdec*/
      {
        n2 = 0; /*0xffd1bdf0*/
        v9 = 0; /*0xffd1bdf2*/
        n2_3 = 0; /*0xffd1bdf4*/
        do /*0xffd1be52*/
        {
          n3_1 = 0; /*0xffd1bdf8*/
          v11 = 0; /*0xffd1bdfa*/
          n3_4 = 0; /*0xffd1bdfc*/
          do /*0xffd1be46*/
          {
            if ( IioTailFunc7B25(__return_address, v39, v38, v31, p_n4a, n2_3, n3_4) ) /*0xffd1be1c*/
              *p_n4 += (unsigned __int8)bufa[3 * v34 + 3 * v9 + v11]; /*0xffd1be39*/
            ++n3_1; /*0xffd1be3c*/
            ++v11; /*0xffd1be3e*/
            n3_4 = n3_1; /*0xffd1be3f*/
          }
          while ( n3_1 < 3u ); /*0xffd1be46*/
          ++n2; /*0xffd1be48*/
          ++v9; /*0xffd1be4a*/
          n2_3 = n2; /*0xffd1be4b*/
        }
        while ( n2 < 2u ); /*0xffd1be52*/
        v34 += 2; /*0xffd1be63*/
      }
      buf_1 = buf; /*0xffd1be6c*/
      v6 = v30; /*0xffd1be70*/
      v7 = a3; /*0xffd1be74*/
    }
    if ( v6[6] || v6[9] ) /*0xffd1be7e*/
    {
      v12 = buf_1[593]; /*0xffd1be88*/
      if ( !v12 || *((_BYTE *)buf_1 + 168) || v7 ) /*0xffd1be9d*/
      {
        if ( IioTailX_FFD1CD6C(__return_address, (int)buf_1, v12, 104, 0) /*0xffd1bef2*/
          || IioTailFunc76C4(
               __return_address,
               (int)(buf_1 + 3),
               (int)(buf_1 + 9),
               (int)buf_1 + 223,
               buf_1[593],
               *((unsigned __int8 *)buf_1 + 2370),
               bufa,
               0) )
        {
          return 1; /*0xffd1befc*/
        }
        v35 = 0; /*0xffd1bf04*/
        for ( p_n4b = 0; p_n4b < 4u; ++p_n4b ) /*0xffd1bf09*/
        {
          n2_1 = 0; /*0xffd1bf0d*/
          v32 = 0; /*0xffd1bf0f*/
          n2_4 = 0; /*0xffd1bf14*/
          do /*0xffd1bfa7*/
          {
            n3_2 = 0; /*0xffd1bf18*/
            v15 = 0; /*0xffd1bf1a*/
            n3_5 = 0; /*0xffd1bf1c*/
            do /*0xffd1bf98*/
            {
              if ( IioTailFunc7B25( /*0xffd1bf3f*/
                     __return_address,
                     (int)(buf_1 + 3),
                     (int)(buf_1 + 9),
                     (int)buf_1 + 223,
                     p_n4b,
                     n2_4,
                     n3_5) )
              {
                v16 = v30; /*0xffd1bf4b*/
                if ( v30[6] ) /*0xffd1bf57*/
                {
                  *p_n4 += (unsigned __int8)bufa[3 * v35 + 3 * v32 + v15]; /*0xffd1bf6a*/
                  v16 = v30; /*0xffd1bf6d*/
                }
                if ( v16[9] ) /*0xffd1bf71*/
                  *p_n4 += *((unsigned __int8 *)buf_1 + 21) * (unsigned __int8)bufa[3 * v35 + 3 * v32 + v15]; /*0xffd1bf8b*/
              }
              ++n3_2; /*0xffd1bf8e*/
              ++v15; /*0xffd1bf90*/
              n3_5 = n3_2; /*0xffd1bf91*/
            }
            while ( n3_2 < 3u ); /*0xffd1bf98*/
            ++n2_1; /*0xffd1bf9a*/
            ++v32; /*0xffd1bf9c*/
            n2_4 = n2_1; /*0xffd1bfa0*/
          }
          while ( n2_1 < 2u ); /*0xffd1bfa7*/
          v35 += 2; /*0xffd1bfb6*/
        }
        v6 = v30; /*0xffd1bfc7*/
      }
    }
    if ( v6[6] ) /*0xffd1bfcb*/
      break; /*0xffd1bfcb*/
LABEL_68:
    if ( (*((_BYTE *)buf_1 + 2370))++ != 0xFF ) /*0xffd1c146*/
      goto LABEL_69; /*0xffd1c14d*/
  }
  if ( !buf_1[593] || IioTailFunc7AA7((int)buf_1 + 2362) ) /*0xffd1bfe6*/
    *p_n4 += 2; /*0xffd1bff3*/
  if ( !IioTailX_FFD1CD6C(__return_address, (int)buf_1, buf_1[593], 53, 0) ) /*0xffd1c00d*/
  {
    if ( buf_1[593] == 1 ) /*0xffd1c024*/
      IioTailFunc7DEF( /*0xffd1c040*/
        __return_address,
        (int)(buf_1 + 3),
        (int)(buf_1 + 9),
        (int)buf_1 + 2362,
        (_DWORD *)((char *)buf_1 + 223));
    if ( !IioTailFunc76C4( /*0xffd1c072*/
            __return_address,
            (int)(buf_1 + 3),
            (int)(buf_1 + 9),
            (int)buf_1 + 223,
            buf_1[593],
            *((unsigned __int8 *)buf_1 + 2370),
            bufa,
            0) )
    {
      v33 = 0; /*0xffd1c084*/
      for ( p_n4c = 0; p_n4c < 4u; ++p_n4c ) /*0xffd1c088*/
      {
        n2_2 = 0; /*0xffd1c08c*/
        v36 = 0; /*0xffd1c08e*/
        v29 = 0; /*0xffd1c093*/
        do /*0xffd1c120*/
        {
          n3_3 = 0; /*0xffd1c097*/
          v19 = 0; /*0xffd1c099*/
          n3_6 = 0; /*0xffd1c09b*/
          do /*0xffd1c110*/
          {
            if ( IioTailFunc7B25( /*0xffd1c0da*/
                   __return_address,
                   (int)(buf_1 + 3),
                   (int)(buf_1 + 9),
                   (int)buf_1 + 223,
                   p_n4c,
                   v29,
                   n3_6)
              && (!buf_1[593] || IioTailFunc7AA7((int)buf_1 + 2362)) )
            {
              v20 = v36; /*0xffd1c0e4*/
              v21 = v33; /*0xffd1c0e8*/
              *p_n4 += (unsigned __int8)bufa[3 * v33 + 3 * v36 + v19]; /*0xffd1c0f9*/
            }
            else
            {
              v21 = v33; /*0xffd1c0fe*/
              v20 = v36; /*0xffd1c102*/
            }
            ++n3_3; /*0xffd1c106*/
            ++v19; /*0xffd1c108*/
            n3_6 = n3_3; /*0xffd1c109*/
          }
          while ( n3_3 < 3u ); /*0xffd1c110*/
          v29 = ++n2_2; /*0xffd1c115*/
          v36 = v20 + 1; /*0xffd1c119*/
        }
        while ( n2_2 < 2u ); /*0xffd1c120*/
        v33 = v21 + 2; /*0xffd1c135*/
      }
      v6 = v30; /*0xffd1c142*/
      goto LABEL_68; /*0xffd1c142*/
    }
  }
  return 1; /*0xffd1c168*/
}

// Function: IioTailX_FFD1C174 @ 0xffd1c174 (0x11a bytes)
// Index: 2509/2560

char __cdecl IioTailX_FFD1C174(
        int __return_address,
        int *a2,
        int n7,
        int a4,
        char a5,
        char a6,
        char n2,
        char n3,
        char a9,
        char a10,
        char a11,
        char a12,
        char a13,
        char value,
        void **p_buf)
{
  unsigned int *v15; // eax

  v15 = IioTailX_FFD1B780(__return_address, (int)a2, n7, a4, a5, a6, n2, n3, a9, a10, a11, a12, a13); /*0xffd1c1af*/
  *p_buf = v15; /*0xffd1c1be*/
  if ( !v15 ) /*0xffd1c1c2*/
  {
    if ( IioTailX_FFD1BBEA(__return_address, a2, value, p_buf) ) /*0xffd1c1d2*/
      return 1; /*0xffd1c1e0*/
    ++a2[1571]; /*0xffd1c1e5*/
    *(_DWORD *)*p_buf = n7 & 7 /*0xffd1c285*/
                      | *(_DWORD *)*p_buf & 0xE0000000
                      | (8
                       * (a6 & 7
                        | (8
                         * (n2 & 1
                          | (2
                           * (n3 & 3
                            | (4
                             * (a9 & 3
                              | (4
                               * (a10 & 7
                                | (8
                                 * (a11 & 3 | (4 * (a12 & 7 | (8 * (a13 & 0x7F | ((a4 & 3 | (4 * (a5 & 1))) << 7)))))))))))))))));
  }
  return 0; /*0xffd1c289*/
}

// Function: IioTailX_FFD1C28E @ 0xffd1c28e (0x87 bytes)
// Index: 2510/2560

char __cdecl IioTailX_FFD1C28E(_BYTE *a1, _BYTE *a2, int n40)
{
  if ( a2 ) /*0xffd1c295*/
    return 1; /*0xffd1c295*/
  if ( n40 > 40 ) /*0xffd1c2a1*/
  {
    switch ( n40 ) /*0xffd1c2e4*/
    {
      case ',': /*0xffd1c2e4*/
        return a1[17]; /*0xffd1c310*/
      case '5': /*0xffd1c2e4*/
        return a1[16]; /*0xffd1c308*/
      case '<': /*0xffd1c2e4*/
        return a1[18]; /*0xffd1c300*/
      case '=': /*0xffd1c2e4*/
        return a1[19]; /*0xffd1c2f8*/
      default:
        return 1; /*0xffd1c2f3*/
    }
  }
  else
  {
    switch ( n40 ) /*0xffd1c2a3*/
    {
      case 40: /*0xffd1c2a3*/
        return a1[15]; /*0xffd1c2dc*/
      case 1: /*0xffd1c2a3*/
        return a1[11]; /*0xffd1c2d4*/
      case 5: /*0xffd1c2a3*/
        return a1[13]; /*0xffd1c2cc*/
      case 22: /*0xffd1c2a3*/
        return a1[12]; /*0xffd1c2c4*/
      case 23: /*0xffd1c2a3*/
        return a1[14]; /*0xffd1c2c0*/
      default:
        return 1; /*0xffd1c29a*/
    }
  }
}

// Function: sub_FFD1C315 @ 0xffd1c315 (0x529 bytes)
// Index: 2511/2560

// Function: IioTailX_FFD1C83E @ 0xffd1c83e (0x35f bytes)
// Index: 2512/2560

bool __cdecl IioTailX_FFD1C83E(int __return_address, int a2)
{
  int v2; // ebp
  _DWORD *v3; // edi
  _DWORD *v4; // esi
  bool v5; // zf
  unsigned __int8 n4; // al
  int n4_1; // ebx
  char v8; // dl
  unsigned __int8 n2_1; // al
  int n2_2; // esi
  unsigned __int8 n3; // al
  int v12; // eax
  int n3_4; // edx
  unsigned __int8 v14; // al
  int v15; // edx
  int v16; // esi
  char v17; // al
  int v18; // edx
  int v19; // ecx
  int n3_5; // ecx
  int v21; // edx
  int v22; // ecx
  int v23; // edx
  int n3_6; // edx
  char v25; // cl
  int v26; // ecx
  int v27; // ebx
  int n3_1; // eax
  _BYTE *v29; // esi
  unsigned __int8 v30; // dl
  int v31; // eax
  int v33; // [esp-4h] [ebp-38h]
  char v34; // [esp+12h] [ebp-22h]
  char v35; // [esp+13h] [ebp-21h]
  int n3_3; // [esp+14h] [ebp-20h]
  _BYTE v37[4]; // [esp+18h] [ebp-1Ch] BYREF
  char j[4]; // [esp+1Ch] [ebp-18h]
  char i[4]; // [esp+20h] [ebp-14h]
  unsigned __int8 v40[4]; // [esp+24h] [ebp-10h]
  int n2_3; // [esp+28h] [ebp-Ch]
  int n3_2; // [esp+2Ch] [ebp-8h]
  int n2; // [esp+30h] [ebp-4h]

  v2 = a2; /*0xffd1c843*/
  v3 = (_DWORD *)(a2 + 483); /*0xffd1c84e*/
  v4 = (_DWORD *)(a2 + 223); /*0xffd1c857*/
  IioTailFunc6DA4((void *)(a2 + 483), 0, 0x104u); /*0xffd1c85d*/
  v5 = *(_DWORD *)(v2 + 2372) == 0; /*0xffd1c865*/
  n2 = 2; /*0xffd1c86f*/
  if ( v5 ) /*0xffd1c873*/
  {
    if ( *(_BYTE *)(v2 + 168) ) /*0xffd1c875*/
      v3[63] = 1; /*0xffd1c87e*/
  }
  else
  {
    v3[63] = 2; /*0xffd1c88a*/
  }
  *v3 = *v4; /*0xffd1c892*/
  n4 = 0; /*0xffd1c894*/
  v40[0] = 0; /*0xffd1c896*/
  do /*0xffd1cacd*/
  {
    n4_1 = n4; /*0xffd1c89a*/
    if ( ((1 << n4) & *v3) == 0 ) /*0xffd1c8a6*/
      goto LABEL_30; /*0xffd1c8a6*/
    v8 = 0; /*0xffd1c8b0*/
    *((_BYTE *)v3 + n4 + 4) = *((_BYTE *)v4 + n4 + 4); /*0xffd1c8b2*/
    n2_1 = 0; /*0xffd1c8b6*/
    v35 = 0; /*0xffd1c8b8*/
    i[0] = 0; /*0xffd1c8bc*/
    do /*0xffd1caaa*/
    {
      n2_2 = n2_1; /*0xffd1c8c0*/
      n2_3 = n2_1; /*0xffd1c8c6*/
      if ( ((unsigned __int8)(1 << n2_1) & *((_BYTE *)v3 + n4_1 + 4)) == 0 ) /*0xffd1c8d2*/
        goto LABEL_27; /*0xffd1c8d2*/
      v34 = 0; /*0xffd1c8db*/
      *((_BYTE *)v3 + 2 * n4_1 + n2_1 + 8) = *(_BYTE *)(n2_1 + 2 * n4_1 + v2 + 231); /*0xffd1c8e7*/
      n3 = 0; /*0xffd1c8eb*/
      j[0] = 0; /*0xffd1c8ed*/
      do /*0xffd1ca88*/
      {
        n3_3 = n3; /*0xffd1c8f7*/
        if ( ((unsigned __int8)(1 << n3) & *((_BYTE *)v3 + 2 * n4_1 + n2_2 + 8)) == 0 ) /*0xffd1c908*/
          goto LABEL_23; /*0xffd1c908*/
        if ( *(_BYTE *)(v2 + 2265) < *(_BYTE *)(n3 + 3 * (n2_2 + 2 * n4_1) + v2 + 2240) ) /*0xffd1c923*/
          *((_BYTE *)v3 + 2 * n4_1 + n2_2 + 16) |= 1 << n3; /*0xffd1c930*/
        LOBYTE(a2) = 2; /*0xffd1c937*/
        v12 = n3 + 3 * (n2_2 + 2 * (n4_1 + 4)); /*0xffd1c948*/
        n3_4 = *(unsigned __int8 *)(v12 + v2 + 223); /*0xffd1c94a*/
        *((_BYTE *)v3 + v12) = n3_4; /*0xffd1c94e*/
        v33 = *(_DWORD *)(v2 + 8); /*0xffd1c955*/
        n3_2 = n3_4; /*0xffd1c958*/
        if ( IioTailX_FFD18756( /*0xffd1c981*/
               __return_address,
               v2 + 12,
               v2 + 36,
               v2 + 223,
               *(_DWORD *)(v2 + 2208),
               v40[0],
               i[0],
               j[0],
               (char *)&a2,
               v37,
               v33) )
        {
          return 1; /*0xffd1cb99*/
        }
        v14 = a2; /*0xffd1c991*/
        if ( (_BYTE)a2 ) /*0xffd1c997*/
        {
          v15 = 3 * (n2_2 + 16 + 2 * n4_1); /*0xffd1c99f*/
          v16 = v37[0]; /*0xffd1c9a6*/
          v17 = v37[1]; /*0xffd1c9a9*/
          *((_BYTE *)v3 + n3_3 + v15) |= 1 << v37[0]; /*0xffd1c9b7*/
          v18 = v16 + 2 * (n3_3 + 3 * (n2_3 + 2 * n4_1 + 12)); /*0xffd1c9cb*/
          n2_2 = n2_3; /*0xffd1c9ce*/
          v19 = *((unsigned __int8 *)v3 + v18) | (1 << v17); /*0xffd1c9d6*/
          v14 = a2; /*0xffd1c9d9*/
          *((_BYTE *)v3 + v18) = v19; /*0xffd1c9dd*/
        }
        n3_5 = n3_2; /*0xffd1c9e0*/
        if ( n3_2 == 1 ) /*0xffd1c9e7*/
        {
          if ( v14 <= 1u ) /*0xffd1c9eb*/
          {
            n3_6 = n3_3; /*0xffd1cb5a*/
            goto LABEL_41; /*0xffd1cb5a*/
          }
          v21 = v37[2]; /*0xffd1c9f1*/
          v22 = n3_3 + 3 * (n2_2 + 2 * (n4_1 + 20)); /*0xffd1c9ff*/
          *((_BYTE *)v3 + v22) |= 1 << v37[2]; /*0xffd1ca0a*/
          v23 = v21 + 2 * (n3_3 + 3 * (n2_2 + 2 * (n4_1 + 12))); /*0xffd1ca1a*/
          *((_BYTE *)v3 + v23) |= 1 << v37[3]; /*0xffd1ca29*/
          n3_5 = n3_2; /*0xffd1ca2c*/
        }
        n3_6 = n3_3; /*0xffd1ca30*/
        if ( !n3_5 && *((_BYTE *)v3 + 6 * n4_1 + 3 * n2_2 + n3_3 + 48) ) /*0xffd1ca43*/
          goto LABEL_43; /*0xffd1ca46*/
        if ( n3_5 != 1 ) /*0xffd1ca4f*/
          goto LABEL_22; /*0xffd1ca4f*/
LABEL_41:
        if ( !*((_BYTE *)v3 + 6 * n4_1 + 3 * n2_2 + n3_6 + 48) || !*((_BYTE *)v3 + 6 * n4_1 + 3 * n2_2 + n3_6 + 120) ) /*0xffd1cb7e*/
        {
LABEL_22:
          *((_BYTE *)v3 + 2 * n4_1 + n2_2 + 8) &= ~(1 << n3_6); /*0xffd1ca55*/
          *((_BYTE *)v3 + 2 * n4_1 + n2_2 + 16) &= ~(1 << n3_6); /*0xffd1ca71*/
LABEL_23:
          v8 = v35; /*0xffd1ca74*/
          v25 = v34; /*0xffd1ca78*/
          goto LABEL_24; /*0xffd1ca78*/
        }
LABEL_43:
        v8 = 1; /*0xffd1cb88*/
        v25 = 1; /*0xffd1cb8a*/
        v35 = 1; /*0xffd1cb8c*/
        v34 = 1; /*0xffd1cb90*/
LABEL_24:
        n3 = j[0] + 1; /*0xffd1ca7c*/
        j[0] = n3; /*0xffd1ca82*/
      }
      while ( n3 < 3u ); /*0xffd1ca88*/
      if ( !v25 ) /*0xffd1ca90*/
        *((_BYTE *)v3 + n4_1 + 4) &= ~(1 << n2_2); /*0xffd1ca9a*/
LABEL_27:
      n2_1 = i[0] + 1; /*0xffd1ca9e*/
      i[0] = n2_1; /*0xffd1caa4*/
    }
    while ( n2_1 < 2u ); /*0xffd1caaa*/
    v4 = (_DWORD *)(v2 + 223); /*0xffd1cab0*/
    if ( !v8 ) /*0xffd1cab8*/
      *v3 &= ~(1 << n4_1); /*0xffd1cabf*/
LABEL_30:
    n4 = v40[0] + 1; /*0xffd1cac1*/
    v40[0] = n4; /*0xffd1cac7*/
  }
  while ( n4 < 4u ); /*0xffd1cacd*/
  v26 = 0; /*0xffd1cad3*/
  do /*0xffd1cb33*/
  {
    v27 = 0; /*0xffd1cadd*/
    n3_1 = 3; /*0xffd1cadf*/
    v29 = (char *)v3 + v26 + 246; /*0xffd1cae0*/
    n3_2 = 3; /*0xffd1cae2*/
    do /*0xffd1cb23*/
    {
      v30 = 0; /*0xffd1cae6*/
      if ( (*(_BYTE *)(v2 + 21) & 0xF8) != 0 ) /*0xffd1caec*/
      {
        n2_3 = 9 * (v26 + v27); /*0xffd1caf4*/
        do /*0xffd1cb11*/
        {
          v31 = n2_3 + v30++; /*0xffd1cafb*/
          *((_BYTE *)v3 + v31 + 192) = -1; /*0xffd1cb01*/
        }
        while ( v30 < (unsigned __int8)(*(_BYTE *)(v2 + 21) >> 3) ); /*0xffd1cb11*/
        n3_1 = n3_2; /*0xffd1cb13*/
      }
      ++v27; /*0xffd1cb17*/
      *v29++ = -1; /*0xffd1cb18*/
      n3_2 = --n3_1; /*0xffd1cb1f*/
    }
    while ( n3_1 ); /*0xffd1cb23*/
    v26 += 3; /*0xffd1cb29*/
    --n2; /*0xffd1cb2f*/
  }
  while ( n2 ); /*0xffd1cb33*/
  return IioTailFunc71AF(__return_address, v2 + 12, v2 + 36, v3, *(_DWORD *)(v2 + 8)) != 0; /*0xffd1cb52*/
}

// Function: IioTailX_FFD1CB9D @ 0xffd1cb9d (0x40 bytes)
// Index: 2513/2560

void *__cdecl IioTailX_FFD1CB9D(int buf)
{
  IioTailFunc6DA4((void *)(buf + 2394), 0, 0xD80u); /*0xffd1cbb0*/
  IioTailFunc6DA4((void *)(buf + 5850), 0, 0x1B0u); /*0xffd1cbc3*/
  return IioTailFunc6DA4((void *)(buf + 2390), 0, 4u); /*0xffd1cbdb*/
}

// Function: IioTailX_FFD1CBDD @ 0xffd1cbdd (0x18f bytes)
// Index: 2514/2560

bool __cdecl IioTailX_FFD1CBDD(int __return_address, int *a2, int a3)
{
  __int16 v3; // si
  int n40; // eax
  int v5; // edx
  int n40_1; // eax
  bool v7; // al
  int v8; // eax
  _BYTE *v10; // [esp-1Ch] [ebp-2Ch]
  int n40_3; // [esp-1Ch] [ebp-2Ch]
  _BYTE *v12; // [esp-18h] [ebp-28h]
  int v13; // [esp-8h] [ebp-18h]
  int n40_2; // [esp-4h] [ebp-14h]
  int v15; // [esp-4h] [ebp-14h]

  v3 = IioTailX_FFD1BB8A(a2[595]); /*0xffd1cbf8*/
  IioTailFunc6DA4((char *)a2 + 169, 0, 0x36u); /*0xffd1cbfe*/
  n40 = a2[595]; /*0xffd1cc03*/
  v12 = (_BYTE *)a2[593]; /*0xffd1cc12*/
  v10 = (_BYTE *)*a2; /*0xffd1cc13*/
  *(int *)((char *)a2 + 169) = (int)v12; /*0xffd1cc14*/
  *(int *)((char *)a2 + 173) = n40; /*0xffd1cc16*/
  *((_BYTE *)a2 + 177) = 1; /*0xffd1cc1c*/
  *((_BYTE *)a2 + 182) = IioTailX_FFD1C28E(v10, v12, n40); /*0xffd1cc2b*/
  *(_WORD *)((char *)a2 + 183) = 16; /*0xffd1cc31*/
  if ( ((unsigned __int16)v3 & *(_WORD *)(v5 + 40)) != 0 ) /*0xffd1cc3e*/
    *((_BYTE *)a2 + 205) = 1; /*0xffd1cc40*/
  if ( IioTailFunc7838(__return_address, (int)(a2 + 3), (int)(a2 + 9), (int *)((char *)a2 + 483)) ) /*0xffd1cc5b*/
  {
    if ( !a2[593] ) /*0xffd1cc67*/
    {
      n40_1 = a2[595]; /*0xffd1cc70*/
      if ( n40_1 == 40 || n40_1 == 44 || n40_1 == 53 ) /*0xffd1cc83*/
        *((_BYTE *)a2 + 205) = 0; /*0xffd1cc85*/
    }
  }
  n40_2 = a2[595]; /*0xffd1cc8c*/
  v13 = a2[593]; /*0xffd1cc96*/
  *(int *)((char *)a2 + 185) = a3; /*0xffd1cc9c*/
  *(int *)((char *)a2 + 189) = 1; /*0xffd1cca6*/
  *(int *)((char *)a2 + 193) = 1; /*0xffd1ccac*/
  *(int *)((char *)a2 + 197) = 1; /*0xffd1ccb2*/
  *(int *)((char *)a2 + 201) = 1; /*0xffd1ccb8*/
  *((_BYTE *)a2 + 213) = 1; /*0xffd1ccbe*/
  v7 = IioTailX_FFD2003C(__return_address, (int)(a2 + 3), (int)(a2 + 9), (int)a2 + 483, v13, n40_2); /*0xffd1ccca*/
  n40_3 = a2[595]; /*0xffd1cccf*/
  *((_BYTE *)a2 + 206) = v7; /*0xffd1ccd5*/
  if ( IioTailX_FFD20095(__return_address, (int)(a2 + 3), (int)(a2 + 9), (int *)((char *)a2 + 483), a2[593], n40_3) ) /*0xffd1cce8*/
  {
    a2[52] = 0; /*0xffd1ccf4*/
    *((_BYTE *)a2 + 207) = 1; /*0xffd1ccfb*/
  }
  else if ( IioTailX_FFD20064( /*0xffd1cd17*/
              __return_address,
              (int)(a2 + 3),
              (int)(a2 + 9),
              (int *)((char *)a2 + 483),
              a2[593],
              a2[595]) )
  {
    *((_BYTE *)a2 + 207) = 1; /*0xffd1cd23*/
    a2[52] = 1; /*0xffd1cd2a*/
  }
  else
  {
    *((_BYTE *)a2 + 207) = 0; /*0xffd1cd36*/
  }
  v8 = *a2; /*0xffd1cd3d*/
  v15 = a2[2]; /*0xffd1cd3f*/
  *((_BYTE *)a2 + 212) = 1; /*0xffd1cd42*/
  *((_BYTE *)a2 + 222) = *(_BYTE *)(v8 + 46); /*0xffd1cd4c*/
  return IioTailX_FFD2052E(__return_address, (int)a2 + 169, v15) != 0; /*0xffd1cd67*/
}

// Function: IioTailX_FFD1CD6C @ 0xffd1cd6c (0x2ce bytes)
// Index: 2515/2560

bool __cdecl IioTailX_FFD1CD6C(int __return_address, int a2, int a3, int n53, char a5)
{
  int v5; // edi
  _DWORD *v6; // esi
  int v7; // edx
  int n12; // ebp
  int v9; // ebx
  int n12_2; // edx
  char v11; // al
  int v12; // ebp
  int v13; // ecx
  int v14; // ecx
  int v15; // ecx
  bool v16; // zf
  int v17; // ecx
  int v18; // ebp
  int n3_1; // eax
  _BYTE *v20; // ebx
  unsigned __int8 v21; // dl
  int v22; // eax
  char v24; // [esp+12h] [ebp-2Eh]
  char v25; // [esp+13h] [ebp-2Dh]
  int v26; // [esp+14h] [ebp-2Ch]
  int n12_1; // [esp+18h] [ebp-28h]
  int v28; // [esp+1Ch] [ebp-24h]
  int n2_2; // [esp+20h] [ebp-20h]
  int n3; // [esp+24h] [ebp-1Ch]
  int n2_1; // [esp+28h] [ebp-18h]
  int v32; // [esp+2Ch] [ebp-14h]
  int n4; // [esp+30h] [ebp-10h]
  int n2; // [esp+34h] [ebp-Ch]
  int n13; // [esp+3Ch] [ebp-4h]
  int n3_2; // [esp+48h] [ebp+8h]

  v5 = a2; /*0xffd1cd73*/
  v6 = (_DWORD *)(a2 + 223); /*0xffd1cd7e*/
  IioTailFunc6DA4((void *)(a2 + 223), 0, 0x104u); /*0xffd1cd85*/
  n4 = 4; /*0xffd1cd92*/
  n2 = 2; /*0xffd1cd9a*/
  v7 = 0; /*0xffd1cda4*/
  n12 = 12; /*0xffd1cda8*/
  *(_DWORD *)(a2 + 223) = **(_DWORD **)a2 & *(_DWORD *)(a2 + 17); /*0xffd1cda9*/
  v32 = 0; /*0xffd1cdab*/
  n12_1 = 12; /*0xffd1cdaf*/
  do /*0xffd1cfb3*/
  {
    if ( ((1 << v7) & *v6) == 0 ) /*0xffd1cdbc*/
      goto LABEL_33; /*0xffd1cdbc*/
    v25 = 0; /*0xffd1cdc8*/
    n2_1 = 2; /*0xffd1cdce*/
    v9 = 0; /*0xffd1cdd9*/
    *((_BYTE *)v6 + v7 + 4) = *(_BYTE *)(*(_DWORD *)v5 + 4) & *(_BYTE *)(v7 + v5 + 36); /*0xffd1cddb*/
    do /*0xffd1cf8d*/
    {
      if ( ((unsigned __int8)(1 << v9) & *((_BYTE *)v6 + v7 + 4)) == 0 ) /*0xffd1cdea*/
        goto LABEL_30; /*0xffd1cdea*/
      n12_2 = n12_1; /*0xffd1cdf0*/
      v11 = *(_BYTE *)(v9 + n12 + v5 + 28); /*0xffd1cdf7*/
      *((_BYTE *)v6 + v9 + n12 + 4) = v11; /*0xffd1cdfe*/
      *((_BYTE *)v6 + v9 + n12 - 4) = v11; /*0xffd1ce05*/
      v12 = 0; /*0xffd1ce09*/
      n3 = 3; /*0xffd1ce0b*/
      do /*0xffd1cf67*/
      {
        v13 = n12_2 + v9 - 4; /*0xffd1ce1d*/
        if ( ((unsigned __int8)(1 << v12) & *((_BYTE *)v6 + v13)) == 0 ) /*0xffd1ce22*/
          goto LABEL_27; /*0xffd1ce22*/
        n2_2 = 2; /*0xffd1ce2a*/
        v24 = 0; /*0xffd1ce32*/
        *((_BYTE *)v6 + 3 * v13 + v12) = a5; /*0xffd1ce3f*/
        v14 = 0; /*0xffd1ce4c*/
        v28 = v12 + 3 * (n12_2 + v9 + 4); /*0xffd1ce4e*/
        v26 = 0; /*0xffd1ce52*/
        do /*0xffd1cf2e*/
        {
          v6 = (_DWORD *)(v5 + 223); /*0xffd1ce62*/
          if ( ((unsigned __int8)(1 << v14) & *(_BYTE *)(v28 + v5)) != 0 ) /*0xffd1ce68*/
          {
            n13 = *(unsigned __int8 *)(v14 + 2 * (v12 + 3 * (n12_2 + v9 + 8)) + v5); /*0xffd1ce84*/
            if ( a3 != 1 /*0xffd1ceab*/
              || n53 == 40
              || n53 == 53
              || n53 == 44
              || *(_BYTE *)(v5 + 168)
              || *(_BYTE *)(v14 + 2 * (v12 + 3 * (n12_2 + v9 + 8)) + v5) == 13 )
            {
              v25 = 1; /*0xffd1ceb5*/
              v24 = 1; /*0xffd1ceba*/
              *((_BYTE *)v6 + v28) |= 1 << v14; /*0xffd1cec6*/
              n12_2 = n12_1; /*0xffd1cec9*/
              v15 = v14 + 2 * (v12 + 3 * (n12_1 + v9)); /*0xffd1ced5*/
              *((_BYTE *)v6 + v15) = (1 << *(_BYTE *)(v15 + v5)) - 1; /*0xffd1cee9*/
              if ( *(_BYTE *)(v5 + 168) ) /*0xffd1ceec*/
              {
                if ( a3 ) /*0xffd1cefa*/
                  goto LABEL_23; /*0xffd1cefa*/
                if ( n53 == 53 || n53 == 44 ) /*0xffd1cf08*/
                {
LABEL_21:
                  if ( n13 == 13 ) /*0xffd1cf1a*/
                    *((_BYTE *)v6 + v15) = 1; /*0xffd1cf1c*/
                  goto LABEL_23; /*0xffd1cf1c*/
                }
                *((_BYTE *)v6 + v15) = 1; /*0xffd1cf0a*/
              }
              if ( !a3 ) /*0xffd1cf13*/
                goto LABEL_21; /*0xffd1cf13*/
LABEL_23:
              v14 = v26; /*0xffd1cf20*/
            }
          }
          ++v14; /*0xffd1cf24*/
          v16 = n2_2-- == 1; /*0xffd1cf25*/
          v26 = v14; /*0xffd1cf2a*/
        }
        while ( !v16 ); /*0xffd1cf2e*/
        v13 = n12_2 + v9 - 4; /*0xffd1cf3b*/
        if ( !v24 ) /*0xffd1cf3f*/
        {
          *((_BYTE *)v6 + v13) &= ~(1 << v12); /*0xffd1cf4b*/
          *((_BYTE *)v6 + n12_2 + v9 + 4) &= ~(1 << v12); /*0xffd1cf59*/
          v5 = a2; /*0xffd1cf5d*/
        }
LABEL_27:
        ++v12; /*0xffd1cf61*/
        --n3; /*0xffd1cf62*/
      }
      while ( n3 ); /*0xffd1cf67*/
      v7 = v32; /*0xffd1cf71*/
      n12 = n12_1; /*0xffd1cf75*/
      if ( !*((_BYTE *)v6 + v13) ) /*0xffd1cf6d*/
        *((_BYTE *)v6 + v32 + 4) &= ~(1 << v9); /*0xffd1cf83*/
LABEL_30:
      ++v9; /*0xffd1cf87*/
      --n2_1; /*0xffd1cf88*/
    }
    while ( n2_1 ); /*0xffd1cf8d*/
    if ( !v25 ) /*0xffd1cf99*/
      *v6 &= ~(1 << v7); /*0xffd1cfa0*/
LABEL_33:
    ++v7; /*0xffd1cfa2*/
    n12 += 2; /*0xffd1cfa3*/
    v16 = n4-- == 1; /*0xffd1cfa6*/
    v32 = v7; /*0xffd1cfab*/
    n12_1 = n12; /*0xffd1cfaf*/
  }
  while ( !v16 ); /*0xffd1cfb3*/
  v17 = 0; /*0xffd1cfb9*/
  do /*0xffd1d013*/
  {
    v18 = 0; /*0xffd1cfc3*/
    n3_1 = 3; /*0xffd1cfc5*/
    v20 = (char *)v6 + v17 + 246; /*0xffd1cfc6*/
    n3_2 = 3; /*0xffd1cfc8*/
    do /*0xffd1d009*/
    {
      v21 = 0; /*0xffd1cfcc*/
      if ( (*(_BYTE *)(v5 + 21) & 0xF8) != 0 ) /*0xffd1cfd2*/
      {
        do /*0xffd1cff7*/
        {
          v22 = 9 * (v17 + v18) + v21++; /*0xffd1cfe1*/
          *((_BYTE *)v6 + v22 + 192) = -1; /*0xffd1cfe7*/
        }
        while ( v21 < (unsigned __int8)(*(_BYTE *)(v5 + 21) >> 3) ); /*0xffd1cff7*/
        n3_1 = n3_2; /*0xffd1cff9*/
      }
      ++v18; /*0xffd1cffd*/
      *v20++ = -1; /*0xffd1cffe*/
      n3_2 = --n3_1; /*0xffd1d005*/
    }
    while ( n3_1 ); /*0xffd1d009*/
    v17 += 3; /*0xffd1d00b*/
    --n2; /*0xffd1d00e*/
  }
  while ( n2 ); /*0xffd1d013*/
  return IioTailFunc71AF(__return_address, v5 + 12, v5 + 36, v6, *(_DWORD *)(v5 + 8)) != 0; /*0xffd1d032*/
}

// Function: sub_FFD1D03A @ 0xffd1d03a (0x1ec bytes)
// Index: 2516/2560

// Function: sub_FFD1D226 @ 0xffd1d226 (0x275 bytes)
// Index: 2517/2560

// Function: sub_FFD1D49B @ 0xffd1d49b (0x4fd bytes)
// Index: 2518/2560

// Function: IioTailX_FFD1D998 @ 0xffd1d998 (0x11 bytes)
// Index: 2519/2560

int __cdecl IioTailX_FFD1D998(int a1, int a2, int a3, __int16 a4)
{
  *(_WORD *)(a1 + 2388) = a4; /*0xffd1d9a1*/
  return a1; /*0xffd1d9a8*/
}

// Function: sub_FFD1D9A9 @ 0xffd1d9a9 (0x668 bytes)
// Index: 2520/2560

// Function: IioTailX_FFD1E011 @ 0xffd1e011 (0xdc bytes)
// Index: 2521/2560

bool __cdecl IioTailX_FFD1E011(int i, int a2, int a3, int a4, int a5, int a6, int a7, int a8)
{
  int *v8; // edi
  int v9; // ebx
  int v10; // ebp

  v8 = (int *)(a6 + 2208); /*0xffd1e019*/
  v9 = a6 + 223; /*0xffd1e022*/
  v10 = a6 + 36; /*0xffd1e029*/
  IioTailX_FFD1871B(i, a6 + 12, a6 + 36, a6 + 223, 0, (int *)(a6 + 2208)); /*0xffd1e035*/
  return IioTailX_FFD1ADFF( /*0xffd1e0e8*/
           i,
           a6 + 12,
           *(_DWORD *)(a6 + 32),
           a6 + 36,
           (_DWORD *)(a6 + 223),
           (_DWORD *)(a6 + 743),
           (int)IioTailX_FFD1E74E,
           a6,
           *(_DWORD *)(a6 + 2372),
           *(unsigned __int8 *)(a6 + 2370),
           *(_BYTE *)(a5 + 49),
           0,
           0,
           (_DWORD *)(a6 + 2208),
           a8)
      || IioTailX_FFD1A9F7(i, a6 + 12, v10, v9, a6 + 743, *v8, *(_BYTE *)(a6 + 2265), 1)
      || IioTailX_FFD2173C(*(_DWORD *)(a6 + 2204))
      && (*(unsigned __int8 (__cdecl **)(int, int, int, int, int, int, int, int))(a6 + 2220))(
           i,
           a6 + 12,
           v10,
           v9,
           a6 + 743,
           *v8,
           1,
           a8);
}

// Function: IioTailX_FFD1E0ED @ 0xffd1e0ed (0x188 bytes)
// Index: 2522/2560

char __cdecl IioTailX_FFD1E0ED(int i, int *buf)
{
  unsigned __int8 n4; // bl
  unsigned __int8 n2_1; // bh
  int v4; // edx
  int v5; // ecx
  int v6; // eax
  int v7; // edi
  int v8; // ebp
  int v9; // edi
  _BYTE *v10; // ecx
  int v11; // edi
  int v12; // edx
  bool v13; // zf
  unsigned __int8 n3; // [esp+10h] [ebp-2Ch]
  unsigned __int8 n2; // [esp+14h] [ebp-28h]
  char v17; // [esp+18h] [ebp-24h]
  _BYTE *v18; // [esp+1Ch] [ebp-20h]
  int n2_3; // [esp+20h] [ebp-1Ch]
  int v20; // [esp+24h] [ebp-18h]
  int n2_2; // [esp+28h] [ebp-14h]
  void *p_buf; // [esp+38h] [ebp-4h] BYREF

  n4 = 0; /*0xffd1e0f7*/
  v17 = 0; /*0xffd1e0fa*/
LABEL_2:
  n2_1 = 0; /*0xffd1e0fe*/
  v4 = (int)(buf + 3); /*0xffd1e100*/
  v5 = (int)(buf + 9); /*0xffd1e103*/
  n2 = 0; /*0xffd1e106*/
  v6 = (int)buf + 483; /*0xffd1e10a*/
LABEL_3:
  n3 = 0; /*0xffd1e110*/
  while ( 1 ) /*0xffd1e128*/
  {
    if ( IioTailFunc7B25(i, v4, v5, v6, v17, n2, n3) ) /*0xffd1e128*/
    {
      v7 = n3 + 3 * (n2_1 + 2 * n4); /*0xffd1e149*/
      if ( *((_BYTE *)buf + v7 + 2240) > *((_BYTE *)buf + 2265) ) /*0xffd1e158*/
        break; /*0xffd1e158*/
    }
LABEL_11:
    v5 = (int)(buf + 9); /*0xffd1e21f*/
    v4 = (int)(buf + 3); /*0xffd1e228*/
    ++n3; /*0xffd1e22b*/
    v6 = (int)buf + 483; /*0xffd1e231*/
    if ( n3 >= 3u ) /*0xffd1e237*/
    {
      ++n2_1; /*0xffd1e23d*/
      v6 = (int)buf + 483; /*0xffd1e23f*/
      n2 = n2_1; /*0xffd1e245*/
      v5 = (int)(buf + 9); /*0xffd1e249*/
      v4 = (int)(buf + 3); /*0xffd1e24c*/
      if ( n2_1 < 2u ) /*0xffd1e252*/
        goto LABEL_3; /*0xffd1e252*/
      v17 = ++n4; /*0xffd1e25a*/
      if ( n4 >= 4u ) /*0xffd1e261*/
        return 0; /*0xffd1e270*/
      goto LABEL_2; /*0xffd1e261*/
    }
  }
  if ( !IioTailX_FFD1C174( /*0xffd1e1a2*/
          i,
          buf,
          7,
          buf[593],
          1,
          v17,
          n2,
          n3,
          *((_BYTE *)buf + 2 * v7 + 2266),
          *((_BYTE *)buf + 2 * v7 + 2267),
          0,
          0,
          0,
          0,
          &p_buf) )
  {
    v8 = 0; /*0xffd1e1b5*/
    n2_2 = 2; /*0xffd1e1bd*/
    v9 = (int)&buf[18 * v7 + 598] + 2; /*0xffd1e1c5*/
    v20 = v9; /*0xffd1e1c7*/
    do /*0xffd1e21d*/
    {
      v10 = (_BYTE *)v9; /*0xffd1e1d0*/
      v11 = 0; /*0xffd1e1d2*/
      v18 = v10; /*0xffd1e1d6*/
      n2_3 = 2; /*0xffd1e1da*/
      do /*0xffd1e20c*/
      {
        v12 = v11 + 2 * (v8 + *((unsigned __int8 *)buf + 2376)); /*0xffd1e1ed*/
        ++v11; /*0xffd1e1f4*/
        *((_BYTE *)p_buf + v12 + 4) = *v10; /*0xffd1e1f5*/
        v10 = v18 + 1728; /*0xffd1e1fd*/
        v13 = n2_3-- == 1; /*0xffd1e203*/
        v18 += 1728; /*0xffd1e208*/
      }
      while ( !v13 ); /*0xffd1e20c*/
      ++v8; /*0xffd1e212*/
      v9 = v20 + 1; /*0xffd1e213*/
      v13 = n2_2-- == 1; /*0xffd1e214*/
      ++v20; /*0xffd1e219*/
    }
    while ( !v13 ); /*0xffd1e21d*/
    goto LABEL_11; /*0xffd1e21d*/
  }
  return 1; /*0xffd1e269*/
}

// Function: IioTailX_FFD1E275 @ 0xffd1e275 (0x1a7 bytes)
// Index: 2523/2560

char __cdecl IioTailX_FFD1E275(int i, int *buf)
{
  unsigned __int8 n4; // bl
  unsigned __int8 n2_1; // bh
  int v4; // edx
  int v5; // ecx
  int v6; // eax
  int v7; // edx
  char *v8; // eax
  bool v9; // zf
  int v10; // edi
  char *v11; // ebp
  char v12; // cl
  int v13; // edx
  bool v14; // cf
  unsigned __int8 n3; // [esp+10h] [ebp-28h]
  unsigned __int8 v17; // [esp+14h] [ebp-24h]
  unsigned __int8 n2; // [esp+18h] [ebp-20h]
  char v19; // [esp+1Ch] [ebp-1Ch]
  int v20; // [esp+20h] [ebp-18h]
  int n2_2; // [esp+24h] [ebp-14h]
  char v22; // [esp+28h] [ebp-10h]
  unsigned __int8 v23; // [esp+2Ch] [ebp-Ch]
  void *p_buf; // [esp+30h] [ebp-8h] BYREF
  char *v25; // [esp+34h] [ebp-4h]

  n4 = 0; /*0xffd1e27f*/
  v19 = 0; /*0xffd1e282*/
LABEL_2:
  n2_1 = 0; /*0xffd1e286*/
  v4 = (int)(buf + 3); /*0xffd1e288*/
  v5 = (int)(buf + 9); /*0xffd1e28b*/
  n2 = 0; /*0xffd1e28e*/
  v6 = (int)buf + 483; /*0xffd1e292*/
LABEL_3:
  n3 = 0; /*0xffd1e298*/
  while ( 1 ) /*0xffd1e2b0*/
  {
    if ( IioTailFunc7B25(i, v4, v5, v6, v19, n2, n3) ) /*0xffd1e2b0*/
    {
      v7 = n3 + 3 * (n2_1 + 2 * n4); /*0xffd1e2d1*/
      v20 = v7; /*0xffd1e2d3*/
      if ( *((_BYTE *)buf + v7 + 2240) > *((_BYTE *)buf + 2265) ) /*0xffd1e2e4*/
      {
        v23 = *((_BYTE *)buf + 2 * v7 + 2266); /*0xffd1e2f8*/
        v17 = 0; /*0xffd1e2fc*/
        v22 = *((_BYTE *)buf + 2 * v7 + 2267); /*0xffd1e308*/
        v8 = (char *)buf + v23; /*0xffd1e315*/
        LOBYTE(v8) = v8[12 * n4 + 120 + 6 * n2_1 + 2 * n3] == 13; /*0xffd1e31d*/
        v9 = *((_BYTE *)buf + 21) == 0; /*0xffd1e320*/
        v25 = v8; /*0xffd1e324*/
        if ( !v9 ) /*0xffd1e328*/
          break; /*0xffd1e328*/
      }
    }
LABEL_11:
    v5 = (int)(buf + 9); /*0xffd1e3c6*/
    v4 = (int)(buf + 3); /*0xffd1e3cf*/
    ++n3; /*0xffd1e3d2*/
    v6 = (int)buf + 483; /*0xffd1e3d8*/
    if ( n3 >= 3u ) /*0xffd1e3de*/
    {
      ++n2_1; /*0xffd1e3e4*/
      v6 = (int)buf + 483; /*0xffd1e3e6*/
      n2 = n2_1; /*0xffd1e3ec*/
      v5 = (int)(buf + 9); /*0xffd1e3f0*/
      v4 = (int)(buf + 3); /*0xffd1e3f3*/
      if ( n2_1 < 2u ) /*0xffd1e3f9*/
        goto LABEL_3; /*0xffd1e3f9*/
      v19 = ++n4; /*0xffd1e401*/
      if ( n4 >= 4u ) /*0xffd1e408*/
        return 0; /*0xffd1e417*/
      goto LABEL_2; /*0xffd1e408*/
    }
  }
  while ( !IioTailX_FFD1C174(i, buf, 2, buf[593], (char)v8, v19, n2, n3, v23, v22, 0, 0, v17, 0, &p_buf) ) /*0xffd1e369*/
  {
    v10 = 0; /*0xffd1e374*/
    n2_2 = 2; /*0xffd1e380*/
    v11 = (char *)&buf[18 * v20 + 598] + v17 + 2; /*0xffd1e38a*/
    do /*0xffd1e3ad*/
    {
      v12 = *v11; /*0xffd1e393*/
      v11 += 1728; /*0xffd1e396*/
      v13 = v10 + 2 * *((unsigned __int8 *)buf + 2376); /*0xffd1e39c*/
      ++v10; /*0xffd1e3a3*/
      v9 = n2_2-- == 1; /*0xffd1e3a4*/
      *((_BYTE *)p_buf + v13 + 4) = v12; /*0xffd1e3a9*/
    }
    while ( !v9 ); /*0xffd1e3ad*/
    v14 = ++v17 < *((_BYTE *)buf + 21); /*0xffd1e3b5*/
    LOBYTE(v8) = (_BYTE)v25; /*0xffd1e3bc*/
    if ( !v14 ) /*0xffd1e3c0*/
      goto LABEL_11; /*0xffd1e3c0*/
  }
  return 1; /*0xffd1e410*/
}

// Function: IioTailX_FFD1E41C @ 0xffd1e41c (0x118 bytes)
// Index: 2524/2560

char __cdecl IioTailX_FFD1E41C(int __return_address, int *buf, int n6)
{
  unsigned __int8 n2; // bl
  int v4; // edi
  bool v5; // zf
  _BYTE *p_buf_1; // ebp
  int v7; // ecx
  int v8; // eax
  unsigned __int8 v9; // cl
  int v10; // eax
  unsigned __int8 v11; // al
  void *p_buf; // [esp+10h] [ebp-8h] BYREF
  int n2_1; // [esp+14h] [ebp-4h]

  n2 = 0; /*0xffd1e425*/
  v4 = 0; /*0xffd1e428*/
  v5 = 0; /*0xffd1e42a*/
  while ( v5 && !IioTailFunc7838(__return_address, (int)(buf + 3), (int)(buf + 9), (int *)((char *)buf + 483)) /*0xffd1e45b*/
       || !v4 && n6 == 6 )
  {
LABEL_15:
    v5 = ++v4 == 1; /*0xffd1e503*/
    if ( v4 > 1 ) /*0xffd1e506*/
      return 0; /*0xffd1e50e*/
  }
  if ( IioTailX_FFD1C174(__return_address, buf, n6, buf[593], v4, 0, 0, 0, 0, 0, 0, 0, 0, 0, &p_buf) ) /*0xffd1e47f*/
    return 1; /*0xffd1e489*/
  p_buf_1 = p_buf; /*0xffd1e48f*/
  v7 = (int)buf + 2 * v4 + 2390; /*0xffd1e499*/
  while ( 1 ) /*0xffd1e4a6*/
  {
    v8 = *((unsigned __int8 *)buf + 2376) + 2; /*0xffd1e4a6*/
    n2_1 = n2; /*0xffd1e4a9*/
    v9 = *(_BYTE *)(v7 + n2); /*0xffd1e4ad*/
    v10 = n2 + 2 * v8; /*0xffd1e4b0*/
    if ( v9 > p_buf_1[v10] ) /*0xffd1e4b6*/
    {
      p_buf_1[v10] = v9; /*0xffd1e4b8*/
      p_buf_1 = p_buf; /*0xffd1e4bb*/
    }
    if ( n6 != 6 ) /*0xffd1e4c4*/
      goto LABEL_13; /*0xffd1e4c4*/
    v11 = *((_BYTE *)buf + 2376); /*0xffd1e4c6*/
    if ( (unsigned __int8)(v11 + 1) >= 4u ) /*0xffd1e4d2*/
      break; /*0xffd1e4d2*/
    p_buf_1[2 * (unsigned __int8)(v11 + 1) + 4 + n2_1] = p_buf_1[2 * v11 + 4 + n2]; /*0xffd1e4e8*/
    p_buf_1 = p_buf; /*0xffd1e4ec*/
LABEL_13:
    ++n2; /*0xffd1e4f0*/
    v7 = (int)buf + 2 * v4 + 2390; /*0xffd1e4f8*/
    if ( n2 >= 2u ) /*0xffd1e4fe*/
    {
      n2 = 0; /*0xffd1e500*/
      goto LABEL_15; /*0xffd1e500*/
    }
  }
  IioTailFunc6DEB( /*0xffd1e523*/
    __return_address,
    1,
    "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
    2677,
    buf[2]);
  return 1; /*0xffd1e52d*/
}

// Function: IioTailX_FFD1E534 @ 0xffd1e534 (0x21a bytes)
// Index: 2525/2560

char __cdecl IioTailX_FFD1E534(int __return_address, int *buf, int n7, unsigned __int8 n2, int *p_n3)
{
  unsigned __int8 n4; // bl
  unsigned __int8 n2a_1; // bh
  int v7; // edx
  int v8; // ecx
  int v9; // eax
  int n4_1; // edi
  int v11; // ecx
  int *p_n3_1; // ebp
  char v13; // dl
  unsigned __int8 v14; // cl
  int v15; // ecx
  bool v16; // zf
  unsigned __int8 v18; // [esp+11h] [ebp-33h]
  unsigned __int8 v19; // [esp+12h] [ebp-32h]
  unsigned __int8 v20; // [esp+13h] [ebp-31h]
  unsigned __int8 n3; // [esp+14h] [ebp-30h]
  unsigned __int8 n2a; // [esp+18h] [ebp-2Ch]
  char v23; // [esp+1Ch] [ebp-28h]
  int n2_1; // [esp+28h] [ebp-1Ch]
  int v25; // [esp+3Ch] [ebp-8h]
  void *p_buf; // [esp+40h] [ebp-4h] BYREF

  n4 = 0; /*0xffd1e53e*/
  v23 = 0; /*0xffd1e541*/
LABEL_2:
  n2a_1 = 0; /*0xffd1e545*/
  v7 = (int)(buf + 3); /*0xffd1e547*/
  v8 = (int)(buf + 9); /*0xffd1e54a*/
  n2a = 0; /*0xffd1e54d*/
  v9 = (int)buf + 483; /*0xffd1e551*/
LABEL_3:
  n3 = 0; /*0xffd1e557*/
  while ( 1 ) /*0xffd1e56f*/
  {
    if ( IioTailFunc7B25(__return_address, v7, v8, v9, v23, n2a, n3) ) /*0xffd1e56f*/
    {
      n4_1 = n4; /*0xffd1e584*/
      v11 = 3 * (n2a_1 + 2 * n4) + n3; /*0xffd1e5a2*/
      if ( *((_BYTE *)buf + v11 + 2240) > *((_BYTE *)buf + 2265) ) /*0xffd1e5b1*/
        break; /*0xffd1e5b1*/
    }
LABEL_19:
    v8 = (int)(buf + 9); /*0xffd1e6f8*/
    v7 = (int)(buf + 3); /*0xffd1e701*/
    ++n3; /*0xffd1e704*/
    v9 = (int)buf + 483; /*0xffd1e70a*/
    if ( n3 >= 3u ) /*0xffd1e710*/
    {
      ++n2a_1; /*0xffd1e716*/
      v9 = (int)buf + 483; /*0xffd1e718*/
      n2a = n2a_1; /*0xffd1e71e*/
      v8 = (int)(buf + 9); /*0xffd1e722*/
      v7 = (int)(buf + 3); /*0xffd1e725*/
      if ( n2a_1 < 2u ) /*0xffd1e72b*/
        goto LABEL_3; /*0xffd1e72b*/
      v23 = ++n4; /*0xffd1e733*/
      if ( n4 >= 4u ) /*0xffd1e73a*/
        return 0; /*0xffd1e749*/
      goto LABEL_2; /*0xffd1e73a*/
    }
  }
  if ( !IioTailX_FFD1C174( /*0xffd1e621*/
          __return_address,
          buf,
          n7,
          buf[593],
          *((_BYTE *)&buf[3 * n4 + 30] + 6 * n2a_1 + 2 * n3 + *((unsigned __int8 *)buf + 2 * v11 + 2266)) == 13,
          v23,
          n2a,
          n3,
          *((_BYTE *)buf + 2 * v11 + 2266),
          *((_BYTE *)buf + 2 * v11 + 2267),
          0,
          0,
          0,
          0,
          &p_buf) )
  {
    if ( n2 ) /*0xffd1e637*/
    {
      p_n3_1 = p_n3; /*0xffd1e63d*/
      n2_1 = n2; /*0xffd1e644*/
      do /*0xffd1e6f2*/
      {
        v13 = -1; /*0xffd1e64b*/
        v14 = 0; /*0xffd1e64e*/
        v18 = -1; /*0xffd1e650*/
        v19 = 0; /*0xffd1e654*/
        v20 = *((_BYTE *)buf + 21); /*0xffd1e658*/
        if ( v20 ) /*0xffd1e65e*/
        {
          v25 = n3 + 3 * (n2a_1 + 2 * (n4_1 + 4 * *p_n3_1)); /*0xffd1e674*/
          while ( ((unsigned __int8)(1 << (v14 & 7)) & *((_BYTE *)buf + 9 * v25 + (v14 >> 3) + 5850)) != 0 ) /*0xffd1e69d*/
          {
            v13 = v18; /*0xffd1e6a4*/
            if ( v18 > *((_BYTE *)&buf[18 * v25 + 598] + v14 + 2) ) /*0xffd1e6b3*/
            {
              v13 = *((_BYTE *)&buf[18 * v25 + 598] + v14 + 2); /*0xffd1e6b5*/
              v18 = v13; /*0xffd1e6b7*/
            }
            v14 = v19 + 1; /*0xffd1e6bf*/
            v19 = v14; /*0xffd1e6c1*/
            if ( v14 >= v20 ) /*0xffd1e6c9*/
              goto LABEL_17; /*0xffd1e6c9*/
          }
          v13 = 0; /*0xffd1e6cd*/
LABEL_17:
          n4_1 = n4; /*0xffd1e6cf*/
        }
        v15 = *p_n3_1++; /*0xffd1e6da*/
        v16 = n2_1-- == 1; /*0xffd1e6ea*/
        *((_BYTE *)p_buf + 2 * *((unsigned __int8 *)buf + 2376) + v15 + 4) = v13; /*0xffd1e6ef*/
      }
      while ( !v16 ); /*0xffd1e6f2*/
    }
    goto LABEL_19; /*0xffd1e6f2*/
  }
  return 1; /*0xffd1e742*/
}

// Function: IioTailX_FFD1E74E @ 0xffd1e74e (0x156 bytes)
// Index: 2526/2560

char __cdecl IioTailX_FFD1E74E(
        int a1,
        int a2,
        int a3,
        unsigned __int8 a4,
        unsigned __int8 a5,
        unsigned __int8 a6,
        __int16 a7,
        __int16 a8,
        int a9,
        int a10)
{
  int v10; // ebp
  int v11; // ecx
  unsigned __int8 v12; // dl
  int v13; // ebx
  __int16 v14; // bx
  int v15; // ecx
  int v16; // edi
  int v18; // [esp+14h] [ebp-4h]

  v10 = a2; /*0xffd1e757*/
  if ( IioTailFunc7B25(a1, a2, a3 + 36, a3 + 483, a4, a5, a6) ) /*0xffd1e779*/
  {
    v11 = 3 * (a5 + 2 * a4) + a6; /*0xffd1e7ac*/
    *(_WORD *)(a3 + 2 * v11 + 2266) = a7; /*0xffd1e7b4*/
    v12 = 0; /*0xffd1e7bc*/
    *(_WORD *)(a3 + 2 * v11 + 2314) = a8; /*0xffd1e7c3*/
    if ( *(_BYTE *)(a2 + 9) ) /*0xffd1e7cb*/
    {
      do /*0xffd1e894*/
      {
        v13 = v12 >> 3; /*0xffd1e7e5*/
        if ( ((unsigned __int8)(1 << (v12 & 7)) & *(_BYTE *)(v13 + a10)) == 0 ) /*0xffd1e7f4*/
        {
          v15 = v13 + 9 * (a6 + 650 + 3 * (a5 + 2 * (a4 + 4 * *(_DWORD *)(a3 + 2384)))); /*0xffd1e820*/
          *(_BYTE *)(v15 + a3) |= 1 << (v12 & 7); /*0xffd1e829*/
          v14 = *(_WORD *)(a3 + 2388); /*0xffd1e82c*/
          LOBYTE(v15) = v14; /*0xffd1e833*/
          v16 = v14; /*0xffd1e836*/
          if ( v14 < 0 ) /*0xffd1e83b*/
            v16 = -v14; /*0xffd1e83d*/
          v10 = a2; /*0xffd1e845*/
          v18 = v12 + 72 * (a6 + 3 * (a5 + 2 * (a4 + 4 * *(_DWORD *)(a3 + 2384)))); /*0xffd1e86d*/
          if ( v16 > *(unsigned __int8 *)(v18 + a3 + 2394) ) /*0xffd1e87b*/
          {
            if ( v14 < 0 ) /*0xffd1e880*/
              v15 = -v14; /*0xffd1e882*/
            *(_BYTE *)(v18 + a3 + 2394) = v15; /*0xffd1e888*/
          }
        }
        ++v12; /*0xffd1e88f*/
      }
      while ( v12 < *(_BYTE *)(v10 + 9) ); /*0xffd1e894*/
    }
  }
  return 0; /*0xffd1e89b*/
}

// Function: IioLateInitFuncE8A4 @ 0xffd1e8a4 (0x10e1 bytes)
// Index: 2527/2560

bool __cdecl IioLateInitFuncE8A4(
        _DWORD *i,
        int *buf,
        int (__cdecl *sub_FFD16844)(int, int, int, int, char),
        int (__cdecl *sub_FFD1671F)(int, int, int, int),
        int (__cdecl *sub_FFD16913)(int, int),
        void (__cdecl *a6)(_DWORD *, int *))
{
  int *buf_1; // edi
  int n4_1; // esi
  int v9; // edx
  char v10; // cl
  int v11; // eax
  _BYTE *v12; // esi
  int n4_2; // eax
  int v14; // ecx
  unsigned __int8 *v15; // ebp
  int n44; // eax
  int v17; // esi
  const char *v18; // eax
  bool v19; // zf
  unsigned __int8 *v20; // ebp
  int n104; // ecx
  int v22; // esi
  const char *v23; // eax
  unsigned __int8 n4_3; // cl
  int v25; // eax
  unsigned __int8 *v26; // ebp
  int n44_1; // eax
  int v28; // esi
  const char *v29; // eax
  unsigned __int8 n4_4; // cl
  int v31; // eax
  unsigned __int8 n2_1; // al
  _WORD *v33; // ebp
  unsigned __int8 n4_6; // cl
  int *p_n3_2; // esi
  int n4_5; // eax
  unsigned __int8 *v37; // ebp
  int n104_1; /... [34654 chars total]

// Function: IioTailX_FFD1F985 @ 0xffd1f985 (0x21b bytes)
// Index: 2528/2560

bool __cdecl IioTailX_FFD1F985(_DWORD *i, int *buf, int p_n3, unsigned __int8 n2, int p_n3a)
{
  int *v6; // edi
  unsigned __int8 v7; // bl
  __int16 v8; // ax
  int v9; // eax
  __int16 v10; // ax
  int v11; // eax
  __int16 v12; // ax
  int v13; // eax
  __int16 v14; // ax
  int v15; // eax
  int v16; // eax
  int n3; // [esp-14h] [ebp-1Ch]
  int v18; // [esp-10h] [ebp-18h]
  int v19; // [esp-Ch] [ebp-14h]
  int v20; // [esp-Ch] [ebp-14h]
  int v21; // [esp-Ch] [ebp-14h]
  int v22; // [esp-Ch] [ebp-14h]
  int v23; // [esp-Ch] [ebp-14h]

  if ( IioTailX_FFD1C83E((int)i, (int)buf) || IioTailX_FFD1CBDD((int)i, buf, p_n3) ) /*0xffd1f9a9*/
    return 1; /*0xffd1f99e*/
  v6 = buf + 551; /*0xffd1f9c6*/
  v7 = 0; /*0xffd1f9d0*/
  if ( !IioTailX_FFD2286C( /*0xffd1fa01*/
          i,
          buf + 3,
          buf + 9,
          (char *)buf + 169,
          (char *)buf + 483,
          buf[553],
          buf[555],
          buf[556],
          IioTailX_FFD1D998,
          0,
          IioTailX_FFD1E011,
          0,
          *buf,
          buf,
          *(_BYTE *)(*buf + 49),
          buf + 551,
          buf[2]) )
  {
    v8 = IioTailX_FFD21D54(0, *v6); /*0xffd1fa14*/
    v19 = *v6; /*0xffd1fa1b*/
    if ( v8 >= 0 ) /*0xffd1fa21*/
      LOBYTE(v9) = IioTailX_FFD21D54(0, v19); /*0xffd1fa2d*/
    else
      v9 = -IioTailX_FFD21D54(0, v19); /*0xffd1fa29*/
    *((_BYTE *)buf + 2390) = v9; /*0xffd1fa35*/
    v10 = IioTailX_FFD21D45(0, *v6); /*0xffd1fa3e*/
    v20 = *v6; /*0xffd1fa45*/
    if ( v10 >= 0 ) /*0xffd1fa4b*/
      LOBYTE(v11) = IioTailX_FFD21D45(0, v20); /*0xffd1fa57*/
    else
      v11 = -IioTailX_FFD21D45(0, v20); /*0xffd1fa53*/
    *((_BYTE *)buf + 2391) = v11; /*0xffd1fa5f*/
    if ( IioTailFunc7838((int)i, (int)(buf + 3), (int)(buf + 9), (int *)((char *)buf + 483)) ) /*0xffd1fa75*/
    {
      v12 = IioTailX_FFD21D54(1u, *v6); /*0xffd1fa85*/
      v21 = *v6; /*0xffd1fa8c*/
      if ( v12 >= 0 ) /*0xffd1fa93*/
        LOBYTE(v13) = IioTailX_FFD21D54(1u, v21); /*0xffd1fa9f*/
      else
        v13 = -IioTailX_FFD21D54(1u, v21); /*0xffd1fa9b*/
      *((_BYTE *)buf + 2392) = v13; /*0xffd1faa7*/
      v14 = IioTailX_FFD21D45(1u, *v6); /*0xffd1fab1*/
      v22 = *v6; /*0xffd1fab8*/
      if ( v14 >= 0 ) /*0xffd1fabf*/
        LOBYTE(v15) = IioTailX_FFD21D45(1u, v22); /*0xffd1facb*/
      else
        v15 = -IioTailX_FFD21D45(1u, v22); /*0xffd1fac7*/
      *((_BYTE *)buf + 2393) = v15; /*0xffd1fad3*/
    }
    if ( !n2 ) /*0xffd1fadd*/
      return IioTailX_FFD208A9( /*0xffd1fb94*/
               i,
               (int)(buf + 3),
               (int)(buf + 9),
               (int)buf + 169,
               (int *)((char *)buf + 483),
               buf + 551,
               buf[2]) != 0;
    while ( 1 ) /*0xffd1fae3*/
    {
      v23 = buf[2]; /*0xffd1fae3*/
      v18 = buf[552]; /*0xffd1faf0*/
      n3 = *v6; /*0xffd1faf9*/
      v16 = *(_DWORD *)(p_n3a + 4 * v7); /*0xffd1fafc*/
      buf[596] = v16; /*0xffd1faff*/
      *(int *)((char *)buf + 178) = v16; /*0xffd1fb05*/
      if ( IioTailX_FFD21D63( /*0xffd1fb58*/
             (int)i,
             (int)(buf + 3),
             (int)(buf + 9),
             (unsigned __int8 *)buf + 169,
             (int *)((char *)buf + 483),
             (int)buf + 743,
             n3,
             v18,
             v23)
        || IioTailX_FFD20095((int)i, (int)(buf + 3), (int)(buf + 9), (int *)((char *)buf + 483), buf[593], buf[595])
        && IioTailX_FFD1B3A0((int)i, buf) )
      {
        break; /*0xffd1fb58*/
      }
      if ( ++v7 >= n2 ) /*0xffd1fb69*/
        return IioTailX_FFD208A9( /*0xffd1fb69*/
                 i,
                 (int)(buf + 3),
                 (int)(buf + 9),
                 (int)buf + 169,
                 (int *)((char *)buf + 483),
                 buf + 551,
                 buf[2]) != 0;
    }
  }
  return 1; /*0xffd1fb99*/
}

// Function: IioTailX_FFD1FBA0 @ 0xffd1fba0 (0x1a1 bytes)
// Index: 2529/2560

bool __cdecl IioTailX_FFD1FBA0(_DWORD *buf, int *a2, int n4, int *a4)
{
  _DWORD *buf_1; // edi
  int v5; // eax
  int v6; // ebx
  int v7; // ecx
  int v8; // eax
  int *v10; // esi
  int v11; // eax
  int buf_2; // esi
  int v13; // esi
  int v14; // eax
  int v15; // eax
  int v16; // eax
  _DWORD v17[4]; // [esp+Ch] [ebp-20h] BYREF
  _DWORD v18[4]; // [esp+1Ch] [ebp-10h] BYREF

  buf_1 = buf; /*0xffd1fba6*/
  v17[0] = 1199237901; /*0xffd1fbae*/
  v5 = buf[2]; /*0xffd1fbb8*/
  v17[1] = 1115151879; /*0xffd1fbbe*/
  v17[2] = -2121799772; /*0xffd1fbc6*/
  v17[3] = 822087691; /*0xffd1fbce*/
  v18[0] = -608286594; /*0xffd1fbd6*/
  v18[1] = 1197405121; /*0xffd1fbde*/
  v18[2] = -2006324552; /*0xffd1fbe6*/
  v18[3] = 796788544; /*0xffd1fbee*/
  v6 = (*(int (__cdecl **)(_DWORD *, int, int, int))(v5 + 8))(buf, 76, 12, n4); /*0xffd1fbf9*/
  if ( v6 )
  {
    (*(void (**)(_DWORD *, unsigned int, const char *, ...))(buf_1[1] + 52))(
      buf_1,
      0x80000000,
      "ERROR: Unable to create result buffer with requested number of elements (%u).\n",
      n4);
    v7 = *a2; /*0xffd1fc23*/
    if ( (*(_BYTE *)(*a2 + 5) & 3) == 3 || *(_BYTE *)(v7 + 6) && *(_BYTE *)(v7 + 9) ) /*0xffd1fc34*/
      return 1; /*0xffd1fc34*/
    v8 = (*(int (__cdecl **)(_DWORD *, int, int, int))(buf_1[2] + 8))(buf_1, 76, 12, 1); /*0xffd1fc44*/
    if ( IioTailFunc6DC3( /*0xffd1fc51*/
           (int)buf_1,
           v8,
           (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
           3720,
           0) )
    {
      return 1; /*0xffd1fc5f*/
    }
  }
  v10 = a4; /*0xffd1fc68*/
  v11 = (*(int (__cdecl **)(_DWORD *, int *))(buf_1[2] + 32))(buf_1, a4); /*0xffd1fc6e*/
  if ( IioTailFunc6DC3( /*0xffd1fc7b*/
         (int)buf_1,
         v11,
         (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
         3731,
         0) )
  {
    return 1; /*0xffd1fc7b*/
  }
  buf_2 = *v10; /*0xffd1fc8b*/
  IioTailFunc6DA4((void *)buf_2, 0, 0x4Cu); /*0xffd1fc92*/
  *(_DWORD *)(buf_2 + 54) = 0; /*0xffd1fc97*/
  *(_WORD *)(buf_2 + 51) = 5635; /*0xffd1fc9f*/
  *(_BYTE *)(buf_2 + 53) = 0; /*0xffd1fca5*/
  v13 = buf_2 + 60; /*0xffd1fca9*/
  v14 = (*(int (__cdecl **)(_DWORD *, _DWORD *))(buf_1[2] + 20))(buf_1, v17); /*0xffd1fcb1*/
  if ( IioTailFunc6DC3( /*0xffd1fcbd*/
         (int)buf_1,
         v14,
         (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
         3754,
         v13) )
  {
    return 1; /*0xffd1fcbd*/
  }
  v15 = (*(int (__cdecl **)(_DWORD *, _DWORD *))(buf_1[2] + 36))(buf_1, v18); /*0xffd1fcd2*/
  if ( IioTailFunc6DC3( /*0xffd1fcde*/
         (int)buf_1,
         v15,
         (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
         3764,
         v13) )
  {
    return 1; /*0xffd1fce8*/
  }
  if ( v6 ) /*0xffd1fcec*/
  {
    v16 = (*(int (__cdecl **)(_DWORD *, _DWORD **))(buf_1[2] + 56))(buf_1, &buf); /*0xffd1fcf7*/
    if ( IioTailFunc6DC3( /*0xffd1fd03*/
           (int)buf_1,
           v16,
           (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
           3779,
           v13) )
    {
      return 1; /*0xffd1fd11*/
    }
    IioTailFunc6DA4(buf, 0, 0xCu); /*0xffd1fd1b*/
  }
  return IioTailFunc6DC3( /*0xffd1fd3a*/
           (int)buf_1,
           v6,
           (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\RmtCore\\RmtCore.c",
           3790,
           v13) != 0;
}

// Function: IioTailX_FFD1FD41 @ 0xffd1fd41 (0x24 bytes)
// Index: 2530/2560

_BYTE *__cdecl IioTailX_FFD1FD41(_BYTE *a1, int a2, int a3)
{
  int v3; // edx
  _BYTE *result; // eax
  _BYTE *v5; // esi

  v3 = a3; /*0xffd1fd41*/
  result = a1; /*0xffd1fd45*/
  if ( a3 ) /*0xffd1fd4b*/
  {
    v5 = a1; /*0xffd1fd53*/
    do /*0xffd1fd60*/
    {
      *v5 = v5[a2 - (_DWORD)a1]; /*0xffd1fd5a*/
      ++v5; /*0xffd1fd5c*/
      --v3; /*0xffd1fd5d*/
    }
    while ( v3 ); /*0xffd1fd60*/
  }
  return result; /*0xffd1fd64*/
}

// Function: IioTailX_FFD1FD65 @ 0xffd1fd65 (0x27 bytes)
// Index: 2531/2560

char __cdecl IioTailX_FFD1FD65(unsigned int a1, char n32)
{
  char v2; // cl
  bool v3; // sf

  v2 = n32 - 1; /*0xffd1fd69*/
  v3 = (char)(n32 - 1) < 0; /*0xffd1fd6b*/
  if ( (char)(n32 - 1) > 0 ) /*0xffd1fd6d*/
  {
    do /*0xffd1fd80*/
    {
      if ( ((1 << v2) & a1) != 0 ) /*0xffd1fd7a*/
        break; /*0xffd1fd7a*/
      --v2; /*0xffd1fd7c*/
    }
    while ( v2 > 0 ); /*0xffd1fd80*/
    v3 = v2 < 0; /*0xffd1fd82*/
  }
  return v3 ? 0 : v2;
}

// Function: IioTailX_FFD1FD8C @ 0xffd1fd8c (0x20 bytes)
// Index: 2532/2560

const char *__cdecl IioTailX_FFD1FD8C(int a1)
{
  if ( !a1 ) /*0xffd1fd93*/
    return "DdrLevel"; /*0xffd1fda6*/
  if ( a1 == 1 ) /*0xffd1fd98*/
    return "LrbufLevel"; /*0xffd1fda0*/
  return "unknown"; /*0xffd1fd9f*/
}

// Function: IioTailX_FFD1FDAC @ 0xffd1fdac (0x13e bytes)
// Index: 2533/2560

const char *__cdecl IioTailX_FFD1FDAC(int n44)
{
  if ( n44 <= 44 ) /*0xffd1fdb3*/
  {
    if ( n44 == 44 ) /*0xffd1fdb9*/
      return "CtlAll"; /*0xffd1fe73*/
    if ( n44 > 7 ) /*0xffd1fdc2*/
    {
      switch ( n44 ) /*0xffd1fe20*/
      {
        case 20: /*0xffd1fe20*/
          return "WrLvlDelay"; /*0xffd1fe6d*/
        case 21: /*0xffd1fe20*/
          return "TxDqsDelay"; /*0xffd1fe67*/
        case 22: /*0xffd1fe20*/
          return "TxDqDelay"; /*0xffd1fe61*/
        case 23: /*0xffd1fe20*/
          return "TxVref"; /*0xffd1fe5b*/
        case 24: /*0xffd1fe20*/
          return "TxEq"; /*0xffd1fe55*/
        case 25: /*0xffd1fe20*/
          return "TxDqBitDelay"; /*0xffd1fe4f*/
        case 40: /*0xffd1fe20*/
          return "CmdAll"; /*0xffd1fe49*/
      }
    }
    else
    {
      switch ( n44 ) /*0xffd1fdc4*/
      {
        case 7: /*0xffd1fdc4*/
          return "RxDqBitDelay"; /*0xffd1fe1c*/
        case 0: /*0xffd1fdc4*/
          return "RecEnDelay"; /*0xffd1fe16*/
        case 1: /*0xffd1fdc4*/
          return "RxDqsDelay"; /*0xffd1fe10*/
        case 2: /*0xffd1fdc4*/
          return "RxDqDelay"; /*0xffd1fe0a*/
        case 3: /*0xffd1fdc4*/
          return "RxDqsPDelay"; /*0xffd1fe04*/
        case 4: /*0xffd1fdc4*/
          return "RxDqsNDelay"; /*0xffd1fdfe*/
        case 5: /*0xffd1fdc4*/
          return "RxVref"; /*0xffd1fdf8*/
        case 6: /*0xffd1fdc4*/
          return "RxEq"; /*0xffd1fdf2*/
      }
    }
    return "unknown"; /*0xffd1fde7*/
  }
  if ( n44 <= 72 ) /*0xffd1fe77*/
  {
    switch ( n44 ) /*0xffd1fe79*/
    {
      case 'H': /*0xffd1fe79*/
        return "CmdGrp1"; /*0xffd1feb7*/
      case '4': /*0xffd1fe79*/
        return "CkAll"; /*0xffd1feb1*/
      case '5': /*0xffd1fe79*/
        return "CmdVref"; /*0xffd1feab*/
      case '<': /*0xffd1fe79*/
        return "EridDelay"; /*0xffd1fea5*/
      case '=': /*0xffd1fe79*/
        return "EridVref"; /*0xffd1fe9f*/
      case 'G': /*0xffd1fe79*/
        return "CmdGrp0"; /*0xffd1fe99*/
    }
    return "unknown"; /*0xffd1fe92*/
  }
  switch ( n44 ) /*0xffd1febb*/
  {
    case 'I': /*0xffd1febb*/
      return "CmdGrp2"; /*0xffd1fee4*/
    case 'J': /*0xffd1febb*/
      return "CmdGrp3"; /*0xffd1fede*/
    case 'K': /*0xffd1febb*/
      return "CmdGrp4"; /*0xffd1fed8*/
  }
  if ( n44 != 76 ) /*0xffd1feca*/
    return "unknown"; /*0xffd1fed1*/
  return "CmdGrp5"; /*0xffd1fdf2*/
}

// Function: IioTailX_FFD1FEEA @ 0xffd1feea (0x123 bytes)
// Index: 2534/2560

char __cdecl IioTailX_FFD1FEEA(int __return_address, int a2, int a3, unsigned int n23, int n4, int n2, int n3, int a8)
{
  char n8; // bl
  bool v9; // zf
  char n4_1; // cl
  _BYTE v12[12]; // [esp+8h] [ebp-18h] BYREF
  char n4_2; // [esp+14h] [ebp-Ch]

  n8 = 8; /*0xffd1fefa*/
  if ( *(_BYTE *)(a2 + 132) /*0xffd1ff2a*/
    && *(_BYTE *)(a2
                + (unsigned __int8)a8
                + 2 * ((unsigned __int8)n3 + 3 * ((unsigned __int8)n2 + 2 * (unsigned __int8)n4 + 14))) != 13 )
  {
    if ( !a3 && n23 == 23 || a3 != 1 || n23 == 5 ) /*0xffd1ff4a*/
      return n8; /*0xffd1ff4a*/
    v9 = n23 == 23; /*0xffd1ff50*/
    goto LABEL_26; /*0xffd1ff54*/
  }
  (*(void (__cdecl **)(int, int, int, int, int, _BYTE *))(*(_DWORD *)(__return_address + 12) + 44))( /*0xffd1ff6f*/
    __return_address,
    n4,
    n2,
    n3,
    a8,
    v12);
  n4_1 = n4_2; /*0xffd1ff72*/
  if ( !n4_2 ) /*0xffd1ff7b*/
    n4_1 = 4; /*0xffd1ff7d*/
  if ( n23 != 24 && n23 != 30 && n23 != 6 && n23 != 37 && n23 != 36 && (n23 != 5 || a3) ) /*0xffd1ffa5*/
  {
    if ( n4_1 == 4 || n23 == 3 || n23 == 4 || n23 == 19 || n23 <= 2 || n23 == 22 || n23 == 5 ) /*0xffd1ffd1*/
      return 4; /*0xffd1ffd1*/
    if ( n23 == 23 ) /*0xffd1ffd6*/
    {
      v9 = *(_BYTE *)(a2 /*0xffd1fffd*/
                    + (unsigned __int8)a8
                    + 2 * ((unsigned __int8)n3 + 3 * ((unsigned __int8)n2 + 2 * (unsigned __int8)n4 + 14))) == 11;
LABEL_26:
      if ( v9 ) /*0xffd20001*/
        return 4; /*0xffd20003*/
    }
  }
  return n8; /*0xffd20005*/
}

// Function: IioTailX_FFD2000D @ 0xffd2000d (0x1e bytes)
// Index: 2535/2560

bool __cdecl IioTailX_FFD2000D(int n40)
{
  return n40 == 40 || n40 == 53 || n40 > 70 && n40 <= 76; /*0xffd20027*/
}

// Function: IioTailX_FFD2002B @ 0xffd2002b (0x11 bytes)
// Index: 2536/2560

bool __cdecl IioTailX_FFD2002B(int a1)
{
  return (unsigned int)(a1 - 44) <= 6; /*0xffd2003b*/
}

// Function: IioTailX_FFD2003C @ 0xffd2003c (0x28 bytes)
// Index: 2537/2560

bool __cdecl IioTailX_FFD2003C(int __return_address, int a2, int a3, int a4, int a5, int n40)
{
  return n40 == 40 || n40 > 43 && (n40 <= 55 || n40 == 63 || n40 > 70 && n40 <= 76); /*0xffd20060*/
}

// Function: IioTailX_FFD20064 @ 0xffd20064 (0x31 bytes)
// Index: 2538/2560

char __cdecl IioTailX_FFD20064(int __return_address, int a2, int a3, _DWORD *a4, int a5, int n40)
{
  char v6; // bl

  v6 = 0; /*0xffd2006b*/
  if ( IioTailX_FFD20095(__return_address, a2, a3, a4, a5, n40) || !n40 ) /*0xffd2008c*/
    return 1; /*0xffd2008e*/
  return v6; /*0xffd20092*/
}

// Function: IioTailX_FFD20095 @ 0xffd20095 (0x10c bytes)
// Index: 2539/2560

char __cdecl IioTailX_FFD20095(int __return_address, int a2, int a3, _DWORD *a4, int a5, int n40)
{
  char v6; // bl
  unsigned __int8 n4_1; // bh
  unsigned __int8 n4; // [esp+4h] [ebp-Ch]
  unsigned __int8 v10; // [esp+8h] [ebp-8h]
  unsigned __int8 n2; // [esp+Ch] [ebp-4h]
  unsigned __int8 n40a; // [esp+2Ch] [ebp+1Ch]

  v6 = 0; /*0xffd2009f*/
  if ( n40 == 23 ) /*0xffd200a4*/
  {
    if ( !a5 ) /*0xffd200d5*/
    {
      n4_1 = 0; /*0xffd200db*/
      n4 = 0; /*0xffd200dd*/
LABEL_10:
      n2 = 0; /*0xffd200e0*/
LABEL_11:
      n40a = 0; /*0xffd200e4*/
      while ( 1 ) /*0xffd200fd*/
      {
        if ( IioTailFunc7B25(__return_address, a2, a3, (int)a4, n4, n2, n40a) ) /*0xffd200fd*/
        {
          v10 = 0; /*0xffd20109*/
          while ( !IioTailFunc7C60(__return_address, a2, a3, a4, n4, n2, n40a, v10) /*0xffd20152*/
               || *(_BYTE *)(a3 + v10 + 2 * (n40a + 3 * (n2 + 2 * n4_1 + 14))) == 11 )
          {
            if ( ++v10 >= 2u ) /*0xffd2015e*/
              goto LABEL_19; /*0xffd2015e*/
          }
          v6 = 1; /*0xffd20162*/
LABEL_19:
          if ( v6 ) /*0xffd20166*/
            break; /*0xffd20166*/
        }
        if ( ++n40a >= 3u ) /*0xffd20172*/
        {
          if ( ++n2 < 2u ) /*0xffd20186*/
            goto LABEL_11; /*0xffd20186*/
          n4 = ++n4_1; /*0xffd2018e*/
          if ( n4_1 < 4u ) /*0xffd20194*/
            goto LABEL_10; /*0xffd20194*/
          return v6; /*0xffd20194*/
        }
      }
    }
  }
  else if ( n40 == 40 || n40 > 43 && (n40 <= 55 || n40 == 63 || (unsigned int)(n40 - 71) <= 5) ) /*0xffd200c4*/
  {
    return 1; /*0xffd200ca*/
  }
  return v6; /*0xffd2019c*/
}

// Function: IioTailX_FFD201A1 @ 0xffd201a1 (0x23a bytes)
// Index: 2540/2560

char __cdecl IioTailX_FFD201A1(
        int __return_address,
        int a2,
        int a3,
        int a4,
        _DWORD *a5,
        int a6,
        int n3,
        int a8,
        __int16 n3a,
        unsigned __int16 n3aa,
        unsigned __int16 *p_n3a,
        __int16 *a12,
        int a13)
{
  char result; // al
  signed __int16 n3a_2; // bp
  int n3a_3; // ebx
  int v17; // ecx
  int n2; // ecx
  char p_n3_1; // dl
  signed __int16 n3a_4; // ax
  unsigned __int8 v21; // bl
  char v22; // [esp+Ah] [ebp-Eh]
  char p_n3; // [esp+Bh] [ebp-Dh] BYREF
  int n3aa_1; // [esp+Ch] [ebp-Ch]
  int n3aa_2; // [esp+10h] [ebp-8h]
  int n3a_1; // [esp+14h] [ebp-4h]
  char n3b; // [esp+34h] [ebp+1Ch]

  if ( *(_BYTE *)n3 >= 3u ) /*0xffd201b1*/
    (*(void (__cdecl **)(int, unsigned int, const char *))(*(_DWORD *)(__return_address + 4) + 52))( /*0xffd201c1*/
      __return_address,
      0x80000000,
      "\nSearching for pass/fail boundary\n");
  if ( (*(unsigned __int8 (__cdecl **)(int, int, int, _DWORD *, int, int, int, int))(n3 + 3511))( /*0xffd201e2*/
         __return_address,
         a2,
         a3,
         a5,
         a6,
         a8,
         1,
         a13) )
  {
    return 1; /*0xffd201ef*/
  }
  n3aa_1 = n3aa; /*0xffd20203*/
  n3aa_2 = (__int16)n3aa; /*0xffd20207*/
  n3a_1 = n3a; /*0xffd20210*/
  n3b = 0; /*0xffd20217*/
  v22 = 0; /*0xffd20225*/
  n3a_2 = n3a; /*0xffd2022f*/
  n3a_3 = (unsigned __int16)(*(unsigned __int8 *)(a4 + 13) /*0xffd20244*/
                           * ((__int16)(n3a + ((__int16)n3aa - n3a) / 2)
                            / *(unsigned __int8 *)(a4 + 13)));
  while ( (int)abs32(n3aa_2 - n3a_1) > *(unsigned __int8 *)(a4 + 13) || !n3b || !v22 ) /*0xffd2026c*/
  {
    *p_n3a = n3a_3; /*0xffd20276*/
    v17 = *(_DWORD *)(n3 + 3495); /*0xffd20289*/
    n3a_1 = ((__int16)n3a_3 - *(__int16 *)(n3 + 11)) / *(unsigned __int8 *)(a4 + 13); /*0xffd2028f*/
    n2 = *(unsigned __int8 *)(v17 + n3a_1); /*0xffd20293*/
    if ( n2 ) /*0xffd20299*/
    {
      p_n3_1 = n2 == 2; /*0xffd202f0*/
      p_n3 = n2 == 2; /*0xffd202f3*/
    }
    else
    {
      if ( RmtShmooBoundaryCheck(__return_address, a2, a3, (_DWORD *)a4, a5, a6, n3, a8, n3a_3, a12, &p_n3, a13) ) /*0xffd202c3*/
        return 1; /*0xffd202cd*/
      p_n3_1 = p_n3; /*0xffd202d3*/
      *(_BYTE *)(n3a_1 + *(_DWORD *)(n3 + 3495)) = (p_n3 != 0) + 1; /*0xffd202e8*/
    }
    n3a_4 = *p_n3a; /*0xffd202fb*/
    if ( *p_n3a == (_WORD)n3aa_1 ) /*0xffd20303*/
      v22 = 1; /*0xffd20305*/
    if ( n3a_4 == n3a_2 ) /*0xffd2030d*/
      n3b = 1; /*0xffd2030f*/
    if ( p_n3_1 ) /*0xffd20316*/
    {
      n3aa_1 = *p_n3a; /*0xffd20318*/
    }
    else
    {
      n3a_2 = *p_n3a; /*0xffd2031e*/
      n3a_4 = n3aa_1; /*0xffd20320*/
    }
    n3aa_2 = n3a_4; /*0xffd20329*/
    v21 = *(_BYTE *)(a4 + 13); /*0xffd20330*/
    n3a_1 = n3a_2; /*0xffd20338*/
    n3a_3 = (unsigned __int16)(v21 * ((__int16)(n3a_2 + (n3a_4 - n3a_2) / 2) / v21)); /*0xffd20351*/
    if ( (_WORD)n3a_3 == n3a_2 && n3b ) /*0xffd20362*/
      n3a_3 = (unsigned __int16)n3aa_1; /*0xffd20364*/
    if ( (_WORD)n3a_3 == (_WORD)n3aa_1 ) /*0xffd2036a*/
    {
      if ( v22 ) /*0xffd20375*/
        n3a_3 = (unsigned __int16)n3a_2; /*0xffd2037b*/
    }
  }
  *p_n3a = n3a_2; /*0xffd20387*/
  IioTailFunc6DA4(*(void **)(n3 + 3495), 0, *(_DWORD *)(n3 + 3491)); /*0xffd20398*/
  result = (*(int (__cdecl **)(int, int, int, _DWORD *, int, int, _DWORD, int))(n3 + 3511))( /*0xffd203b8*/
             __return_address,
             a2,
             a3,
             a5,
             a6,
             a8,
             0,
             a13);
  if ( !result ) /*0xffd203c3*/
  {
    *(_DWORD *)(n3 + 3487) = 2; /*0xffd203c5*/
    return result; /*0xffd203cf*/
  }
  return 1; /*0xffd203d5*/
}

// Function: IioTailX_FFD203DB @ 0xffd203db (0x153 bytes)
// Index: 2541/2560

char __cdecl IioTailX_FFD203DB(
        int __return_address,
        int a2,
        int a3,
        int a4,
        _DWORD *a5,
        int a6,
        _BYTE *n3,
        int a8,
        int a9,
        __int16 n3a,
        _BYTE *a11,
        signed __int16 *p_n3a,
        __int16 *a13,
        int a14)
{
  _BYTE *n3_1; // ebx
  signed __int16 *p_n3a_1; // edi
  __int16 n3a_1; // dx
  _BYTE *v17; // eax
  unsigned __int8 v18; // al
  signed __int16 n3a_2; // si
  int v20; // esi
  int v21; // eax
  int n2; // ecx
  char n3_2; // dl

  n3_1 = n3; /*0xffd203dc*/
  if ( *n3 >= 3u ) /*0xffd203ea*/
    (*(void (__cdecl **)(int, unsigned int, const char *))(*(_DWORD *)(__return_address + 4) + 52))( /*0xffd203fa*/
      __return_address,
      0x80000000,
      "\nChecking guard band\n");
  p_n3a_1 = p_n3a; /*0xffd20400*/
  n3a_1 = n3a; /*0xffd20404*/
  if ( *p_n3a != n3a ) /*0xffd2040c*/
  {
    v17 = a11; /*0xffd20412*/
    while ( *v17 <= *(_BYTE *)(a4 + 15) ) /*0xffd2041f*/
    {
      v18 = *(_BYTE *)(a4 + 13); /*0xffd2042a*/
      n3a_2 = *p_n3a_1; /*0xffd2042d*/
      if ( a9 == 1 ) /*0xffd20430*/
      {
        LOBYTE(p_n3a) = *(_BYTE *)(a4 + 13); /*0xffd20432*/
        if ( n3a_2 - v18 < n3a_1 ) /*0xffd20443*/
          break; /*0xffd20443*/
        *p_n3a_1 = n3a_2 - (unsigned __int8)p_n3a; /*0xffd20453*/
      }
      else
      {
        LOBYTE(p_n3a) = *(_BYTE *)(a4 + 13); /*0xffd2045b*/
        if ( n3a_2 + v18 > n3a_1 ) /*0xffd20469*/
          break; /*0xffd20469*/
        *p_n3a_1 = n3a_2 + (unsigned __int8)p_n3a; /*0xffd20479*/
      }
      v20 = (*p_n3a_1 - *(__int16 *)(n3_1 + 11)) / *(unsigned __int8 *)(a4 + 13); /*0xffd20495*/
      v21 = *(_DWORD *)(n3_1 + 3495); /*0xffd20497*/
      n2 = *(unsigned __int8 *)(v21 + v20); /*0xffd2049d*/
      if ( *(_BYTE *)(v21 + v20) ) /*0xffd2049d*/
      {
        n3_2 = n2 == 2; /*0xffd204a8*/
        LOBYTE(n3) = n2 == 2; /*0xffd204ab*/
      }
      else
      {
        if ( RmtShmooBoundaryCheck( /*0xffd204dc*/
               __return_address,
               a2,
               a3,
               (_DWORD *)a4,
               a5,
               a6,
               (int)n3_1,
               a8,
               (unsigned __int16)*p_n3a_1,
               a13,
               (char *)&n3,
               a14) )
        {
          return 1; /*0xffd2052a*/
        }
        n3_2 = (char)n3; /*0xffd204e8*/
        *(_BYTE *)(v20 + *(_DWORD *)(n3_1 + 3495)) = ((_BYTE)n3 != 0) + 1; /*0xffd204f9*/
      }
      v17 = a11; /*0xffd204fc*/
      if ( n3_2 ) /*0xffd20502*/
        *a11 = 0; /*0xffd20504*/
      else
        v17 = ++a11; /*0xffd20509*/
      n3a_1 = n3a; /*0xffd2050e*/
      if ( *p_n3a_1 == n3a ) /*0xffd20516*/
        break; /*0xffd20516*/
    }
  }
  *(_DWORD *)(n3_1 + 3487) = 0; /*0xffd2051c*/
  return 0; /*0xffd20525*/
}

// Function: IioTailX_FFD2052E @ 0xffd2052e (0xb1 bytes)
// Index: 2542/2560

char __cdecl IioTailX_FFD2052E(int __return_address, int a2, int a3)
{
  if ( *(int *)a2 >= 4 ) /*0xffd20539*/
  {
    IioTailFunc6DEB( /*0xffd2054c*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      259,
      a3);
    return 1; /*0xffd20557*/
  }
  if ( *(int *)(a2 + 9) >= 4 ) /*0xffd2055b*/
  {
    IioTailFunc6DEB( /*0xffd20565*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      269,
      a3);
    return 1; /*0xffd20565*/
  }
  if ( !*(_BYTE *)(a2 + 13) ) /*0xffd20567*/
  {
    IioTailFunc6DEB( /*0xffd20575*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      279,
      a3);
    return 1; /*0xffd20575*/
  }
  if ( *(int *)(a2 + 16) >= 3 ) /*0xffd2057d*/
  {
    IioTailFunc6DEB( /*0xffd20587*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      289,
      a3);
    return 1; /*0xffd20587*/
  }
  if ( *(int *)(a2 + 20) >= 3 ) /*0xffd2058c*/
  {
    IioTailFunc6DEB( /*0xffd20596*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      299,
      a3);
    return 1; /*0xffd20596*/
  }
  if ( *(int *)(a2 + 24) >= 3 ) /*0xffd2059b*/
  {
    IioTailFunc6DEB( /*0xffd205a5*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      309,
      a3);
    return 1; /*0xffd205a5*/
  }
  if ( *(int *)(a2 + 28) >= 3 ) /*0xffd205aa*/
  {
    IioTailFunc6DEB( /*0xffd205b4*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      319,
      a3);
    return 1; /*0xffd205b4*/
  }
  if ( *(int *)(a2 + 32) >= 3 ) /*0xffd205b9*/
  {
    IioTailFunc6DEB( /*0xffd205c3*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      329,
      a3);
    return 1; /*0xffd205c3*/
  }
  if ( *(int *)(a2 + 39) >= 2 ) /*0xffd205cc*/
  {
    IioTailFunc6DEB( /*0xffd205d6*/
      __return_address,
      4,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      339,
      a3);
    return 1; /*0xffd205d6*/
  }
  return 0; /*0xffd20556*/
}

// Function: RmtShmooStepCheck @ 0xffd205df (0x2ca bytes)
// Index: 2543/2560

char __cdecl RmtShmooStepCheck(
        int __return_address,
        int a2,
        int a3,
        int a4,
        _DWORD *a5,
        int a6,
        int n3,
        int a8,
        _BYTE *a9,
        int a10,
        int a11)
{
  int n3_1; // esi
  char v14; // al
  char v15; // dl
  char v16; // dh
  char v17; // al
  bool v19; // zf
  char v20; // dl
  int n4_1; // edi
  int n2_1; // edx
  char n3_3; // si
  int v24; // ecx
  int v25; // eax
  char v26; // cl
  bool v27; // zf
  char v28; // cl
  char v29; // dl
  bool v30; // zf
  char v31; // cl
  char v32; // dl
  bool v33; // zf
  char v34; // [esp+12h] [ebp-12h]
  char v35; // [esp+13h] [ebp-11h]
  char v36; // [esp+14h] [ebp-10h]
  char v37; // [esp+15h] [ebp-Fh]
  char v38; // [esp+16h] [ebp-Eh]
  unsigned __int8 v39; // [esp+17h] [ebp-Dh] BYREF
  int n4; // [esp+18h] [ebp-Ch]
  int n2; // [esp+1Ch] [ebp-8h]
  int n3_2; // [esp+20h] [ebp-4h]
  char v43; // [esp+34h] [ebp+10h]

  *a9 = 0; /*0xffd205f6*/
  if ( IioTailFunc76C4(__return_address, a2, a3, (int)a5, *(_DWORD *)a4, *(unsigned __int8 *)(a4 + 8), 0, &v39) ) /*0xffd20614*/
    return 1; /*0xffd20622*/
  if ( *(_DWORD *)(a4 + 16) == 2 /*0xffd20653*/
    || *(_DWORD *)(a4 + 20) == 2
    || *(_DWORD *)(a4 + 24) == 2
    || *(_DWORD *)(a4 + 28) == 2
    || *(_DWORD *)(a4 + 32) == 2 )
  {
    return 0; /*0xffd20653*/
  }
  n3_1 = n3; /*0xffd20659*/
  v37 = 0; /*0xffd2065d*/
  v38 = 1; /*0xffd20662*/
  LOBYTE(n4) = 0; /*0xffd20667*/
  do
  {
    if ( !IioTailFunc7D83(__return_address, a2, a5, n4) ) /*0xffd20683*/
    {
      v31 = v37; /*0xffd20870*/
LABEL_53:
      v32 = v38; /*0xffd20874*/
      goto LABEL_54; /*0xffd20874*/
    }
    v35 = 0; /*0xffd20689*/
    v36 = 1; /*0xffd2068e*/
    LOBYTE(n2) = 0; /*0xffd20693*/
    do
    {
      if ( !IioTailFunc7BC9(__return_address, a2, a3, a5, n4, n2) ) /*0xffd206b7*/
      {
        v28 = v35; /*0xffd20834*/
LABEL_44:
        v29 = v36; /*0xffd20838*/
        goto LABEL_45; /*0xffd20838*/
      }
      v34 = 0; /*0xffd206bd*/
      v43 = 1; /*0xffd206c2*/
      LOBYTE(n3_2) = 0; /*0xffd206c7*/
      do
      {
        if ( !IioTailFunc7B25(__return_address, a2, a3, (int)a5, n4, n2, n3_2) ) /*0xffd206ef*/
          goto LABEL_31; /*0xffd206ef*/
        v14 = 0; /*0xffd206f5*/
        v15 = 0; /*0xffd206f7*/
        v16 = 1; /*0xffd206f9*/
        if ( v39 )
        {
          do
          {
            if ( v14 ) /*0xffd20703*/
              break; /*0xffd20703*/
            v17 = *(_BYTE *)((unsigned __int8)n3_2 /*0xffd20726*/
                           + 3 * ((unsigned __int8)n2 + 2 * (unsigned __int8)n4)
                           + *(_DWORD *)(n3_1 + 3503));
            if ( *(_DWORD *)(a4 + 16) ? (v17 & 2) == 0 : (v17 & 1) == 0 )
              v16 = 0; /*0xffd20737*/
            else
              v15 = 1; /*0xffd20733*/
            v14 = 1; /*0xffd20739*/
          }
          while ( v39 > 1u );
        }
        if ( *(_DWORD *)(a4 + 20) ) /*0xffd20741*/
          v19 = v16 == 0; /*0xffd20817*/
        else
          v19 = v15 == 0; /*0xffd2074b*/
        if ( v19 ) /*0xffd2074d*/
        {
          v26 = 0; /*0xffd2080f*/
          v43 = 0; /*0xffd20811*/
          goto LABEL_32; /*0xffd20815*/
        }
        v20 = 1; /*0xffd20757*/
        v34 = 1; /*0xffd20759*/
        if ( *(_BYTE *)(a4 + 44) && !*(_BYTE *)(a4 + 36) && *(_DWORD *)(a4 + 24) != 2 ) /*0xffd20771*/
        {
          if ( (unsigned __int8)RmtSweepIterate(__return_address, n4, n2, n3_2, a2, a3, a4, a5, n3, a8, a10, a11) ) /*0xffd207a1*/
            return 1; /*0xffd207ab*/
          n4_1 = (unsigned __int8)n4; /*0xffd207b1*/
          n2_1 = (unsigned __int8)n2; /*0xffd207b6*/
          n3_3 = n3_2; /*0xffd207bb*/
          *(_BYTE *)((unsigned __int8)n2 + 2 * (unsigned __int8)n4 + a4 + 45) |= 1 << n3_2; /*0xffd207cb*/
          v24 = n2_1 + 2 * (n4_1 + 8); /*0xffd207d2*/
          v25 = *((unsigned __int8 *)a5 + v24) & ~(1 << n3_3); /*0xffd207d9*/
          n3_1 = n3; /*0xffd207dc*/
          *((_BYTE *)a5 + v24) = v25; /*0xffd207e0*/
LABEL_31:
          v26 = v43; /*0xffd207e3*/
LABEL_32:
          v20 = v34; /*0xffd207e7*/
          goto LABEL_33; /*0xffd207e7*/
        }
        v26 = v43; /*0xffd2081e*/
LABEL_33:
        LOBYTE(n3_2) = n3_2 + 1; /*0xffd207eb*/
      }
      while ( (unsigned __int8)n3_2 < 3u );
      if ( *(_DWORD *)(a4 + 24) ) /*0xffd207fd*/
        v27 = v26 == 0; /*0xffd20830*/
      else
        v27 = v20 == 0; /*0xffd20803*/
      if ( !v27 ) /*0xffd20805*/
      {
        v28 = 1; /*0xffd20807*/
        v35 = 1; /*0xffd20809*/
        goto LABEL_44; /*0xffd2080d*/
      }
      v28 = v35; /*0xffd20824*/
      v29 = 0; /*0xffd20828*/
      v36 = 0; /*0xffd2082a*/
LABEL_45:
      LOBYTE(n2) = n2 + 1; /*0xffd2083c*/
    }
    while ( (unsigned __int8)n2 < 2u );
    if ( *(_DWORD *)(a4 + 28) ) /*0xffd2084e*/
      v30 = v29 == 0; /*0xffd2086c*/
    else
      v30 = v28 == 0; /*0xffd20854*/
    if ( !v30 ) /*0xffd20856*/
    {
      v31 = 1; /*0xffd20858*/
      v37 = 1; /*0xffd2085a*/
      goto LABEL_53; /*0xffd2085e*/
    }
    v31 = v37; /*0xffd20860*/
    v32 = 0; /*0xffd20864*/
    v38 = 0; /*0xffd20866*/
LABEL_54:
    LOBYTE(n4) = n4 + 1; /*0xffd20878*/
  }
  while ( (unsigned __int8)n4 < 4u );
  if ( *(_DWORD *)(a4 + 32) ) /*0xffd2088a*/
    v33 = v32 == 0; /*0xffd20894*/
  else
    v33 = v31 == 0; /*0xffd20890*/
  if ( !v33 ) /*0xffd20896*/
    *a9 = 1; /*0xffd2089c*/
  return 0; /*0xffd208a1*/
}

// Function: IioTailX_FFD208A9 @ 0xffd208a9 (0x290 bytes)
// Index: 2544/2560

char __cdecl IioTailX_FFD208A9(_DWORD *__return_address, int a2, int a3, int a4, _DWORD *a5, int *a6, int a7)
{
  int v7; // ebx
  int v8; // edi
  unsigned __int8 n4_2; // bl
  char v10; // al
  int v11; // ecx
  int v12; // eax
  char v13; // al
  unsigned __int8 n2; // bl
  unsigned __int8 n3; // bh
  char v17; // al
  unsigned __int8 n2_1; // bl
  char v19; // al
  unsigned __int8 n4_1; // bl
  char n4; // [esp+10h] [ebp-Ch]
  unsigned __int8 n4a; // [esp+10h] [ebp-Ch]
  char n4b; // [esp+10h] [ebp-Ch]
  unsigned __int8 v24; // [esp+14h] [ebp-8h]
  char v25; // [esp+14h] [ebp-8h]
  char v26; // [esp+18h] [ebp-4h]

  v7 = a4; /*0xffd208ad*/
  v8 = *a6; /*0xffd208c0*/
  if ( *(_BYTE *)(a4 + 43) )
  {
LABEL_15:
    if ( *(_BYTE *)(v7 + 8) ) /*0xffd20963*/
    {
      for ( n4a = 0; n4a < 4u; ++n4a ) /*0xffd2096d*/
      {
        if ( (*(_BYTE *)(v8 + 1) & 0x20) != 0 ) /*0xffd2097f*/
          v13 = IioTailFunc7D9D((int)__return_address, a2, a3, a5, n4a); /*0xffd2098a*/
        else
          v13 = IioTailFunc7D83((int)__return_address, a2, a5, n4a); /*0xffd209a0*/
        if ( v13 ) /*0xffd209aa*/
        {
          if ( IioTailX_FFD2000D(*(_DWORD *)(v7 + 4)) || *(_DWORD *)(v7 + 4) == 60 || *(_DWORD *)(v7 + 4) == 61 ) /*0xffd209c7*/
            (*(void (__cdecl **)(_DWORD *, unsigned __int8, int))(__return_address[6] + 24))(__return_address, n4a, 3); /*0xffd209d0*/
          if ( *(_DWORD *)(v7 + 4) == 60 || *(_DWORD *)(v7 + 4) == 61 ) /*0xffd209e0*/
          {
            n2 = 0; /*0xffd209e6*/
            v24 = 0; /*0xffd209e8*/
            do /*0xffd20a4a*/
            {
              n3 = 0; /*0xffd209ec*/
              v26 = 0; /*0xffd209ee*/
              do /*0xffd20a3f*/
              {
                if ( (*(_BYTE *)(v8 + 1) & 8) != 0 ) /*0xffd20a0c*/
                  v17 = IioTailFunc7B25((int)__return_address, a2, a3, (int)a5, n4a, v24, v26); /*0xffd20a0e*/
                else
                  v17 = IioTailFunc7AC8((int)__return_address, a2, a3, (int)a5, n4a, v24, v26); /*0xffd20a15*/
                if ( v17 ) /*0xffd20a1f*/
                  (*(void (__cdecl **)(_DWORD *, unsigned __int8, unsigned __int8, char, _DWORD))(__return_address[6] /*0xffd20a30*/
                                                                                                + 20))(
                    __return_address,
                    n4a,
                    v24,
                    v26,
                    0);
                v26 = ++n3; /*0xffd20a38*/
              }
              while ( n3 < 3u ); /*0xffd20a3f*/
              v24 = ++n2; /*0xffd20a43*/
            }
            while ( n2 < 2u ); /*0xffd20a4a*/
            n2_1 = 0; /*0xffd20a4c*/
            v25 = 0; /*0xffd20a4e*/
            do /*0xffd20a95*/
            {
              if ( (*(_BYTE *)(v8 + 1) & 0x10) != 0 ) /*0xffd20a68*/
                v19 = IioTailFunc7C08((int)__return_address, a2, a3, a5, n4a, v25); /*0xffd20a6a*/
              else
                v19 = IioTailFunc7BC9((int)__return_address, a2, a3, a5, n4a, v25); /*0xffd20a71*/
              if ( v19 ) /*0xffd20a7b*/
                (*(void (__cdecl **)(_DWORD *, unsigned __int8, char))(__return_address[3] + 60))( /*0xffd20a86*/
                  __return_address,
                  n4a,
                  v25);
              v25 = ++n2_1; /*0xffd20a8e*/
            }
            while ( n2_1 < 2u ); /*0xffd20a95*/
            v7 = a4; /*0xffd20a97*/
          }
        }
      }
    }
    n4_1 = 0; /*0xffd20aad*/
    n4b = 0; /*0xffd20aaf*/
    do /*0xffd20ae2*/
    {
      if ( IioTailFunc7D83((int)__return_address, a2, a5, n4b) ) /*0xffd20ac0*/
        (*(void (__cdecl **)(_DWORD *, char))(__return_address[6] + 40))(__return_address, n4b); /*0xffd20ad4*/
      n4b = ++n4_1; /*0xffd20adb*/
    }
    while ( n4_1 < 4u ); /*0xffd20ae2*/
    if ( v8 ) /*0xffd20ae6*/
    {
      if ( *(_DWORD *)(v8 + 3503) ) /*0xffd20ae8*/
      {
        (*(void (__cdecl **)(_DWORD *, _DWORD))(__return_address[1] + 44))(__return_address, *(_DWORD *)(v8 + 3503)); /*0xffd20af7*/
        *(_DWORD *)(v8 + 3503) = 0; /*0xffd20afa*/
      }
      if ( *(_DWORD *)(v8 + 3495) ) /*0xffd20b03*/
      {
        (*(void (__cdecl **)(_DWORD *, _DWORD))(__return_address[1] + 44))(__return_address, *(_DWORD *)(v8 + 3495)); /*0xffd20b12*/
        *(_DWORD *)(v8 + 3495) = 0; /*0xffd20b15*/
      }
      (*(void (__cdecl **)(_DWORD *, int))(__return_address[1] + 44))(__return_address, v8); /*0xffd20b23*/
      *a6 = 0; /*0xffd20b2c*/
    }
    return 0; /*0xffd20b2f*/
  }
  else
  {
    n4_2 = 0; /*0xffd208c8*/
    n4 = 0; /*0xffd208ca*/
    while ( 1 )
    {
      v10 = (*(_BYTE *)(v8 + 1) & 0x20) != 0
          ? IioTailFunc7D9D((int)__return_address, a2, a3, a5, n4)
          : IioTailFunc7D83((int)__return_address, a2, a5, n4);
      if ( v10 ) /*0xffd208ff*/
      {
        v11 = 1; /*0xffd20907*/
        if ( *(_DWORD *)a4 == 1 && (*(_DWORD *)(a4 + 4) == 40 || *(_DWORD *)(a4 + 4) == 53 || *(_DWORD *)(a4 + 4) == 44) ) /*0xffd2091c*/
          v11 = (2 * *(_DWORD *)(a4 + 9)) | 1; /*0xffd20923*/
        v12 = (*(int (__cdecl **)(_DWORD *, char, _DWORD, _DWORD, int))(__return_address[3] + 68))( /*0xffd20931*/
                __return_address,
                n4,
                *(_DWORD *)a4,
                *(_DWORD *)(a4 + 4),
                v11);
        if ( IioTailFunc6DC3( /*0xffd20944*/
               (int)__return_address,
               v12,
               (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
               3851,
               a7) )
        {
          return 1; /*0xffd20994*/
        }
      }
      n4 = ++n4_2; /*0xffd20952*/
      if ( n4_2 >= 4u ) /*0xffd20959*/
      {
        v7 = a4; /*0xffd2095f*/
        goto LABEL_15; /*0xffd2095f*/
      }
    }
  }
}

// Function: IioTailFunc0B39 @ 0xffd20b39 (0x48d bytes)
// Index: 2545/2560

char __cdecl IioTailFunc0B39(
        int __return_address,
        int a2,
        int a3,
        _DWORD *a4,
        _DWORD *a5,
        int a6,
        int n3,
        int a8,
        unsigned __int16 *a9,
        int a10,
        int a11)
{
  int n3_1; // ebp
  int v12; // edi
  unsigned __int8 (__cdecl *v13)(int, int, _DWORD, _DWORD, int); // eax
  unsigned __int8 n4_1; // bl
  unsigned __int8 n2; // bh
  char v17; // al
  unsigned __int8 n4_2; // bh
  char v19; // al
  char n2_2; // dl
  unsigned __int8 n2_3; // bl
  int n3_4; // edi
  int v23; // eax
  unsigned __int8 n4_3; // bl
  unsigned __int8 n2_4; // bh
  char v26; // al
  _DWORD *v27; // eax
  unsigned __int8 n4_4; // bl
  unsigned __int8 n2_7; // bh
  char v30; // al
  char n2_5; // dl
  unsigned __int8 n2_6; // bl
  int n3_3; // edi
  int v34; // eax
  unsigned __int8 (__cdecl *v35)(int, int, int, _DWORD *, _DWORD, _DWORD, int, int); // eax
  char n2_1; // [esp+13h] [ebp-19h] BYREF
  unsigned __int8 n4[4]; // [esp+14h]... [10316 chars total]

// Function: RmtShmooDispatcher @ 0xffd20fc6 (0x2c3 bytes)
// Index: 2546/2560

char __cdecl RmtShmooDispatcher(
        int __return_address,
        int a2,
        int a3,
        unsigned __int8 *a4,
        _DWORD *a5,
        int a6,
        _BYTE *n3,
        int a8,
        int a9,
        __int16 n3a,
        unsigned __int16 *p_n3a,
        __int16 *a12,
        _BYTE *a13,
        __int16 *a14,
        _BYTE *a15,
        __int16 *a16,
        int a17)
{
  __int16 v18; // ax
  signed __int16 n3b_1; // cx
  __int16 n3a_1; // bx
  char v21; // al
  int n2_1; // eax
  int n2; // eax
  unsigned __int8 *v25; // edx
  _DWORD *v26; // ecx
  int n4; // edi
  int n2_2; // esi
  char v29; // [esp+13h] [ebp-1h] BYREF
  __int16 n3b; // [esp+30h] [ebp+1Ch]

  v29 = 0; /*0xffd20fcf*/
  *a13 = 0; /*0xffd20fd5*/
  *a14 = 0; /*0xffd20fe1*/
  *a15 = 0; /*0xffd20fe8*/
  *a16 = 0; /*0xffd20fee*/
  IioTailFunc6DA4(*(void **)(n3 + 3495), 0, *(_DWORD *)(n3 + 3491)); /*0xffd20ffe*/
  if ( a9 == 1 ) /*0xffd2100d*/
    v18 = *(_WORD *)(n3 + 13); /*0xffd2100f*/
  else
    v18 = *(_WORD *)(n3 + 11); /*0xffd21015*/
  n3b_1 = a4[13] * (v18 / a4[13]); /*0xffd21034*/
  n3b = n3b_1; /*0xffd21037*/
  if ( a4[36] ) /*0xffd21030*/
    *(_DWORD *)(n3 + 3487) = 1; /*0xffd2103d*/
  else
    *(_DWORD *)(n3 + 3487) = 2; /*0xffd21049*/
  n3a_1 = n3a; /*0xffd21053*/
  while ( *(_DWORD *)(n3 + 3487) ) /*0xffd2105e*/
  {
    switch ( *(_DWORD *)(n3 + 3487) ) /*0xffd21071*/
    {
      case 1: /*0xffd21071*/
        v21 = IioTailX_FFD201A1(__return_address, a2, a3, (int)a4, a5, a6, (int)n3, a8, n3a, n3b_1, p_n3a, a12, a17); /*0xffd2113f*/
        break;
      case 2: /*0xffd21071*/
        v21 = RmtShmooSweep(__return_address, a2, a3, (int)a4, a5, a6, n3, a8, a9, n3b_1, p_n3a, a12, a17); /*0xffd21114*/
        break;
      case 3: /*0xffd21071*/
        v21 = RmtShmooSearch(__return_address, a2, a3, (int)a4, a5, a6, n3, a8, a9, n3a, &v29, (int)p_n3a, a12, a17); /*0xffd210e9*/
        break;
      case 4: /*0xffd21071*/
        v21 = IioTailX_FFD203DB( /*0xffd210b3*/
                __return_address,
                a2,
                a3,
                (int)a4,
                a5,
                a6,
                n3,
                a8,
                a9,
                n3a,
                &v29,
                (signed __int16 *)p_n3a,
                a12,
                a17);
        break;
      default:
        IioTailFunc6DEB( /*0xffd21164*/
          __return_address,
          1,
          "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
          3525,
          a17);
        return 1; /*0xffd2116e*/
    }
    if ( v21 ) /*0xffd21149*/
      return 1; /*0xffd21149*/
    n3b_1 = n3b; /*0xffd2114b*/
  }
  if ( a9 != 1 ) /*0xffd2117d*/
  {
    if ( n3a < n3b_1 ) /*0xffd211d4*/
      goto LABEL_36; /*0xffd211d4*/
    n3a_1 = n3a; /*0xffd211d6*/
    while ( 1 ) /*0xffd211f5*/
    {
      n2 = *(unsigned __int8 *)((n3a_1 - *(__int16 *)(n3 + 11)) / a4[13] + *(_DWORD *)(n3 + 3495)); /*0xffd211f5*/
      if ( n2 == 1 ) /*0xffd211fc*/
      {
        *a14 = n3a_1; /*0xffd21202*/
        *a13 = 1; /*0xffd21209*/
      }
      else if ( n2 == 2 ) /*0xffd21211*/
      {
LABEL_35:
        *a16 = n3a_1; /*0xffd21221*/
        *a15 = 1; /*0xffd2122c*/
        goto LABEL_36; /*0xffd2122c*/
      }
      n3a_1 -= a4[13]; /*0xffd21217*/
      if ( n3a_1 < n3b ) /*0xffd2121d*/
        goto LABEL_36; /*0xffd2121d*/
    }
  }
  if ( n3a <= n3b_1 ) /*0xffd21182*/
  {
    do /*0xffd211cd*/
    {
      n2_1 = *(unsigned __int8 *)((n3a_1 - *(__int16 *)(n3 + 11)) / a4[13] + *(_DWORD *)(n3 + 3495)); /*0xffd211a5*/
      if ( n2_1 == 1 ) /*0xffd211ac*/
      {
        *a14 = n3a_1; /*0xffd211b2*/
        *a13 = 1; /*0xffd211b9*/
      }
      else if ( n2_1 == 2 ) /*0xffd211c1*/
      {
        goto LABEL_35; /*0xffd211c1*/
      }
      n3a_1 += a4[13]; /*0xffd211c7*/
    }
    while ( n3a_1 <= n3b ); /*0xffd211cd*/
  }
LABEL_36:
  if ( RmtShmooBoundaryCalc(__return_address, a2, a3, a4, (int)a5, (int)n3, a8, (unsigned __int16 *)a12, 0, a4[37], a17) ) /*0xffd21255*/
    return 1; /*0xffd2125f*/
  v25 = a4 + 45; /*0xffd21267*/
  v26 = a5 + 4; /*0xffd2126a*/
  n4 = 4; /*0xffd2126d*/
  do /*0xffd2127f*/
  {
    n2_2 = 2; /*0xffd21270*/
    do /*0xffd2127a*/
    {
      *(_BYTE *)v26 |= *v25++; /*0xffd21273*/
      v26 = (_DWORD *)((char *)v26 + 1); /*0xffd21276*/
      --n2_2; /*0xffd21277*/
    }
    while ( n2_2 ); /*0xffd2127a*/
    --n4; /*0xffd2127c*/
  }
  while ( n4 ); /*0xffd2127f*/
  return 0; /*0xffd21283*/
}

// Function: RmtRangeDeltaCalc @ 0xffd21289 (0xcd bytes)
// Index: 2547/2560

char __cdecl RmtRangeDeltaCalc(
        int __return_address,
        __int16 *p_n3a,
        __int16 *a3,
        int a4,
        char a5,
        __int16 *a6,
        __int16 *a7,
        __int16 *a8)
{
  _BYTE *v8; // ebp
  __int16 v9; // ax
  unsigned __int8 v10; // al
  char v11; // al
  unsigned int v12; // edx
  __int16 v13; // cx
  unsigned int v15; // [esp+24h] [ebp+14h]

  if ( a5 ) /*0xffd21292*/
  {
    v8 = (_BYTE *)(a4 + 14); /*0xffd212a4*/
    v9 = *(unsigned __int8 *)(a4 + 14); /*0xffd212b1*/
    if ( *p_n3a <= *a3 ) /*0xffd212b5*/
      v9 = -v9; /*0xffd212b7*/
    *a8 = v9; /*0xffd212ba*/
    if ( *p_n3a - *a3 >= 0 ) /*0xffd212c5*/
      v10 = *(_BYTE *)p_n3a - *(_BYTE *)a3; /*0xffd212cf*/
    else
      v10 = *(_BYTE *)a3 - *(_BYTE *)p_n3a; /*0xffd212c9*/
    v15 = v10; /*0xffd212da*/
    *(_BYTE *)a6 = v10 / *v8; /*0xffd212e6*/
    v11 = v10 / *v8; /*0xffd212f0*/
    if ( v15 % (unsigned __int8)*v8 ) /*0xffd212f0*/
    {
      *(_BYTE *)a6 = v11 + 1; /*0xffd212fe*/
      v12 = v15 % (unsigned __int8)*v8; /*0xffd21308*/
      *a7 = v12; /*0xffd2130e*/
      if ( *p_n3a < *a3 ) /*0xffd21317*/
        *a7 = -(__int16)v12; /*0xffd2131b*/
    }
    else
    {
      *a7 = *a8; /*0xffd21327*/
    }
  }
  else
  {
    v13 = *p_n3a - *a3; /*0xffd21337*/
    *a7 = v13; /*0xffd2133e*/
    *a8 = v13; /*0xffd21345*/
    *(_BYTE *)a6 = 1; /*0xffd2134c*/
  }
  return 0; /*0xffd2134f*/
}

// Function: RmtShmooSearch @ 0xffd21356 (0x180 bytes)
// Index: 2548/2560

char __cdecl RmtShmooSearch(
        int __return_address,
        int a2,
        int a3,
        int a4,
        _DWORD *a5,
        int a6,
        _BYTE *n3,
        int a8,
        int a9,
        __int16 n3a,
        _BYTE *a11,
        int p_n3a,
        __int16 *a13,
        int a14)
{
  _BYTE *n3_1; // esi
  int __return_address_1; // edi
  _WORD *p_n3a_1; // ebp
  int n3a_1; // ebx
  int v18; // ecx
  int n2; // ecx
  int v21; // ebx
  char n3_2; // dl
  unsigned __int8 v23; // bl
  unsigned __int8 v24; // dl
  int v25; // eax
  int n3a_2; // [esp-10h] [ebp-20h]

  n3_1 = n3; /*0xffd21359*/
  __return_address_1 = __return_address; /*0xffd2135e*/
  if ( *n3 >= 3u ) /*0xffd21365*/
    (*(void (__cdecl **)(int, unsigned int, const char *))(*(_DWORD *)(__return_address + 4) + 52))( /*0xffd21375*/
      __return_address,
      0x80000000,
      "\nSearching for last pass offset\n");
  p_n3a_1 = (_WORD *)p_n3a; /*0xffd2137b*/
  *(_DWORD *)(n3_1 + 3487) = 0; /*0xffd2137f*/
  n3a_1 = (unsigned __int16)*p_n3a_1; /*0xffd2138a*/
  v18 = *(_DWORD *)(n3_1 + 3495); /*0xffd2139e*/
  p_n3a = ((__int16)n3a_1 - *(__int16 *)(n3_1 + 11)) / *(unsigned __int8 *)(a4 + 13); /*0xffd213a6*/
  n2 = *(unsigned __int8 *)(p_n3a + v18); /*0xffd213aa*/
  if ( n2 == 1 ) /*0xffd213b1*/
  {
LABEL_4:
    *a11 = 1; /*0xffd213b7*/
    *(_DWORD *)(n3_1 + 3487) = 4; /*0xffd213be*/
  }
  else
  {
    while ( (_WORD)n3a_1 != n3a ) /*0xffd214c4*/
    {
      if ( n2 ) /*0xffd213d1*/
      {
        v21 = a4; /*0xffd2142a*/
        n3_2 = n2 == 2; /*0xffd21431*/
        LOBYTE(n3) = n2 == 2; /*0xffd21434*/
      }
      else
      {
        n3a_2 = n3a_1; /*0xffd213e0*/
        v21 = a4; /*0xffd213e5*/
        if ( RmtShmooBoundaryCheck(__return_address_1, a2, a3, (_DWORD *)a4, a5, a6, (int)n3_1, a8, n3a_2, a13, (char *)&n3, a14) ) /*0xffd213fc*/
          return 1; /*0xffd214cf*/
        n3_2 = (char)n3; /*0xffd2140c*/
        *(_BYTE *)(p_n3a + *(_DWORD *)(n3_1 + 3495)) = ((_BYTE)n3 != 0) + 1; /*0xffd21421*/
        __return_address_1 = __return_address; /*0xffd21424*/
      }
      if ( !n3_2 ) /*0xffd2143a*/
        goto LABEL_4; /*0xffd2143a*/
      if ( a9 == 1 ) /*0xffd21445*/
      {
        v23 = *(_BYTE *)(v21 + 13); /*0xffd21447*/
        if ( (__int16)*p_n3a_1 - v23 < n3a ) /*0xffd2145e*/
          return 0; /*0xffd2145e*/
        *p_n3a_1 -= v23; /*0xffd2146a*/
      }
      else
      {
        v24 = *(_BYTE *)(v21 + 13); /*0xffd21470*/
        if ( (__int16)*p_n3a_1 + v24 > n3a ) /*0xffd21487*/
          return 0; /*0xffd21487*/
        *p_n3a_1 += v24; /*0xffd21493*/
      }
      n3a_1 = (unsigned __int16)*p_n3a_1; /*0xffd21497*/
      v25 = *(_DWORD *)(n3_1 + 3495); /*0xffd214b1*/
      p_n3a = ((__int16)n3a_1 - *(__int16 *)(n3_1 + 11)) / *(unsigned __int8 *)(a4 + 13); /*0xffd214b7*/
      n2 = *(unsigned __int8 *)(p_n3a + v25); /*0xffd214bb*/
    }
  }
  return 0; /*0xffd213ca*/
}

// Function: RmtShmooSweep @ 0xffd214d6 (0x1cf bytes)
// Index: 2549/2560

char __cdecl RmtShmooSweep(
        int __return_address,
        int a2,
        int a3,
        int a4,
        _DWORD *a5,
        int a6,
        _BYTE *n3,
        int a8,
        int a9,
        __int16 n3a,
        unsigned __int16 *p_n3a,
        __int16 *a12,
        int a13)
{
  _BYTE *n3_1; // edi
  unsigned __int16 *p_n3a_1; // esi
  int n3a_1; // edx
  __int16 v16; // ax
  signed __int16 n3a_4; // cx
  signed __int16 n3a_5; // ax
  signed __int16 n3a_3; // bp
  bool v20; // zf
  __int16 v21; // ax
  unsigned __int16 v22; // cx
  __int16 *v24; // [esp-Ch] [ebp-20h]
  int v25; // [esp-4h] [ebp-18h]
  int n3a_2; // [esp+10h] [ebp-4h]

  n3_1 = n3; /*0xffd214df*/
  if ( *n3 >= 3u ) /*0xffd214e6*/
    (*(void (__cdecl **)(int, unsigned int, const char *))(*(_DWORD *)(__return_address + 4) + 52))( /*0xffd214f6*/
      __return_address,
      0x80000000,
      "\nSearching for stop condition\n");
  p_n3a_1 = p_n3a; /*0xffd21501*/
  n3a_1 = *p_n3a; /*0xffd2150c*/
  n3a_2 = n3a_1; /*0xffd2150f*/
  v16 = *(unsigned __int8 *)(a4 + 13); /*0xffd21513*/
  if ( a9 == 1 ) /*0xffd21517*/
  {
    n3a_4 = n3a_1 - v16; /*0xffd2151c*/
    n3a_5 = *(_WORD *)(n3_1 + 11); /*0xffd2151f*/
    n3a_3 = n3a_4; /*0xffd21523*/
    if ( n3a_4 >= n3a_5 ) /*0xffd21529*/
      goto LABEL_8; /*0xffd21529*/
  }
  else
  {
    n3a_3 = n3a_1 + v16; /*0xffd21530*/
    n3a_5 = *(_WORD *)(n3_1 + 13); /*0xffd21533*/
    if ( n3a_3 <= n3a_5 ) /*0xffd2153a*/
      goto LABEL_8; /*0xffd2153a*/
  }
  n3a_3 = n3a_5; /*0xffd2153c*/
LABEL_8:
  if ( !RmtShmooBoundaryCheck(__return_address, a2, a3, (_DWORD *)a4, a5, a6, (int)n3_1, a8, n3a_1, a12, (char *)&n3, a13) ) /*0xffd21566*/
  {
    v20 = (_BYTE)n3 == 0; /*0xffd2157e*/
    *(_BYTE *)(((__int16)*p_n3a_1 - *(__int16 *)(n3_1 + 11)) / *(unsigned __int8 *)(a4 + 13) + *(_DWORD *)(n3_1 + 3495)) = ((_BYTE)n3 != 0) + 1; /*0xffd2159b*/
    if ( v20 ) /*0xffd215a0*/
      n3a_3 = *p_n3a_1; /*0xffd215a2*/
    LOBYTE(p_n3a) = 0; /*0xffd215a5*/
    while ( !RmtShmooStepCheck(__return_address, a2, a3, a4, a5, a6, (int)n3_1, a8, &p_n3a, (int)a12, a13) ) /*0xffd215df*/
    {
      if ( (_BYTE)p_n3a || *p_n3a_1 == n3a ) /*0xffd215f7*/
      {
        *p_n3a_1 = n3a_3; /*0xffd2168c*/
        *(_DWORD *)(n3_1 + 3487) = 3; /*0xffd21691*/
        return 0; /*0xffd2169b*/
      }
      v21 = *(unsigned __int8 *)(a4 + 13); /*0xffd21602*/
      if ( a9 == 1 ) /*0xffd2160b*/
        v22 = v21 + n3a_2; /*0xffd2160d*/
      else
        v22 = n3a_2 - v21; /*0xffd21612*/
      v25 = a13; /*0xffd21615*/
      LOWORD(n3a_2) = v22; /*0xffd2161d*/
      v24 = a12; /*0xffd21623*/
      *p_n3a_1 = v22; /*0xffd21627*/
      if ( RmtShmooBoundaryCheck(__return_address, a2, a3, (_DWORD *)a4, a5, a6, (int)n3_1, a8, n3a_2, v24, (char *)&n3, v25) ) /*0xffd21648*/
        return 1; /*0xffd21652*/
      v20 = (_BYTE)n3 == 0; /*0xffd2165c*/
      *(_BYTE *)(((__int16)*p_n3a_1 - *(__int16 *)(n3_1 + 11)) / *(unsigned __int8 *)(a4 + 13) + *(_DWORD *)(n3_1 + 3495)) = ((_BYTE)n3 != 0) + 1; /*0xffd21679*/
      if ( v20 ) /*0xffd2167e*/
        n3a_3 = *p_n3a_1; /*0xffd21684*/
    }
  }
  return 1; /*0xffd2169f*/
}

// Function: IioTailX_FFD216A5 @ 0xffd216a5 (0x97 bytes)
// Index: 2550/2560

char __cdecl IioTailX_FFD216A5(int n4, int a2, int a3, int a4, int a5, int buf)
{
  unsigned __int8 n2; // bh
  unsigned __int8 n3; // bl
  char result; // al
  unsigned __int8 v10; // [esp+8h] [ebp-8h]
  char v11; // [esp+Ch] [ebp-4h]
  unsigned __int8 bufa; // [esp+2Ch] [ebp+1Ch]

  bufa = 0; /*0xffd216b1*/
  *(_WORD *)(buf + 3485) = 0; /*0xffd216b4*/
  do /*0xffd21734*/
  {
    n2 = 0; /*0xffd216bd*/
    v10 = 0; /*0xffd216bf*/
    do /*0xffd21727*/
    {
      n3 = 0; /*0xffd216c2*/
      v11 = 0; /*0xffd216c4*/
      do /*0xffd2171d*/
      {
        result = IioTailFunc7AC8(n4, a2, a3, a5, bufa, v10, v11); /*0xffd216dc*/
        if ( result ) /*0xffd216e6*/
        {
          ++*(_BYTE *)(buf + 3485); /*0xffd216eb*/
          result = IioTailFunc7B25(n4, a2, a3, a5, bufa, v10, v11); /*0xffd21703*/
          if ( result ) /*0xffd2170d*/
            ++*(_BYTE *)(buf + 3486); /*0xffd2170f*/
        }
        v11 = ++n3; /*0xffd21717*/
      }
      while ( n3 < 3u ); /*0xffd2171d*/
      v10 = ++n2; /*0xffd21721*/
    }
    while ( n2 < 2u ); /*0xffd21727*/
    ++bufa; /*0xffd2172e*/
  }
  while ( bufa < 4u ); /*0xffd21734*/
  return result; /*0xffd21736*/
}

// Function: IioTailX_FFD2173C @ 0xffd2173c (0xf bytes)
// Index: 2551/2560

bool __cdecl IioTailX_FFD2173C(int a1)
{
  return *(_DWORD *)(a1 + 3487) == 1; /*0xffd2174a*/
}

// Function: IioTailX_FFD2174B @ 0xffd2174b (0x5fa bytes)
// Index: 2552/2560

char __cdecl IioTailX_FFD2174B(int __return_address, int a2, int a3, int a4, _DWORD *a5, int buf, int a7)
{
  int *v7; // ebp
  int buf_1; // edi
  unsigned __int8 n2_2; // bh
  int v10; // esi
  unsigned __int8 n3_1; // bl
  unsigned __int8 n2_1; // bl
  unsigned __int8 n8_1; // bl
  unsigned __int8 v14; // bh
  int v15; // esi
  unsigned __int8 v16; // dl
  bool v17; // zf
  unsigned int v18; // eax
  unsigned __int8 v19; // bl
  int v20; // ecx
  unsigned __int8 v21; // al
  int n4_1; // eax
  __int16 v23; // cx
  __int16 v24; // bx
  _BYTE *v25; // esi
  unsigned __int8 v26; // al
  int v27; // ecx
  __int16 v28; // dx
  unsigned __int16 v29; // ax
  __int16 *v30; // ebx
  int n2_3; // esi
  __int16 v32; // ax
  __int16 v33; // cx
  __int64 v34; // rax
  unsigned __int8 v36; // [esp+11h] [ebp-4Bh]
  unsigned __int8 n8; // [esp+12h] [ebp-4Ah]
  unsigned __int8 v38; // [esp+13h] [ebp-49h]
  __int16 v39; // [esp+14h] [ebp-48h] BYREF
  __int16 v40; // [esp+18h] [ebp-44h] BYREF
  unsign... [13536 chars total]

// Function: IioTailX_FFD21D45 @ 0xffd21d45 (0xf bytes)
// Index: 2553/2560

__int16 __cdecl IioTailX_FFD21D45(unsigned __int8 a1, int a2)
{
  return *(_WORD *)(a2 + 2 * a1 + 19); /*0xffd21d53*/
}

// Function: IioTailX_FFD21D54 @ 0xffd21d54 (0xf bytes)
// Index: 2554/2560

__int16 __cdecl IioTailX_FFD21D54(unsigned __int8 a1, int a2)
{
  return *(_WORD *)(a2 + 2 * a1 + 15); /*0xffd21d62*/
}

// Function: IioTailX_FFD21D63 @ 0xffd21d63 (0x20e bytes)
// Index: 2555/2560

char __cdecl IioTailX_FFD21D63(
        int __return_address,
        int a2,
        int a3,
        unsigned __int8 *a4,
        _DWORD *a5,
        int a6,
        int n3,
        int a8,
        int a9)
{
  unsigned __int16 n3a_1; // dx
  int n3_1; // edi
  bool v11; // cf
  unsigned __int8 *v12; // ebp
  int v13; // eax
  int n2_1; // eax
  unsigned __int8 n2_2; // al
  __int16 n3a; // cx
  char v17; // al
  int v18; // ecx
  int v19; // ecx
  char v21; // [esp+10h] [ebp-20h] BYREF
  char v22; // [esp+11h] [ebp-1Fh] BYREF
  char v23; // [esp+12h] [ebp-1Eh] BYREF
  char v24; // [esp+13h] [ebp-1Dh] BYREF
  unsigned __int16 p_n3a[2]; // [esp+14h] [ebp-1Ch] BYREF
  int n2; // [esp+18h] [ebp-18h]
  int v27; // [esp+1Ch] [ebp-14h] BYREF
  __int16 v28[2]; // [esp+20h] [ebp-10h] BYREF
  __int16 v29[2]; // [esp+24h] [ebp-Ch] BYREF
  int v30; // [esp+28h] [ebp-8h]
  int v31; // [esp+2Ch] [ebp-4h]

  n3a_1 = 0; /*0xffd21d6f*/
  n3_1 = n3; /*0xffd21d72*/
  *(_DWORD *)p_n3a = 0; /*0xffd21d76*/
  *(_DWORD *)v29 = 0; /*0xffd21d7a*/
  v21 = 0; /*0xffd21d7e*/
  v11 = *(_BYTE *)n3 < 4u; /*0xffd21d82*/
  v27 = 0; /*0xffd21d85*/
  v23 = 0; /*0xffd21d89*/
  *(_DWORD *)v28 = 0; /*0xffd21d8d*/
  v22 = 0; /*0xffd21d91*/
  v24 = 0; /*0xffd21d95*/
  if ( !v11 ) /*0xffd21d99*/
  {
    (*(void (**)(int, unsigned int, const char *, ...))(*(_DWORD *)(__return_address + 4) + 52))( /*0xffd21db3*/
      __return_address,
      0x80000000,
      "MinOffset=%d MaxOffset=%d\n",
      *(__int16 *)(n3 + 11),
      *(__int16 *)(n3 + 13));
    n3a_1 = 0; /*0xffd21db9*/
  }
  v12 = a4; /*0xffd21dbb*/
  v13 = *(_DWORD *)(a4 + 9); /*0xffd21dbf*/
  if ( v13 ) /*0xffd21dc4*/
  {
    n2_1 = v13 - 1; /*0xffd21dc6*/
    if ( n2_1 ) /*0xffd21dc9*/
    {
      n2 = 2; /*0xffd21dce*/
      if ( n2_1 == 2 ) /*0xffd21dd4*/
      {
        v30 = 0; /*0xffd21de4*/
        n2 = 2; /*0xffd21deb*/
        v31 = 1; /*0xffd21def*/
      }
      else
      {
        v31 = 0; /*0xffd21dd9*/
        v30 = 1; /*0xffd21dde*/
      }
      goto LABEL_11; /*0xffd21de2*/
    }
    v30 = 1; /*0xffd21df8*/
  }
  else
  {
    v30 = 0; /*0xffd21dfe*/
  }
  LOBYTE(n2) = 1; /*0xffd21e05*/
LABEL_11:
  n2_2 = 0; /*0xffd21e09*/
  LOBYTE(n3) = 0; /*0xffd21e0b*/
  while ( 1 ) /*0xffd21e16*/
  {
    a4 = (unsigned __int8 *)*(&v30 + n2_2); /*0xffd21e16*/
    if ( a4 == (unsigned __int8 *)1 || (n3a = -v12[13], n3a < *(__int16 *)(n3_1 + 11)) ) /*0xffd21e2c*/
      n3a = 0; /*0xffd21e2e*/
    if ( !v12[36] && n3a != n3a_1 ) /*0xffd21e39*/
      *(_DWORD *)p_n3a = (unsigned __int16)n3a; /*0xffd21e3e*/
    if ( a4 == (unsigned __int8 *)1 ) /*0xffd21e4c*/
      v17 = RmtShmooDispatcher( /*0xffd21e6e*/
              __return_address,
              a2,
              a3,
              v12,
              a5,
              a6,
              (_BYTE *)n3_1,
              a8,
              1,
              n3a,
              p_n3a,
              v29,
              &v21,
              (__int16 *)&v27,
              &v22,
              (__int16 *)&a4,
              a9);
    else
      v17 = RmtShmooDispatcher( /*0xffd21ea7*/
              __return_address,
              a2,
              a3,
              v12,
              a5,
              a6,
              (_BYTE *)n3_1,
              a8,
              (int)a4,
              n3a,
              p_n3a,
              v29,
              &v23,
              v28,
              &v24,
              (__int16 *)&a4,
              a9);
    if ( v17 ) /*0xffd21eb1*/
      return 1; /*0xffd21f67*/
    n2_2 = n3 + 1; /*0xffd21ebb*/
    LOBYTE(n3) = n2_2; /*0xffd21ebd*/
    if ( n2_2 >= (unsigned __int8)n2 ) /*0xffd21ec5*/
      break; /*0xffd21ec5*/
    n3a_1 = p_n3a[0]; /*0xffd21ec7*/
  }
  if ( *(_BYTE *)n3_1 >= 2u ) /*0xffd21ed3*/
  {
    if ( *(_DWORD *)(v12 + 9) ) /*0xffd21ed9*/
    {
      if ( v21 ) /*0xffd21ee9*/
      {
        v18 = *(_DWORD *)(__return_address + 4); /*0xffd21ef5*/
        if ( v22 ) /*0xffd21ef9*/
          (*(void (__cdecl **)(int, unsigned int, const char *, _DWORD))(v18 + 52))( /*0xffd21f00*/
            __return_address,
            0x80000000,
            "Hi side last pass offset = %d\n",
            (__int16)v27);
        else
          (*(void (__cdecl **)(int, unsigned int, const char *, _DWORD))(v18 + 52))( /*0xffd21f09*/
            __return_address,
            0x80000000,
            "Hi side last pass offset = %d (first fail not found)\n",
            (__int16)v27);
      }
      else
      {
        (*(void (__cdecl **)(int, unsigned int, const char *))(*(_DWORD *)(__return_address + 4) + 52))( /*0xffd21f1b*/
          __return_address,
          0x80000000,
          "Hi side last pass offset = not found\n");
      }
    }
    if ( *(_DWORD *)(v12 + 9) != 1 ) /*0xffd21f24*/
    {
      if ( v23 ) /*0xffd21f2b*/
      {
        v19 = *(_DWORD *)(__return_address + 4); /*0xffd21f37*/
        if ( v24 ) /*0xffd21f3b*/
          (*(void (__cdecl **)(int, unsigned int, const char *, _DWORD))(v19 + 52))( /*0xffd21f42*/
            __return_address,
            0x80000000,
            "Lo side last pass offset = %d\n",
            v28[0]);
        else
          (*(void (__cdecl **)(int, unsigned int, const char *, _DWORD))(v19 + 52))( /*0xffd21f4b*/
            __return_address,
            0x80000000,
            "Lo side last pass offset = %d (first fail not found)\n",
            v28[0]);
      }
      else
      {
        (*(void (__cdecl **)(int, unsigned int, const char *))(*(_DWORD *)(__return_address + 4) + 52))( /*0xffd21f5d*/
          __return_address,
          0x80000000,
          "Lo side last pass offset = not found\n");
      }
    }
  }
  return 0; /*0xffd21f69*/
}

// Function: RmtShmooBoundaryCheck @ 0xffd21f71 (0x158 bytes)
// Index: 2556/2560

bool __cdecl RmtShmooBoundaryCheck(
        int __return_address,
        int a2,
        int a3,
        _DWORD *a4,
        _DWORD *a5,
        int a6,
        int n3,
        int a8,
        int n3a,
        __int16 *a10,
        char *p_n3,
        int a12)
{
  int v12; // eax
  void (__cdecl *v14)(_DWORD, _DWORD, _DWORD, int); // eax
  unsigned __int8 (__cdecl *v15)(int, int, int, _DWORD *, _DWORD, _DWORD, int); // eax
  char v16; // al

  if ( *(_DWORD *)(n3 + 3503) /*0xffd21f9b*/
    || (v12 = (*(int (__cdecl **)(int, _DWORD))(*(_DWORD *)(__return_address + 4) + 40))(
                __return_address,
                *(_DWORD *)(n3 + 3499)),
        (*(_DWORD *)(n3 + 3503) = v12) != 0) )
  {
    if ( RmtShmooBoundaryCalc( /*0xffd21fe8*/
           __return_address,
           a2,
           a3,
           a4,
           (int)a5,
           n3,
           a8,
           (unsigned __int16 *)a10,
           n3a,
           *((_BYTE *)a4 + 37),
           a12) )
    {
      return 1; /*0xffd21fe8*/
    }
    v14 = *(void (__cdecl **)(_DWORD, _DWORD, _DWORD, int))(n3 + 3519); /*0xffd21ff8*/
    if ( v14 ) /*0xffd22000*/
      v14(*(_DWORD *)(n3 + 3539), *a4, a4[1], n3a); /*0xffd22011*/
    v15 = *(unsigned __int8 (__cdecl **)(int, int, int, _DWORD *, _DWORD, _DWORD, int))(n3 + 3531); /*0xffd22016*/
    if ( v15 ) /*0xffd2201e*/
    {
      if ( v15(__return_address, a2, a3, a5, *(_DWORD *)(n3 + 3535), *(_DWORD *)(n3 + 3539), a12) ) /*0xffd2203a*/
        return 1; /*0xffd2203a*/
    }
    if ( (*(unsigned __int8 (__cdecl **)(int, int, int, _DWORD *, int, int, _DWORD, int))(n3 + 3515))( /*0xffd2205f*/
           __return_address,
           a2,
           a3,
           a5,
           a6,
           a8,
           *(_DWORD *)(n3 + 3503),
           a12) )
    {
      return 1; /*0xffd2205f*/
    }
    v16 = IioTailFunc74EA(__return_address, a2, a3, (int)a5, *(_DWORD *)(n3 + 3503)); /*0xffd2207c*/
    *p_n3 = v16; /*0xffd22088*/
    return v16 && *((_BYTE *)a4 + 38) && IioTailFunc0B39(__return_address, a2, a3, (int)a4, a5, a6, n3, a8, a10, 1, a12); /*0xffd220be*/
  }
  else
  {
    IioTailFunc6DEB( /*0xffd21fae*/
      __return_address,
      1,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      2077,
      a12);
    return 1; /*0xffd21fb6*/
  }
}

// Function: RmtShmooBoundaryCalc @ 0xffd220c9 (0x164 bytes)
// Index: 2557/2560

char __cdecl RmtShmooBoundaryCalc(
        int __return_address,
        int a2,
        int a3,
        _DWORD *a4,
        int a5,
        int n3,
        int a7,
        unsigned __int16 *a8,
        __int16 n3a,
        char a10,
        int a11)
{
  int v12; // ecx
  unsigned __int8 v13; // dl
  int n3_1; // edi
  int v15; // ebx
  __int16 v16; // ax
  __int16 v17; // ax
  unsigned __int8 n4_1; // bl
  unsigned __int8 n2_1; // bh
  __int16 v21[2]; // [esp+10h] [ebp-18h] BYREF
  __int16 v22[2]; // [esp+14h] [ebp-14h] BYREF
  __int16 v23[2]; // [esp+18h] [ebp-10h] BYREF
  int n2; // [esp+1Ch] [ebp-Ch]
  int n4; // [esp+20h] [ebp-8h]
  int v26; // [esp+24h] [ebp-4h]
  unsigned __int16 v27; // [esp+48h] [ebp+20h]

  if ( *a8 != n3a ) /*0xffd220dc*/
  {
    RmtRangeDeltaCalc(__return_address, &n3a, (__int16 *)a8, (int)a4, a10, v21, v23, v22); /*0xffd22104*/
    v12 = *(_DWORD *)v21; /*0xffd22109*/
    v13 = 0; /*0xffd2210d*/
    LOBYTE(n3a) = 0; /*0xffd22112*/
    if ( LOBYTE(v21[0]) ) /*0xffd22118*/
    {
      n3_1 = n3; /*0xffd2211e*/
      v15 = LOBYTE(v21[0]) - 1; /*0xffd22125*/
      v26 = v15; /*0xffd22126*/
      do /*0xffd22219*/
      {
        v16 = *a8; /*0xffd2212f*/
        if ( v13 == v15 ) /*0xffd22132*/
          v17 = v23[0] + v16; /*0xffd22134*/
        else
          v17 = v22[0] + v16; /*0xffd2213b*/
        n4_1 = 0; /*0xffd22143*/
        v27 = v17; /*0xffd22145*/
        LOBYTE(n4) = 0; /*0xffd22149*/
        do /*0xffd221e5*/
        {
          n2_1 = 0; /*0xffd2214d*/
          LOBYTE(n2) = 0; /*0xffd2214f*/
          do /*0xffd221cc*/
          {
            LOBYTE(n3) = 0; /*0xffd22153*/
            do /*0xffd221b3*/
            {
              if ( IioTailFunc22EF( /*0xffd22189*/
                     __return_address,
                     n4,
                     n2,
                     n3,
                     a2,
                     a3,
                     a4,
                     a5,
                     n3_1,
                     a8,
                     v17,
                     v12,
                     *(int *)v23,
                     *(int *)v22,
                     a7,
                     a11) )
              {
                return 1; /*0xffd22229*/
              }
              if ( (*(_BYTE *)(n3_1 + 1) & 8) == 0 ) /*0xffd2219d*/
                break; /*0xffd2219d*/
              v12 = *(_DWORD *)v21; /*0xffd221a3*/
              LOBYTE(n3) = n3 + 1; /*0xffd221a9*/
              v17 = v27; /*0xffd221af*/
            }
            while ( (unsigned __int8)n3 < 3u ); /*0xffd221b3*/
            if ( *(int *)(n3_1 + 1) <= 16 ) /*0xffd221b9*/
              break; /*0xffd221b9*/
            v12 = *(_DWORD *)v21; /*0xffd221bb*/
            ++n2_1; /*0xffd221bf*/
            v17 = v27; /*0xffd221c1*/
            LOBYTE(n2) = n2_1; /*0xffd221c5*/
          }
          while ( n2_1 < 2u ); /*0xffd221cc*/
          if ( (*(_BYTE *)(n3_1 + 1) & 0x20) == 0 ) /*0xffd221d2*/
            break; /*0xffd221d2*/
          v12 = *(_DWORD *)v21; /*0xffd221d4*/
          ++n4_1; /*0xffd221d8*/
          v17 = v27; /*0xffd221da*/
          LOBYTE(n4) = n4_1; /*0xffd221de*/
        }
        while ( n4_1 < 4u ); /*0xffd221e5*/
        if ( *(_WORD *)(n3_1 + 5) ) /*0xffd221eb*/
          (*(void (__cdecl **)(int, _DWORD))(*(_DWORD *)(__return_address + 4) + 56))( /*0xffd221f9*/
            __return_address,
            *(unsigned __int16 *)(n3_1 + 5));
        v12 = *(_DWORD *)v21; /*0xffd22202*/
        v13 = n3a + 1; /*0xffd22206*/
        v15 = v26; /*0xffd2220c*/
        *a8 = v27; /*0xffd22210*/
        LOBYTE(n3a) = v13; /*0xffd22213*/
      }
      while ( v13 < (unsigned __int8)v12 ); /*0xffd22219*/
    }
  }
  return 0; /*0xffd22221*/
}

// Function: RmtSweepIterate @ 0xffd2222d (0xc2 bytes)
// Index: 2558/2560

char __cdecl RmtSweepIterate(
        int __return_address,
        int n4,
        int n2,
        int n3,
        int a5,
        int a6,
        _DWORD *a7,
        int a8,
        int n3_1,
        int a10,
        __int16 *a11,
        int a12)
{
  unsigned __int16 *v12; // esi
  unsigned __int8 v13; // bl
  int v14; // ecx
  int v15; // ebp
  unsigned __int16 v16; // ax
  __int16 v17; // ax
  __int16 v19[2]; // [esp+10h] [ebp-Ch] BYREF
  __int16 v20[2]; // [esp+14h] [ebp-8h] BYREF
  __int16 p_n3a[2]; // [esp+18h] [ebp-4h] BYREF

  v12 = (unsigned __int16 *)a11; /*0xffd22233*/
  v13 = 0; /*0xffd22237*/
  *(_DWORD *)p_n3a = 0; /*0xffd2223a*/
  if ( !*a11 ) /*0xffd2223e*/
    return 0; /*0xffd2223e*/
  RmtRangeDeltaCalc(__return_address, p_n3a, a11, (int)a7, *((_BYTE *)a7 + 37), v20, v19, (__int16 *)&a11); /*0xffd2226a*/
  v14 = *(_DWORD *)v20; /*0xffd2226f*/
  if ( !LOBYTE(v20[0]) ) /*0xffd22278*/
    return 0; /*0xffd222e1*/
  v15 = LOBYTE(v20[0]) - 1; /*0xffd2227d*/
  while ( 1 )
  {
    v16 = *v12; /*0xffd22283*/
    v17 = v13 == v15 ? v19[0] + v16 : (_WORD)a11 + v16;
    if ( IioTailFunc22EF( /*0xffd222cb*/
           __return_address,
           n4,
           n2,
           n3,
           a5,
           a6,
           a7,
           a8,
           n3_1,
           v12,
           v17,
           v14,
           *(int *)v19,
           (int)a11,
           a10,
           a12) )
    {
      break; /*0xffd222cb*/
    }
    v14 = *(_DWORD *)v20; /*0xffd222d7*/
    if ( ++v13 >= LOBYTE(v20[0]) ) /*0xffd222df*/
      return 0; /*0xffd222df*/
  }
  return 1; /*0xffd222e3*/
}

// Function: IioTailFunc22EF @ 0xffd222ef (0x57d bytes)
// Index: 2559/2560

char __cdecl IioTailFunc22EF(
        int __return_address,
        int n4,
        int n2,
        int n3,
        int a5,
        int a6,
        _DWORD *a7,
        int a8,
        int a9,
        unsigned __int16 *a10,
        __int16 a11,
        int a12,
        int a13,
        int a14,
        int a15,
        int a16)
{
  __int16 v17; // si
  int __return_address_1; // ebx
  int v19; // edi
  void (**v20)(int, unsigned int, const char *, ...); // esi
  const char *v21; // eax
  unsigned __int8 n2_3; // al
  bool v24; // zf
  unsigned __int8 n8_1; // dl
  int v26; // ecx
  unsigned __int8 v27; // al
  int v28; // ebx
  int v29; // ecx
  int v30; // edi
  int v31; // eax
  unsigned __int8 v32; // cl
  unsigned __int8 v33; // dl
  int v34; // edi
  __int16 v35; // ax
  unsigned __int16 v36; // ax
  int v37; // ecx
  __int16 v38; // ax
  __int16 v39; // ax
  int n4_1; // eax
  int v41; // [esp-1Ch] [ebp-7Ch]
  const char *v42; // [esp-18h] [ebp-78h]
  int v43; // [esp-14h] [ebp-74... [9804 chars total]

// Function: IioTailX_FFD2286C @ 0xffd2286c (0x390 bytes)
// Index: 2560/2560

char __cdecl IioTailX_FFD2286C(
        _DWORD *n4,
        int *a2,
        int *a3,
        char *a4,
        char *a5,
        int a6,
        int a7,
        int a8,
        int (__cdecl *sub_FFD1D998)(int, int, int, __int16),
        int a10,
        bool (__cdecl *IioTailX_FFD1E011)(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8),
        int a12,
        int a13,
        int *buf,
        char a15,
        int *n2,
        int a17)
{
  _DWORD *n4_1; // esi
  _BYTE *buf_1; // edi
  _BYTE *v20; // ebp
  char *v21; // ebx
  int v22; // eax
  _BYTE *v23; // edi
  char v24; // al
  char *v25; // ecx
  char v26; // al
  char v27; // al
  int v28; // ecx
  int v29; // eax
  int v30; // ecx
  void *buf_3; // eax
  int v32; // eax
  unsigned __int8 i; // [esp+Ch] [ebp-14h]
  char *v34; // [esp+10h] [ebp-10h]
  char *v35; // [esp+14h] [ebp-Ch]
  _BYTE *v36; // [esp+18h] [ebp-8h]
  _BYTE *buf_2; // [esp+1Ch] [ebp-4h]

  n4_1 = n4; /*0xffd22871*/
  buf_1 = (_BYTE *)(*(int (__cdecl **)(_DWORD *, int))(n4[1] + 40))(n4, 3543); /*0xffd22883*/
  buf_2 = buf_1; /*0xffd22889*/
  *n2 = (int)buf_1; /*0xffd2288f*/
  if ( !buf_1 ) /*0xffd22893*/
  {
    IioTailFunc6DEB( /*0xffd228a6*/
      (int)n4,
      1,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      2843,
      a17);
    return 1; /*0xffd228b0*/
  }
  IioTailFunc6DA4(buf_1, 0, 0xDD7u); /*0xffd228ba*/
  v20 = buf_1 + 1; /*0xffd228c3*/
  v21 = a4; /*0xffd228c6*/
  *buf_1 = a15; /*0xffd228ca*/
  *(_DWORD *)(buf_1 + 3507) = a6; /*0xffd228d0*/
  *(_DWORD *)(buf_1 + 3511) = a7; /*0xffd228da*/
  *(_DWORD *)(buf_1 + 3515) = a8; /*0xffd228e4*/
  *(_DWORD *)(buf_1 + 3519) = sub_FFD1D998; /*0xffd228ee*/
  *(_DWORD *)(buf_1 + 3523) = a10; /*0xffd228f8*/
  *(_DWORD *)(buf_1 + 3527) = IioTailX_FFD1E011; /*0xffd22902*/
  *(_DWORD *)(buf_1 + 3531) = a12; /*0xffd2290c*/
  *(_DWORD *)(buf_1 + 3535) = a13; /*0xffd22916*/
  *(_DWORD *)(buf_1 + 3539) = buf; /*0xffd22920*/
  v36 = buf_1 + 1; /*0xffd2292d*/
  v22 = (*(int (__cdecl **)(_DWORD *, _DWORD, _DWORD, _BYTE *))(n4[3] + 64))( /*0xffd22934*/
          n4,
          *(_DWORD *)a4,
          *((_DWORD *)a4 + 1),
          buf_1 + 1);
  if ( IioTailFunc6DC3( /*0xffd2294a*/
         (int)n4,
         v22,
         (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
         2875,
         a17) )
  {
    return 1; /*0xffd22954*/
  }
  IioTailX_FFD216A5((int)n4, (int)a2, (int)a3, (int)a4, (int)a5, (int)buf_1); /*0xffd2296d*/
  if ( a4[8] ) /*0xffd22975*/
  {
    LOBYTE(n4) = 0; /*0xffd22982*/
    v34 = a4 + 45; /*0xffd22987*/
    v23 = buf_1 + 1; /*0xffd2298b*/
    do /*0xffd22a9f*/
    {
      if ( (*v23 & 0x20) != 0 ) /*0xffd22999*/
        v24 = IioTailFunc7D9D((int)n4_1, (int)a2, (int)a3, a5, (unsigned __int8)n4); /*0xffd229a4*/
      else
        v24 = IioTailFunc7D83((int)n4_1, (int)a2, a5, (char)n4); /*0xffd229b3*/
      if ( v24 ) /*0xffd229bd*/
      {
        if ( IioTailX_FFD2000D(*((_DWORD *)v21 + 1)) || *((_DWORD *)v21 + 1) == 60 || *((_DWORD *)v21 + 1) == 61 ) /*0xffd229da*/
        {
          if ( *((_DWORD *)v21 + 1) == 40 || *((_DWORD *)v21 + 1) == 53 ) /*0xffd229e6*/
            (*(void (__cdecl **)(_DWORD *, _DWORD *, int))(n4_1[6] + 24))(n4_1, n4, 3); /*0xffd229f5*/
          else
            (*(void (__cdecl **)(_DWORD *, _DWORD *, int))(n4_1[6] + 24))(n4_1, n4, 5); /*0xffd229ea*/
        }
        if ( *((_DWORD *)v21 + 1) == 60 || *((_DWORD *)v21 + 1) == 61 ) /*0xffd22a05*/
        {
          v25 = v34; /*0xffd22a0b*/
          LOBYTE(n2) = 0; /*0xffd22a13*/
          v35 = v34; /*0xffd22a18*/
          do /*0xffd22a88*/
          {
            *v25 = 0; /*0xffd22a1c*/
            for ( i = 0; i < 3u; ++i ) /*0xffd22a1f*/
            {
              if ( (*v23 & 8) != 0 ) /*0xffd22a3e*/
                v26 = IioTailFunc7B25((int)n4_1, (int)a2, (int)a3, (int)a5, (unsigned __int8)n4, (unsigned __int8)n2, i); /*0xffd22a40*/
              else
                v26 = IioTailFunc7AC8((int)n4_1, (int)a2, (int)a3, (int)a5, (unsigned __int8)n4, (unsigned __int8)n2, i); /*0xffd22a47*/
              if ( v26 ) /*0xffd22a51*/
                (*(void (__cdecl **)(_DWORD *, _DWORD *, int *, unsigned __int8, int))(n4_1[6] + 20))( /*0xffd22a5f*/
                  n4_1,
                  n4,
                  n2,
                  i,
                  1);
            }
            v25 = v35 + 1; /*0xffd22a7d*/
            LOBYTE(n2) = (_BYTE)n2 + 1; /*0xffd22a7e*/
            ++v35; /*0xffd22a82*/
          }
          while ( (unsigned __int8)n2 < 2u ); /*0xffd22a88*/
          v21 = a4; /*0xffd22a8a*/
        }
      }
      v34 += 2; /*0xffd22a92*/
      LOBYTE(n4) = (_BYTE)n4 + 1; /*0xffd22a99*/
    }
    while ( (unsigned __int8)n4 < 4u ); /*0xffd22a9f*/
    buf_1 = buf_2; /*0xffd22aa5*/
    v20 = v36; /*0xffd22aa9*/
  }
  if ( !v21[43] )
  {
    LOBYTE(n4) = 0; /*0xffd22ab7*/
    while ( 1 )
    {
      v27 = (*v20 & 0x20) != 0
          ? IioTailFunc7D9D((int)n4_1, (int)a2, (int)a3, a5, (unsigned __int8)n4)
          : IioTailFunc7D83((int)n4_1, (int)a2, a5, (char)n4);
      if ( v27 ) /*0xffd22aed*/
      {
        v28 = 0; /*0xffd22aef*/
        if ( *(_DWORD *)v21 == 1 /*0xffd22b06*/
          && (*((_DWORD *)v21 + 1) == 40 || *((_DWORD *)v21 + 1) == 53 || *((_DWORD *)v21 + 1) == 44) )
        {
          v28 = 2 * *(_DWORD *)(v21 + 9); /*0xffd22b0b*/
        }
        v29 = (*(int (__cdecl **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int))(n4_1[3] + 68))( /*0xffd22b18*/
                n4_1,
                n4,
                *(_DWORD *)v21,
                *((_DWORD *)v21 + 1),
                v28);
        if ( IioTailFunc6DC3( /*0xffd22b2b*/
               (int)n4_1,
               v29,
               (int)"e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
               3014,
               a17) )
        {
          return 1; /*0xffd22b35*/
        }
      }
      LOBYTE(n4) = (_BYTE)n4 + 1; /*0xffd22b41*/
      if ( (unsigned __int8)n4 >= 4u ) /*0xffd22b47*/
        break; /*0xffd22b47*/
      v20 = buf_1 + 1; /*0xffd22b49*/
    }
  }
  if ( IioTailX_FFD2174B((int)n4_1, (int)a2, (int)a3, (int)v21, a5, (int)buf_1, a17) ) /*0xffd22b64*/
    return 1; /*0xffd22bf0*/
  v30 = (*(__int16 *)(buf_1 + 13) - *(__int16 *)(buf_1 + 11)) / (unsigned __int8)v21[13] + 1; /*0xffd22b81*/
  *(_DWORD *)(buf_1 + 3491) = v30; /*0xffd22b84*/
  buf_3 = (void *)(*(int (__cdecl **)(_DWORD *, int))(n4_1[1] + 40))(n4_1, v30); /*0xffd22b8f*/
  *(_DWORD *)(buf_1 + 3495) = buf_3; /*0xffd22b92*/
  if ( !buf_3 ) /*0xffd22b9c*/
  {
    IioTailFunc6DEB( /*0xffd22ba7*/
      (int)n4_1,
      1,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      3042,
      a17);
    return 1; /*0xffd22ba7*/
  }
  IioTailFunc6DA4(buf_3, 0, *(_DWORD *)(buf_1 + 3491)); /*0xffd22bb2*/
  *(_DWORD *)(buf_1 + 3499) = 24; /*0xffd22bba*/
  v32 = (*(int (__cdecl **)(_DWORD *, int))(n4_1[1] + 40))(n4_1, 24); /*0xffd22bc5*/
  *(_DWORD *)(buf_1 + 3503) = v32; /*0xffd22bcb*/
  if ( !v32 ) /*0xffd22bd3*/
  {
    IioTailFunc6DEB( /*0xffd22be6*/
      (int)n4_1,
      1,
      "e:\\hs\\PurleySktPkg\\Library\\MemoryEvContent\\RMT\\externals\\MemShmoo\\MemShmoo.c",
      3074,
      a17);
    return 1; /*0xffd22be6*/
  }
  return 0; /*0xffd22bf5*/
}