Newer
Older
AMI-Aptio-BIOS-Reversed / SiInitPreMem / decompiled / ffd83019.c
@Ajax Dong Ajax Dong 2 days ago 3 KB Init
// 0xffd83019
{"addr":"0xffd83019","code":"int sub_FFD83019()\n{\n  int result; // eax\n  int v1; // eax\n  int v2; // esi\n  int v3; // eax\n  int *v4; // eax\n  int *v5; // esi\n  int v6; // ecx\n  int v7; // eax\n  int v8; // esi\n  int v9; // eax\n  _DWORD v10[2]; // [esp+0h] [ebp-10h] BYREF\n  char v11[8]; // [esp+8h] [ebp-8h] BYREF\n\n  result = sub_FFD8D59A(); /*0xffd8301c*/\n  if ( (_BYTE)result )\n  {\n    sub_FFD7F9AF(0x80000000, (int)\"\\nDirtyWarmResetExecute() - Start\\n\"); /*0xffd83037*/\n    v1 = sub_FFD85F37(); /*0xffd8303c*/\n    v2 = sub_FFD8D921(v1); /*0xffd83048*/\n    if ( sub_FFD82F2B(v2, 2u, (unsigned __int16 *)v11) )\n    {\n      *(_DWORD *)(v2 + 24) = *(_DWORD *)(v2 + 24) & 0xFF0000FF | 0x20200; /*0xffd83083*/\n      v3 = sub_FFD8CBBA(2u, 0, 0); /*0xffd83086*/\n      sub_FFD8CCD3(v3, 0); /*0xffd83090*/\n    }\n    else\n    {\n      sub_FFD7F9AF(0x80000000, (int)\"ERROR: DirtyWarmReset: can't get end point device available...\\n\");\n    }\n    v4 = (int *)sub_FFD8CC10(); /*0xffd83099*/\n    v5 = v4; /*0xffd8309e*/\n    v6 = *v4; /*0xffd830a8*/\n    if ( (*v4 & 0x2000000) != 0 && v6 != -1 ) /*0xffd830b5*/\n      *v4 = v6 | 0x4000000; /*0xffd830b9*/\n    sub_FFD7F9AF(64, (int)\"DWR: Sending DirtyWarmReset Notification ...\\n\");\n    sub_FFD7F948(&unk_FFD93FB4); /*0xffd830cc*/\n    sub_FFD7F9AF(64, (int)\"DWR: DirtyWarmReset Notification completed\\n\");\n    if ( (*v5 & 0x2000000) != 0 && *v5 != -1 )\n    {\n      sub_FFD7F9AF(64, (int)\"\\nDWR: Stalling in DWR flow to allow error collection.\\n\");\n      while ( (*v5 & 0x4000000) != 0 ) /*0xffd83100*/\n        ; /*0xffd830fc*/\n    }\n    v7 = sub_FFD8AD54(); /*0xffd83102*/\n    v8 = (*(int (__cdecl **)(int, void *, _DWORD, _DWORD, _DWORD *))(*(_DWORD *)v7 + 32))(v7, &unk_FFD97FAC, 0, 0, v10); /*0xffd8311c*/\n    if ( v8 < 0 )\n    {\n      sub_FFD7F9AF(0x80000000, (int)\"\\nDWR: ERROR: Can't get reset PPI\\n\");\n      sub_FFD7F9AF(0x80000000, (int)\"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v8); /*0xffd83142*/\n      v9 = sub_FFD7F97E(); /*0xffd8314a*/\n      if ( v9 ) /*0xffd83151*/\n        (*(void (__cdecl **)(const char *, int, const char *))(v9 + 4))( /*0xffd83162*/\n          \"e:\\\\hs\\\\PurleySktPkg\\\\SouthClusterLbg\\\\LibraryPrivate\\\\PeiPchInitLib\\\\PchRootPorts.c\",\n          1104,\n          \"!EFI_ERROR (Status)\");\n    }\n    else\n    {\n      (*(void (__cdecl **)(_DWORD, int))v10[0])(v10[0], 5); /*0xffd8312a*/\n    }\n    sub_FFD7F9AF(0x80000000, (int)\"\\nDWR: Waiting for reset.\\n\");\n    v10[1] = 0; /*0xffd83175*/\n    while ( 1 ) /*0xffd83179*/\n      ; /*0xffd83179*/\n  }\n  return result; /*0xffd83182*/\n}","refs":[{"addr":"0xffd8d59a","name":"sub_FFD8D59A"},{"addr":"0xffd7f9af","name":"sub_FFD7F9AF"},{"addr":"0xffd85f37","name":"sub_FFD85F37"},{"addr":"0xffd8d921","name":"sub_FFD8D921"},{"addr":"0xffd8cbba","name":"sub_FFD8CBBA"},{"addr":"0xffd8ccd3","name":"sub_FFD8CCD3"},{"addr":"0xffd82f2b","name":"sub_FFD82F2B"},{"addr":"0xffd8cc10","name":"sub_FFD8CC10"},{"addr":"0xffd7f948","name":"sub_FFD7F948"},{"addr":"0xffd93fb4","name":"unk_FFD93FB4"},{"addr":"0xffd8ad54","name":"sub_FFD8AD54"},{"addr":"0xffd97fac","name":"unk_FFD97FAC"},{"addr":"0xffd93418","name":"aDwrErrorCanTGe","string":"\nDWR: ERROR: Can't get reset PPI\n"},{"addr":"0xffd9192c","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffd7f97e","name":"sub_FFD7F97E"},{"addr":"0xffd9318c","name":"aEHsPurleysktpk_5","string":"e:\\hs\\PurleySktPkg\\SouthClusterLbg\\LibraryPrivate\\PeiPchInitLib\\PchRootPorts.c"},{"addr":"0xffd91950","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"},{"addr":"0xffd9343c","name":"aDwrWaitingForR","string":"\nDWR: Waiting for reset.\n"}]}