Newer
Older
AMI-Aptio-BIOS-Reversed / PurleySktPkg / SouthClusterLbg / SiInit / Pei / SiInitPreMem / decompiled / ffd87eed.c
@Ajax Dong Ajax Dong 2 days ago 3 KB Restructure the repo
// 0xffd87eed
{"addr":"0xffd87eed","code":"int sub_FFD87EED()\n{\n  int v0; // eax\n  int v1; // ebx\n  __int16 v2; // bp\n  int v3; // eax\n  int result; // eax\n  char v5; // cl\n  _DWORD *v6; // edi\n  unsigned int v7; // ebx\n  unsigned int v8; // ebx\n  int v9; // eax\n  int v10; // eax\n  int v11; // esi\n  int v12; // eax\n  int v13; // [esp+14h] [ebp-8h] BYREF\n  int v14; // [esp+18h] [ebp-4h]\n\n  v0 = sub_FFD8EEB6(); /*0xffd87ef4*/\n  v1 = sub_FFD8CD6B(v0); /*0xffd87f00*/\n  sub_FFD7F9AF(64, (int)\"(WDT) Readback = 0x%08x\\n\", v1); /*0xffd87f0a*/\n  if ( (v1 & 0x4000) != 0 ) /*0xffd87f18*/\n  {\n    LOBYTE(v14) = 1; /*0xffd87f1c*/\n    v2 = (v1 & 0x3FF) + 1; /*0xffd87f27*/\n  }\n  else\n  {\n    v14 = 0; /*0xffd87f2e*/\n    v2 = 0; /*0xffd87f32*/\n  }\n  v3 = sub_FFD8AD54(); /*0xffd87f34*/\n  result = (*(int (__cdecl **)(int, int, int, int *))(*(_DWORD *)v3 + 52))(v3, 4, 28, &v13); /*0xffd87f45*/\n  if ( result >= 0 ) /*0xffd87f4d*/\n  {\n    v5 = v14; /*0xffd87f5c*/\n    v6 = (_DWORD *)(v13 + 8); /*0xffd87f60*/\n    *(_DWORD *)(v13 + 8) = unk_FFD97F0C; /*0xffd87f63*/\n    *++v6 = unk_FFD97F10; /*0xffd87f64*/\n    *++v6 = unk_FFD97F14; /*0xffd87f65*/\n    v6[1] = unk_FFD97F18; /*0xffd87f66*/\n    *(_BYTE *)(v13 + 26) = v5; /*0xffd87f75*/\n    *(_WORD *)(v13 + 24) = v2; /*0xffd87f7c*/\n    if ( (v1 & 0x3000000) != 0 ) /*0xffd87f82*/\n    {\n      sub_FFD7F9AF(0x80000000, (int)\"(WDT) Expiration detected.\\n\", v1); /*0xffd87f8b*/\n      v7 = v1 & 0xFC3FFFFF | 0x3800000; /*0xffd87f99*/\n    }\n    else\n    {\n      if ( (v1 & 0x400000) == 0 || sub_FFD87E99() ) /*0xffd87fa9*/\n      {\n        sub_FFD7F9AF(64, (int)\"(WDT) Status OK.\\n\", v1); /*0xffd87fcf*/\n        v8 = v1 & 0xFF7FFFFF; /*0xffd87fd7*/\n      }\n      else\n      {\n        sub_FFD7F9AF(0x80000000, (int)\"(WDT) Unexpected reset detected and ignored.\\n\"); /*0xffd87fb8*/\n        v8 = v1 & 0xFF3FFFFF; /*0xffd87fbf*/\n      }\n      v7 = v8 | 0x3000000; /*0xffd87fdd*/\n    }\n    v9 = sub_FFD8EEB6(); /*0xffd87fdf*/\n    sub_FFD8CD97(v9, v7); /*0xffd87fe8*/\n    sub_FFD7F948(&unk_FFD9816C); /*0xffd87ff2*/\n    v10 = sub_FFD7F948(&unk_FFD98144); /*0xffd87ffc*/\n    v11 = v10; /*0xffd88001*/\n    if ( v10 < 0 ) /*0xffd88005*/\n    {\n      sub_FFD7F9AF(0x80000000, (int)\"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v10); /*0xffd8800e*/\n      v12 = sub_FFD7F97E(); /*0xffd88016*/\n      if ( v12 ) /*0xffd8801d*/\n        (*(void (__cdecl **)(const char *, int, const char *))(v12 + 4))( /*0xffd8802e*/\n          \"e:\\\\hs\\\\PurleySktPkg\\\\SouthClusterLbg\\\\LibraryPrivate\\\\PeiPchInitLib\\\\Wdt.c\",\n          216,\n          \"!EFI_ERROR (Status)\");\n    }\n    return v11; /*0xffd88034*/\n  }\n  return result; /*0xffd88036*/\n}","refs":[{"addr":"0xffd8eeb6","name":"sub_FFD8EEB6"},{"addr":"0xffd8cd6b","name":"sub_FFD8CD6B"},{"addr":"0xffd7f9af","name":"sub_FFD7F9AF"},{"addr":"0xffd945a8","name":"aWdtReadback0x0","string":"(WDT) Readback = 0x%08x\n"},{"addr":"0xffd8ad54","name":"sub_FFD8AD54"},{"addr":"0xffd97f0c","name":"unk_FFD97F0C"},{"addr":"0xffd97f10","name":"unk_FFD97F10"},{"addr":"0xffd97f14","name":"unk_FFD97F14"},{"addr":"0xffd97f18","name":"unk_FFD97F18"},{"addr":"0xffd945c4","name":"aWdtExpirationD","string":"(WDT) Expiration detected.\n"},{"addr":"0xffd94610","name":"aWdtStatusOk","string":"(WDT) Status OK.\n"},{"addr":"0xffd945e0","name":"aWdtUnexpectedR","string":"(WDT) Unexpected reset detected and ignored.\n"},{"addr":"0xffd87e99","name":"sub_FFD87E99"},{"addr":"0xffd8cd97","name":"sub_FFD8CD97"},{"addr":"0xffd7f948","name":"sub_FFD7F948"},{"addr":"0xffd9816c","name":"unk_FFD9816C"},{"addr":"0xffd98144","name":"unk_FFD98144"},{"addr":"0xffd9192c","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffd7f97e","name":"sub_FFD7F97E"},{"addr":"0xffd94624","name":"aEHsPurleysktpk_8","string":"e:\\hs\\PurleySktPkg\\SouthClusterLbg\\LibraryPrivate\\PeiPchInitLib\\Wdt.c"},{"addr":"0xffd91950","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"}]}