// 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"}]}