Newer
Older
AMI-Aptio-BIOS-Reversed / PurleySktPkg / SouthClusterLbg / SiInit / Pei / SiInitPreMem / decompiled / ffd86e4d.c
@Ajax Dong Ajax Dong 2 days ago 3 KB Restructure the repo
// 0xffd86e4d
{"addr":"0xffd86e4d","code":"int __usercall sub_FFD86E37@<eax>(int a1@<edx>, int a2@<ecx>, int a3, int a4, int a5, int a6, int a7, ...)\n{\n  int v7; // ebx\n  unsigned int n8_3; // esi\n  unsigned int v9; // edi\n  unsigned __int8 *v10; // ebx\n  unsigned __int8 n8; // al\n  int n8_4; // ebp\n  int v13; // eax\n  unsigned int n8_1; // ecx\n  _DWORD *v15; // edx\n  int v16; // eax\n  unsigned int v17; // edi\n  unsigned __int8 *v18; // ebp\n  unsigned __int8 n8_2; // al\n  int n8_5; // ebx\n  int v21; // eax\n  _DWORD *v22; // ecx\n  int result; // eax\n  unsigned int retaddr; // [esp+5Ch] [ebp+0h]\n  int v27; // [esp+74h] [ebp+18h] BYREF\n  va_list va; // [esp+74h] [ebp+18h]\n  int v29; // [esp+78h] [ebp+1Ch]\n  int v30; // [esp+7Ch] [ebp+20h]\n  int v31; // [esp+80h] [ebp+24h]\n  int v32; // [esp+84h] [ebp+28h]\n  int v33; // [esp+88h] [ebp+2Ch]\n  int v34; // [esp+8Ch] [ebp+30h]\n  int v35; // [esp+90h] [ebp+34h]\n  va_list va1; // [esp+94h] [ebp+38h] BYREF\n\n  va_start(va1, a7);\n  va_start(va, a7);\n  v27 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v29 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v30 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v31 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v32 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v33 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v34 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v35 = va_arg(va1, _DWORD); /*0xffd86e37*/\n  v7 = a2; /*0xffd86e3e*/\n  sub_FFD8D4C8(va1, retaddr); /*0xffd86e4f*/\n  sub_FFD8D4C8((int *)va, retaddr); /*0xffd86e5b*/\n  sub_FFD8BF54(); /*0xffd86e60*/\n  n8_3 = 0; /*0xffd86e65*/\n  v9 = 0; /*0xffd86e67*/\n  if ( (unsigned __int8)sub_FFD8C051() ) /*0xffd86e69*/\n  {\n    v10 = (unsigned __int8 *)(v7 + 264); /*0xffd86e72*/\n    do /*0xffd86ebd*/\n    {\n      n8 = *v10; /*0xffd86e78*/\n      if ( *v10 != 8 ) /*0xffd86e7c*/\n      {\n        n8_4 = n8; /*0xffd86e7e*/\n        if ( n8 >= 8u ) /*0xffd86e84*/\n        {\n          v13 = sub_FFD7F97E(); /*0xffd86e86*/\n          if ( v13 ) /*0xffd86e8d*/\n            (*(void (**)(void))(v13 + 4))(); /*0xffd86e9e*/\n        }\n        *((int *)va + n8_4) |= 1 << v9; /*0xffd86eab*/\n      }\n      ++v9; /*0xffd86eaf*/\n      v10 += 16; /*0xffd86eb0*/\n    }\n    while ( v9 < (unsigned __int8)sub_FFD8C051() ); /*0xffd86ebd*/\n    v7 = a2; /*0xffd86ebf*/\n  }\n  n8_1 = 0; /*0xffd86ec7*/\n  v15 = (_DWORD *)(a1 + 208); /*0xffd86ec9*/\n  do /*0xffd86edc*/\n  {\n    v16 = *((int *)va + n8_1++); /*0xffd86ecf*/\n    *v15++ = v16; /*0xffd86ed4*/\n  }\n  while ( n8_1 < 8 ); /*0xffd86edc*/\n  v17 = 0; /*0xffd86ede*/\n  v18 = (unsigned __int8 *)(v7 + 8); /*0xffd86ee0*/\n  while ( (unsigned int)(sub_FFD8BE68() - 1) <= 1 && v17 < retaddr ) /*0xffd86efb*/\n  {\n    n8_2 = *v18; /*0xffd86efd*/\n    if ( *v18 != 8 ) /*0xffd86f02*/\n    {\n      n8_5 = n8_2; /*0xffd86f04*/\n      if ( n8_2 >= 8u ) /*0xffd86f0a*/\n      {\n        v21 = sub_FFD7F97E(); /*0xffd86f0c*/\n        if ( v21 ) /*0xffd86f13*/\n          (*(void (**)(void))(v21 + 4))(); /*0xffd86f24*/\n      }\n      va1[n8_5] = (void *)((unsigned int)va1[n8_5] | (1 << v17)); /*0xffd86f31*/\n    }\n    ++v17; /*0xffd86f35*/\n    v18 += 16; /*0xffd86f36*/\n  }\n  v22 = (_DWORD *)(a1 + 176); /*0xffd86f3f*/\n  do /*0xffd86f52*/\n  {\n    result = (int)va1[n8_3++]; /*0xffd86f45*/\n    *v22++ = result; /*0xffd86f4a*/\n  }\n  while ( n8_3 < 8 ); /*0xffd86f52*/\n  return result; /*0xffd86f54*/\n}","refs":[{"addr":"0xffd8d4c8","name":"sub_FFD8D4C8"},{"addr":"0xffd8bf54","name":"sub_FFD8BF54"},{"addr":"0xffd7f97e","name":"sub_FFD7F97E"},{"addr":"0xffd8c051","name":"sub_FFD8C051"},{"addr":"0xffd8be68","name":"sub_FFD8BE68"}]}