Newer
Older
AMI-Aptio-BIOS-Reversed / NvramPei / decompiled / 0xffe4e93b.json
@Ajax Dong Ajax Dong 2 days ago 8 KB Init
{"jsonrpc": "2.0", "result": {"content": [{"type": "text", "text": "{\"addr\":\"0xffe4e93b\",\"code\":\"int __fastcall sub_FFE4E93B(unsigned int *a1, unsigned __int8 *a2, int a3, unsigned int a4, int a5, unsigned int *a6)\\n{\\n  unsigned int *v6; // edi\\n  unsigned int v7; // esi\\n  int v8; // ebx\\n  int v9; // eax\\n  int v10; // eax\\n  unsigned int v11; // ecx\\n  int v12; // ebx\\n  int i; // eax\\n  int i_2; // eax\\n  int v15; // eax\\n  int v17; // [esp+Ch] [ebp-20h]\\n  int v19; // [esp+14h] [ebp-18h]\\n  unsigned int v20; // [esp+18h] [ebp-14h]\\n  int i_1; // [esp+1Ch] [ebp-10h]\\n  int v23; // [esp+24h] [ebp-8h]\\n  int v24; // [esp+28h] [ebp-4h] BYREF\\n\\n  if ( !a1 || !a2 || !a3 ) /*0xffe4e962*/\\n    return -2147483646; /*0xffe4ead1*/\\n  v6 = a6; /*0xffe4e96b*/\\n  v17 = *(unsigned __int16 *)a2; /*0xffe4e970*/\\n  if ( a6 ) /*0xffe4e975*/\\n  {\\n    if ( !*(_WORD *)a2 ) /*0xffe4e968*/\\n      *a6 = 0; /*0xffe4e97c*/\\n    v7 = *a6; /*0xffe4e97f*/\\n  }\\n  else\\n  {\\n    v7 = 0; /*0xffe4e983*/\\n  }\\n  if ( v7 < a4 ) /*0xffe4e988*/\\n  {\\n    while ( 1 ) /*0xffe4e99f*/\\n    {\\n      v23 = a5 + 40 * v7; /*0xffe4e99f*/\\n      v8 = sub_FFE4E789(v23, &v24, &v24); /*0xffe4e9a7*/\\n      v19 = v8; /*0xffe4e9ac*/\\n      if ( v8 >= 0 ) /*0xffe4e9b1*/\\n      {\\n        v9 = a5 + 40 * v7; /*0xffe4e9b7*/\\n        if ( (*(_BYTE *)(v23 + 28) & 4) != 0 ) /*0xffe4e9be*/\\n        {\\n          v10 = v24; /*0xffe4e9c4*/\\n          if ( !v24 ) /*0xffe4e9c9*/\\n            goto LABEL_26; /*0xffe4e9c9*/\\n          do /*0xffe4ea2f*/\\n          {\\n            v11 = 0; /*0xffe4e9ce*/\\n            v20 = 0; /*0xffe4e9d0*/\\n            if ( v7 ) /*0xffe4e9d5*/\\n            {\\n              v12 = a5; /*0xffe4e9d7*/\\n              do /*0xffe4ea18*/\\n              {\\n                for ( i = sub_FFE4E28C(v12); ; i = sub_FFE4E205(i_1, v12) ) /*0xffe4e9dc*/\\n                {\\n                  i_1 = i; /*0xffe4e9ff*/\\n                  if ( !i ) /*0xffe4ea04*/\\n                  {\\n                    i_2 = 0; /*0xffe4ea06*/\\n                    goto LABEL_20; /*0xffe4ea06*/\\n                  }\\n                  if ( (unsigned __int8)sub_FFE4E2C3(i, v12) ) /*0xffe4e9ea*/\\n                    break; /*0xffe4e9ea*/\\n                }\\n                i_2 = i_1; /*0xffe4ea49*/\\nLABEL_20:\\n                v11 = v20; /*0xffe4ea08*/\\n                if ( i_2 ) /*0xffe4ea0d*/\\n                  break; /*0xffe4ea0d*/\\n                v11 = v20 + 1; /*0xffe4ea0f*/\\n                v12 += 40; /*0xffe4ea10*/\\n                v20 = v11; /*0xffe4ea13*/\\n              }\\n              while ( v11 < v7 ); /*0xffe4ea18*/\\n              v10 = v24; /*0xffe4ea1a*/\\n            }\\n            if ( v11 == v7 ) /*0xffe4ea1f*/\\n              break; /*0xffe4ea1f*/\\n            v10 = sub_FFE4E205(v10, v23); /*0xffe4ea25*/\\n            v24 = v10; /*0xffe4ea2a*/\\n          }\\n          while ( v10 ); /*0xffe4ea2f*/\\n          v6 = a6; /*0xffe4ea31*/\\n          v8 = v19; /*0xffe4ea34*/\\n          if ( v10 ) /*0xffe4ea39*/\\n          {\\n            v9 = a5 + 40 * v7; /*0xffe4ea4e*/\\n          }\\n          else\\n          {\\nLABEL_26:\\n            v9 = a5 + 40 * v7; /*0xffe4ea3b*/\\n            v8 = -2147483634; /*0xffe4ea3e*/\\n            *(_DWORD *)(v23 + 24) = 0; /*0xffe4ea43*/\\n          }\\n        }\\n        if ( v8 >= 0 ) /*0xffe4ea53*/\\n        {\\n          v15 = sub_FFE4E74B(v24, a2, a1, a3, v9); /*0xffe4ea63*/\\n          v8 = v15; /*0xffe4ea68*/\\n          if ( v15 != -2147483634 ) /*0xffe4ea73*/\\n          {\\n            if ( v15 < 0 ) /*0xffe4eab0*/\\n              *(_WORD *)a2 = v17; /*0xffe4eab8*/\\n            if ( v6 ) /*0xffe4eabd*/\\n              *v6 = v7; /*0xffe4eabf*/\\n            return v8; /*0xffe4eabf*/\\n          }\\n          *(_DWORD *)(v23 + 24) = 0; /*0xffe4ea78*/\\n        }\\n      }\\n      if ( v8 == -2147483634 ) /*0xffe4ea82*/\\n      {\\n        *(_WORD *)a2 = 0; /*0xffe4ea89*/\\n      }\\n      else if ( v6 && v7 && v7 == *v6 ) /*0xffe4ea98*/\\n      {\\n        v7 = -1; /*0xffe4ea9a*/\\n        *v6 = 0; /*0xffe4ea9d*/\\n      }\\n      if ( ++v7 >= a4 ) /*0xffe4eaa4*/\\n        goto LABEL_46; /*0xffe4eaa4*/\\n    }\\n  }\\n  v8 = v17; /*0xffe4eac5*/\\nLABEL_46:\\n  if ( v6 ) /*0xffe4eaca*/\\n    *v6 = 0; /*0xffe4eacc*/\\n  return v8; /*0xffe4ead6*/\\n}\",\"refs\":[{\"addr\":\"0xffe4e789\",\"name\":\"sub_FFE4E789\"},{\"addr\":\"0xffe4e28c\",\"name\":\"sub_FFE4E28C\"},{\"addr\":\"0xffe4e205\",\"name\":\"sub_FFE4E205\"},{\"addr\":\"0xffe4e2c3\",\"name\":\"sub_FFE4E2C3\"},{\"addr\":\"0xffe4e74b\",\"name\":\"sub_FFE4E74B\"}]}"}], "structuredContent": {"addr": "0xffe4e93b", "code": "int __fastcall sub_FFE4E93B(unsigned int *a1, unsigned __int8 *a2, int a3, unsigned int a4, int a5, unsigned int *a6)\n{\n  unsigned int *v6; // edi\n  unsigned int v7; // esi\n  int v8; // ebx\n  int v9; // eax\n  int v10; // eax\n  unsigned int v11; // ecx\n  int v12; // ebx\n  int i; // eax\n  int i_2; // eax\n  int v15; // eax\n  int v17; // [esp+Ch] [ebp-20h]\n  int v19; // [esp+14h] [ebp-18h]\n  unsigned int v20; // [esp+18h] [ebp-14h]\n  int i_1; // [esp+1Ch] [ebp-10h]\n  int v23; // [esp+24h] [ebp-8h]\n  int v24; // [esp+28h] [ebp-4h] BYREF\n\n  if ( !a1 || !a2 || !a3 ) /*0xffe4e962*/\n    return -2147483646; /*0xffe4ead1*/\n  v6 = a6; /*0xffe4e96b*/\n  v17 = *(unsigned __int16 *)a2; /*0xffe4e970*/\n  if ( a6 ) /*0xffe4e975*/\n  {\n    if ( !*(_WORD *)a2 ) /*0xffe4e968*/\n      *a6 = 0; /*0xffe4e97c*/\n    v7 = *a6; /*0xffe4e97f*/\n  }\n  else\n  {\n    v7 = 0; /*0xffe4e983*/\n  }\n  if ( v7 < a4 ) /*0xffe4e988*/\n  {\n    while ( 1 ) /*0xffe4e99f*/\n    {\n      v23 = a5 + 40 * v7; /*0xffe4e99f*/\n      v8 = sub_FFE4E789(v23, &v24, &v24); /*0xffe4e9a7*/\n      v19 = v8; /*0xffe4e9ac*/\n      if ( v8 >= 0 ) /*0xffe4e9b1*/\n      {\n        v9 = a5 + 40 * v7; /*0xffe4e9b7*/\n        if ( (*(_BYTE *)(v23 + 28) & 4) != 0 ) /*0xffe4e9be*/\n        {\n          v10 = v24; /*0xffe4e9c4*/\n          if ( !v24 ) /*0xffe4e9c9*/\n            goto LABEL_26; /*0xffe4e9c9*/\n          do /*0xffe4ea2f*/\n          {\n            v11 = 0; /*0xffe4e9ce*/\n            v20 = 0; /*0xffe4e9d0*/\n            if ( v7 ) /*0xffe4e9d5*/\n            {\n              v12 = a5; /*0xffe4e9d7*/\n              do /*0xffe4ea18*/\n              {\n                for ( i = sub_FFE4E28C(v12); ; i = sub_FFE4E205(i_1, v12) ) /*0xffe4e9dc*/\n                {\n                  i_1 = i; /*0xffe4e9ff*/\n                  if ( !i ) /*0xffe4ea04*/\n                  {\n                    i_2 = 0; /*0xffe4ea06*/\n                    goto LABEL_20; /*0xffe4ea06*/\n                  }\n                  if ( (unsigned __int8)sub_FFE4E2C3(i, v12) ) /*0xffe4e9ea*/\n                    break; /*0xffe4e9ea*/\n                }\n                i_2 = i_1; /*0xffe4ea49*/\nLABEL_20:\n                v11 = v20; /*0xffe4ea08*/\n                if ( i_2 ) /*0xffe4ea0d*/\n                  break; /*0xffe4ea0d*/\n                v11 = v20 + 1; /*0xffe4ea0f*/\n                v12 += 40; /*0xffe4ea10*/\n                v20 = v11; /*0xffe4ea13*/\n              }\n              while ( v11 < v7 ); /*0xffe4ea18*/\n              v10 = v24; /*0xffe4ea1a*/\n            }\n            if ( v11 == v7 ) /*0xffe4ea1f*/\n              break; /*0xffe4ea1f*/\n            v10 = sub_FFE4E205(v10, v23); /*0xffe4ea25*/\n            v24 = v10; /*0xffe4ea2a*/\n          }\n          while ( v10 ); /*0xffe4ea2f*/\n          v6 = a6; /*0xffe4ea31*/\n          v8 = v19; /*0xffe4ea34*/\n          if ( v10 ) /*0xffe4ea39*/\n          {\n            v9 = a5 + 40 * v7; /*0xffe4ea4e*/\n          }\n          else\n          {\nLABEL_26:\n            v9 = a5 + 40 * v7; /*0xffe4ea3b*/\n            v8 = -2147483634; /*0xffe4ea3e*/\n            *(_DWORD *)(v23 + 24) = 0; /*0xffe4ea43*/\n          }\n        }\n        if ( v8 >= 0 ) /*0xffe4ea53*/\n        {\n          v15 = sub_FFE4E74B(v24, a2, a1, a3, v9); /*0xffe4ea63*/\n          v8 = v15; /*0xffe4ea68*/\n          if ( v15 != -2147483634 ) /*0xffe4ea73*/\n          {\n            if ( v15 < 0 ) /*0xffe4eab0*/\n              *(_WORD *)a2 = v17; /*0xffe4eab8*/\n            if ( v6 ) /*0xffe4eabd*/\n              *v6 = v7; /*0xffe4eabf*/\n            return v8; /*0xffe4eabf*/\n          }\n          *(_DWORD *)(v23 + 24) = 0; /*0xffe4ea78*/\n        }\n      }\n      if ( v8 == -2147483634 ) /*0xffe4ea82*/\n      {\n        *(_WORD *)a2 = 0; /*0xffe4ea89*/\n      }\n      else if ( v6 && v7 && v7 == *v6 ) /*0xffe4ea98*/\n      {\n        v7 = -1; /*0xffe4ea9a*/\n        *v6 = 0; /*0xffe4ea9d*/\n      }\n      if ( ++v7 >= a4 ) /*0xffe4eaa4*/\n        goto LABEL_46; /*0xffe4eaa4*/\n    }\n  }\n  v8 = v17; /*0xffe4eac5*/\nLABEL_46:\n  if ( v6 ) /*0xffe4eaca*/\n    *v6 = 0; /*0xffe4eacc*/\n  return v8; /*0xffe4ead6*/\n}", "refs": [{"addr": "0xffe4e789", "name": "sub_FFE4E789"}, {"addr": "0xffe4e28c", "name": "sub_FFE4E28C"}, {"addr": "0xffe4e205", "name": "sub_FFE4E205"}, {"addr": "0xffe4e2c3", "name": "sub_FFE4E2C3"}, {"addr": "0xffe4e74b", "name": "sub_FFE4E74B"}]}, "isError": false}, "id": 1}