Newer
Older
AMI-Aptio-BIOS-Reversed / AmiModulePkg / NVRAM / NvramPei / decompiled / 0xffe4e633.json
@Ajax Dong Ajax Dong 2 days ago 4 KB Restructure the repo
{"jsonrpc": "2.0", "result": {"content": [{"type": "text", "text": "{\"addr\":\"0xffe4e633\",\"code\":\"int __fastcall sub_FFE4E633(int a1, unsigned __int8 *a2, unsigned int *a3, int a4, int a5)\\n{\\n  unsigned __int8 *v6; // ebx\\n  unsigned __int8 *v7; // edi\\n  _BYTE *v8; // esi\\n  int v9; // ecx\\n  int v11; // eax\\n  unsigned int v13; // esi\\n  bool v14; // cc\\n  int v15; // eax\\n  __int16 v16; // cx\\n  int v17; // edi\\n  __int16 v18; // ax\\n  int v19; // [esp+10h] [ebp-4h]\\n\\n  v6 = a2; /*0xffe4e638*/\\n  if ( !a1 || !a3 || !a2 || !a4 ) /*0xffe4e65c*/\\n    return -2147483646; /*0xffe4e740*/\\n  v7 = (unsigned __int8 *)(a1 + ((*(_DWORD *)(a1 + 6) & 0x4000000) != 0 ? 26 : 11));\\n  v8 = v7; /*0xffe4e67a*/\\n  v9 = a1 - (_DWORD)v7 + (unsigned __int16)sub_FFE4F4EC(a1 + 4); /*0xffe4e688*/\\n  if ( (*(_DWORD *)(a1 + 6) & 0x2000000) != 0 ) /*0xffe4e691*/\\n  {\\n    do /*0xffe4e69f*/\\n    {\\n      if ( !*v8++ ) /*0xffe4e693*/\\n        break; /*0xffe4e698*/\\n      v11 = v9--; /*0xffe4e69a*/\\n    }\\n    while ( v11 > 0 ); /*0xffe4e69f*/\\n    if ( v9 <= 0 ) /*0xffe4e6a3*/\\n      return -2147483638; /*0xffe4e6aa*/\\n    v13 = 2 * (v8 - v7); /*0xffe4e6b1*/\\n  }\\n  else\\n  {\\n    while ( *v8 || v8[1] ) /*0xffe4e6be*/\\n    {\\n      if ( v9 <= 0 ) /*0xffe4e6c2*/\\n        return -2147483638; /*0xffe4e6c2*/\\n      v8 += 2; /*0xffe4e6c4*/\\n      v9 -= 2; /*0xffe4e6c7*/\\n    }\\n    if ( v9 <= 0 ) /*0xffe4e6ce*/\\n      return -2147483638; /*0xffe4e6ce*/\\n    v13 = v8 - v7 + 2; /*0xffe4e6d2*/\\n  }\\n  v14 = v13 <= *a3; /*0xffe4e6d9*/\\n  *a3 = v13; /*0xffe4e6db*/\\n  if ( !v14 ) /*0xffe4e6dd*/\\n    return -2147483643; /*0xffe4e6df*/\\n  v15 = sub_FFE4DFDF(a1, a5); /*0xffe4e6ee*/\\n  v19 = v15; /*0xffe4e6fa*/\\n  if ( (*(_DWORD *)(a1 + 6) & 0x2000000) != 0 ) /*0xffe4e6fe*/\\n  {\\n    do /*0xffe4e70d*/\\n    {\\n      v16 = *v7++; /*0xffe4e700*/\\n      *(_WORD *)v6 = v16; /*0xffe4e704*/\\n      v6 += 2; /*0xffe4e707*/\\n    }\\n    while ( v16 ); /*0xffe4e70d*/\\n  }\\n  else\\n  {\\n    v17 = v7 - v6; /*0xffe4e711*/\\n    do /*0xffe4e724*/\\n    {\\n      v18 = sub_FFE4F4EC(&v6[v17]); /*0xffe4e716*/\\n      *(_WORD *)v6 = v18; /*0xffe4e71b*/\\n      v6 += 2; /*0xffe4e71e*/\\n    }\\n    while ( v18 ); /*0xffe4e724*/\\n    v15 = v19; /*0xffe4e726*/\\n  }\\n  sub_FFE50054(a4, v15, 16); /*0xffe4e731*/\\n  *(_DWORD *)(a5 + 24) = a1; /*0xffe4e739*/\\n  return 0; /*0xffe4e745*/\\n}\",\"refs\":[{\"addr\":\"0xffe4f4ec\",\"name\":\"sub_FFE4F4EC\"},{\"addr\":\"0xffe4dfdf\",\"name\":\"sub_FFE4DFDF\"},{\"addr\":\"0xffe50054\",\"name\":\"sub_FFE50054\"}]}"}], "structuredContent": {"addr": "0xffe4e633", "code": "int __fastcall sub_FFE4E633(int a1, unsigned __int8 *a2, unsigned int *a3, int a4, int a5)\n{\n  unsigned __int8 *v6; // ebx\n  unsigned __int8 *v7; // edi\n  _BYTE *v8; // esi\n  int v9; // ecx\n  int v11; // eax\n  unsigned int v13; // esi\n  bool v14; // cc\n  int v15; // eax\n  __int16 v16; // cx\n  int v17; // edi\n  __int16 v18; // ax\n  int v19; // [esp+10h] [ebp-4h]\n\n  v6 = a2; /*0xffe4e638*/\n  if ( !a1 || !a3 || !a2 || !a4 ) /*0xffe4e65c*/\n    return -2147483646; /*0xffe4e740*/\n  v7 = (unsigned __int8 *)(a1 + ((*(_DWORD *)(a1 + 6) & 0x4000000) != 0 ? 26 : 11));\n  v8 = v7; /*0xffe4e67a*/\n  v9 = a1 - (_DWORD)v7 + (unsigned __int16)sub_FFE4F4EC(a1 + 4); /*0xffe4e688*/\n  if ( (*(_DWORD *)(a1 + 6) & 0x2000000) != 0 ) /*0xffe4e691*/\n  {\n    do /*0xffe4e69f*/\n    {\n      if ( !*v8++ ) /*0xffe4e693*/\n        break; /*0xffe4e698*/\n      v11 = v9--; /*0xffe4e69a*/\n    }\n    while ( v11 > 0 ); /*0xffe4e69f*/\n    if ( v9 <= 0 ) /*0xffe4e6a3*/\n      return -2147483638; /*0xffe4e6aa*/\n    v13 = 2 * (v8 - v7); /*0xffe4e6b1*/\n  }\n  else\n  {\n    while ( *v8 || v8[1] ) /*0xffe4e6be*/\n    {\n      if ( v9 <= 0 ) /*0xffe4e6c2*/\n        return -2147483638; /*0xffe4e6c2*/\n      v8 += 2; /*0xffe4e6c4*/\n      v9 -= 2; /*0xffe4e6c7*/\n    }\n    if ( v9 <= 0 ) /*0xffe4e6ce*/\n      return -2147483638; /*0xffe4e6ce*/\n    v13 = v8 - v7 + 2; /*0xffe4e6d2*/\n  }\n  v14 = v13 <= *a3; /*0xffe4e6d9*/\n  *a3 = v13; /*0xffe4e6db*/\n  if ( !v14 ) /*0xffe4e6dd*/\n    return -2147483643; /*0xffe4e6df*/\n  v15 = sub_FFE4DFDF(a1, a5); /*0xffe4e6ee*/\n  v19 = v15; /*0xffe4e6fa*/\n  if ( (*(_DWORD *)(a1 + 6) & 0x2000000) != 0 ) /*0xffe4e6fe*/\n  {\n    do /*0xffe4e70d*/\n    {\n      v16 = *v7++; /*0xffe4e700*/\n      *(_WORD *)v6 = v16; /*0xffe4e704*/\n      v6 += 2; /*0xffe4e707*/\n    }\n    while ( v16 ); /*0xffe4e70d*/\n  }\n  else\n  {\n    v17 = v7 - v6; /*0xffe4e711*/\n    do /*0xffe4e724*/\n    {\n      v18 = sub_FFE4F4EC(&v6[v17]); /*0xffe4e716*/\n      *(_WORD *)v6 = v18; /*0xffe4e71b*/\n      v6 += 2; /*0xffe4e71e*/\n    }\n    while ( v18 ); /*0xffe4e724*/\n    v15 = v19; /*0xffe4e726*/\n  }\n  sub_FFE50054(a4, v15, 16); /*0xffe4e731*/\n  *(_DWORD *)(a5 + 24) = a1; /*0xffe4e739*/\n  return 0; /*0xffe4e745*/\n}", "refs": [{"addr": "0xffe4f4ec", "name": "sub_FFE4F4EC"}, {"addr": "0xffe4dfdf", "name": "sub_FFE4DFDF"}, {"addr": "0xffe50054", "name": "sub_FFE50054"}]}, "isError": false}, "id": 1}