Newer
Older
AMI-Aptio-BIOS-Reversed / IpmiRedirFru / all_decompiled.json
@Ajax Dong Ajax Dong 2 days ago 63 KB Init
{
  "0x1000": "{\"addr\":\"0x1000\",\"code\":\"char *__fastcall sub_1000(char *dst, char *src, unsigned __int64 count)\\n{\\n  char *dst_2; // rax\\n  unsigned __int64 count_1; // rcx\\n  char *dst_1; // rdi\\n  char *src_1; // rsi\\n\\n  dst_2 = dst; /*0x1010*/\\n  if ( src < dst && &src[count - 1] >= dst ) /*0x1018*/\\n  {\\n    src_1 = &src[count - 1]; /*0x1030*/\\n    dst_1 = &dst[count - 1]; /*0x1033*/\\n  }\\n  else\\n  {\\n    count_1 = count; /*0x101a*/\\n    count &= 7u; /*0x101d*/\\n    count_1 >>= 3; /*0x1024*/\\n    qmemcpy(dst, src, 8 * count_1); /*0x1028*/\\n    src_1 = &src[8 * count_1]; /*0x1028*/\\n    dst_1 = &dst[8 * count_1]; /*0x1028*/\\n  }\\n  qmemcpy(dst_1, src_1, count); /*0x103c*/\\n  return dst_2; /*0x103f*/\\n}\"}",
  "0x1050": "{\"addr\":\"0x1050\",\"code\":\"char *__fastcall sub_1050(char *buf, unsigned __int64 a2)\\n{\\n  memset(buf, 0, 8 * (a2 >> 3)); /*0x1066*/\\n  memset(&buf[8 * (a2 >> 3)], 0, a2 & 7); /*0x106b*/\\n  return buf; /*0x106e*/\\n}\"}",
  "0x10d0": "{\"addr\":\"0x10d0\",\"code\":\"void sub_10D0()\\n{\\n  _mm_pause(); /*0x10d0*/\\n}\"}",
  "0x10e0": "{\"addr\":\"0x10e0\",\"code\":\"unsigned __int64 sub_10E0()\\n{\\n  return __rdtsc(); /*0x10e9*/\\n}\"}",
  "0x10f0": "{\"addr\":\"0x10f0\",\"code\":\"void sub_10F0()\\n{\\n  _enable(); /*0x10f0*/\\n}\"}",
  "0x1100": "{\"addr\":\"0x1100\",\"code\":\"void sub_1100()\\n{\\n  _disable(); /*0x1100*/\\n}\"}",
  "0x1110": "{\"addr\":\"0x1110\",\"code\":\"unsigned __int64 sub_1110()\\n{\\n  return __getcallerseflags(); /*0x1112*/\\n}\"}",
  "0x1114": "{\"addr\":\"0x1114\",\"code\":\"EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)\\n{\\n  signed __int64 v2; // rbx\\n\\n  sub_113C(ImageHandle, SystemTable); /*0x111a*/\\n  v2 = sub_1B88(); /*0x1124*/\\n  if ( v2 < 0 ) /*0x112a*/\\n    sub_1558(); /*0x112c*/\\n  return v2; /*0x1134*/\\n}\",\"refs\":[{\"addr\":\"0x113c\",\"name\":\"sub_113C\"},{\"addr\":\"0x1b88\",\"name\":\"sub_1B88\"},{\"addr\":\"0x1558\",\"name\":\"sub_1558\"}]}",
  "0x113c": "{\"addr\":\"0x113c\",\"code\":\"void __fastcall sub_113C(__int64 ImageHandle, EFI_SYSTEM_TABLE *SystemTable)\\n{\\n  EFI_BOOT_SERVICES *BootServices; // r10\\n  __int64 BootServices_1; // r10\\n  __int64 v5; // rax\\n  __int64 v6; // rax\\n  __int64 v7; // rbx\\n  __int64 v8; // rax\\n  __int64 v9; // rbx\\n  __int64 v10; // rax\\n  __int64 v11; // rax\\n  __int64 v12; // rbx\\n  __int64 v13; // rax\\n  _BYTE *v14; // rax\\n  __int16 callerseflags_w; // bx\\n  bool v16; // bl\\n  __int64 v17; // rdi\\n  int i; // eax\\n\\n  ::ImageHandle = ImageHandle; /*0x1154*/\\n  if ( !ImageHandle ) /*0x1168*/\\n    sub_3DDC( /*0x1177*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiBootServicesTableLib\\\\\\\\UefiBootServicesTableLib.c\\\",\\n      51,\\n      \\\"gImageHandle != ((void *) 0)\\\");\\n  ::SystemTable = (__int64)SystemTable; /*0x117c*/\\n  if ( !SystemTable ) /*0x1186*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiBootServicesTableLib\\\\\\\\UefiBootServicesTableLib.c\\\", 57, \\\"gST != ((void *) 0)\\\"); /*0x1195*/\\n  ::BootServices = (__int64)SystemTable->BootServices; /*0x119e*/\\n  if ( !::BootServices ) /*0x11a8*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiBootServicesTableLib\\\\\\\\UefiBootServicesTableLib.c\\\", 63, \\\"gBS != ((void *) 0)\\\"); /*0x11b7*/\\n  RuntimeServices = (__int64)SystemTable->RuntimeServices; /*0x11c0*/\\n  if ( !RuntimeServices ) /*0x11ca*/\\n    sub_3DDC( /*0x11dd*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeServicesTableLib\\\\\\\\UefiRuntimeServicesTableLib.c\\\",\\n      47,\\n      \\\"gRT != ((void *) 0)\\\");\\n  BootServices = SystemTable->BootServices; /*0x11ed*/\\n  RuntimeServices_0 = (__int64)SystemTable->RuntimeServices; /*0x11f4*/\\n  BootServices_0 = (__int64)BootServices; /*0x1207*/\\n  ((void (__fastcall *)(__int64, __int64, __int64 (__fastcall *)()))BootServices->CreateEvent)(513, 8, sub_3E1C); /*0x1219*/\\n  (*(void (__fastcall **)(__int64, __int64, __int64 (__fastcall *)(), _QWORD, __int64 *))(BootServices_0 + 80))( /*0x1241*/\\n    1610613250,\\n    8,\\n    sub_3E28,\\n    0,\\n    &qword_70D0);\\n  sub_3F9C(); /*0x1244*/\\n  if ( !RuntimeServices ) /*0x1258*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeLib\\\\\\\\RuntimeLib.c\\\", 95, \\\"gRT != ((void *) 0)\\\"); /*0x1267*/\\n  BootServices_1 = ::BootServices; /*0x126c*/\\n  if ( !::BootServices ) /*0x1276*/\\n  {\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeLib\\\\\\\\RuntimeLib.c\\\", 96, \\\"gBS != ((void *) 0)\\\"); /*0x1286*/\\n    BootServices_1 = ::BootServices; /*0x128b*/\\n  }\\n  RuntimeServices_1 = RuntimeServices; /*0x12a0*/\\n  v5 = (*(__int64 (__fastcall **)(__int64, __int64, __int64 (__fastcall *)()))(BootServices_1 + 368))(512, 16, sub_4024); /*0x12ce*/\\n  if ( v5 < 0 ) /*0x12eb*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v5); /*0x12f5*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeLib\\\\\\\\RuntimeLib.c\\\", 111, \\\"!EFI_ERROR (Status)\\\"); /*0x1305*/\\n  }\\n  v6 = (*(__int64 (__fastcall **)(__int64, __int64, __int64 (__fastcall *)(), _QWORD, void *, __int64 *))(::BootServices + 368))( /*0x133b*/\\n         512,\\n         16,\\n         nullsub_1,\\n         0,\\n         &unk_7060,\\n         &qword_7140);\\n  v7 = v6; /*0x1341*/\\n  if ( v6 < 0 ) /*0x1347*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v6); /*0x1352*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeLib\\\\\\\\RuntimeLib.c\\\", 122, \\\"!EFI_ERROR (Status)\\\"); /*0x1362*/\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v7); /*0x1370*/\\n    sub_3DDC( /*0x1384*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\Build\\\\\\\\HR6N0XMLK\\\\\\\\DEBUG_VS2015\\\\\\\\X64\\\\\\\\AmiIpmiPkg\\\\\\\\Ipmi\\\\\\\\IpmiRedirFru\\\\\\\\IpmiRedirFru\\\\\\\\DEBUG\\\\\\\\AutoGen.c\\\",\\n      382,\\n      \\\"!EFI_ERROR (Status)\\\");\\n  }\\n  v8 = sub_3ED8(&unk_7080, &qword_70F8); /*0x1397*/\\n  v9 = v8; /*0x139c*/\\n  if ( v8 < 0 ) /*0x13a2*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v8); /*0x13ad*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeServicesTableLib\\\\\\\\DxeServicesTableLib.c\\\", 64, \\\"!EFI_ERROR (Status)\\\"); /*0x13c1*/\\n  }\\n  if ( !qword_70F8 ) /*0x13ce*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeServicesTableLib\\\\\\\\DxeServicesTableLib.c\\\", 65, \\\"gDS != ((void *) 0)\\\"); /*0x13e3*/\\n  if ( v9 < 0 ) /*0x13eb*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v9); /*0x13f6*/\\n    sub_3DDC( /*0x140a*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\Build\\\\\\\\HR6N0XMLK\\\\\\\\DEBUG_VS2015\\\\\\\\X64\\\\\\\\AmiIpmiPkg\\\\\\\\Ipmi\\\\\\\\IpmiRedirFru\\\\\\\\IpmiRedirFru\\\\\\\\DEBUG\\\\\\\\AutoGen.c\\\",\\n      385,\\n      \\\"!EFI_ERROR (Status)\\\");\\n  }\\n  v10 = sub_35F4(); /*0x140f*/\\n  qword_7110 = (*(__int64 (__fastcall **)(__int64))(v10 + 32))(5); /*0x141c*/\\n  v11 = (*(__int64 (__fastcall **)(__int64, __int64, __int64 (__fastcall *)(), _QWORD, void *, __int64 *))(::BootServices + 368))( /*0x1454*/\\n          512,\\n          16,\\n          sub_4048,\\n          0,\\n          &unk_7070,\\n          &qword_7120);\\n  v12 = v11; /*0x145a*/\\n  if ( v11 < 0 ) /*0x1460*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v11); /*0x146b*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeRuntimePciExpressLib\\\\\\\\PciExpressLib.c\\\", 141, \\\"!EFI_ERROR (Status)\\\"); /*0x147f*/\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v12); /*0x148d*/\\n    sub_3DDC( /*0x14a1*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\Build\\\\\\\\HR6N0XMLK\\\\\\\\DEBUG_VS2015\\\\\\\\X64\\\\\\\\AmiIpmiPkg\\\\\\\\Ipmi\\\\\\\\IpmiRedirFru\\\\\\\\IpmiRedirFru\\\\\\\\DEBUG\\\\\\\\AutoGen.c\\\",\\n      388,\\n      \\\"!EFI_ERROR (Status)\\\");\\n  }\\n  if ( *(char *)sub_40B8(1024068) >= 0 ) /*0x14b6*/\\n  {\\n    v13 = sub_40B8(1024064); /*0x14bb*/\\n    sub_4348(v13); /*0x14c3*/\\n    v14 = (_BYTE *)sub_40B8(1024068); /*0x14ca*/\\n    *v14 |= 0x80u; /*0x14d4*/\\n  }\\n  callerseflags_w = _getcallerseflags_w(); /*0x14db*/\\n  disable_w(); /*0x14de*/\\n  v16 = (callerseflags_w & 0x200) != 0; /*0x14ed*/\\n  v17 = sub_437C(1288) & 0xFFFFFF; /*0x14f7*/\\n  _rdtsc_w(); /*0x14fd*/\\n  for ( i = sub_437C(1288); (((_DWORD)v17 + 357 - i) & 0x800000) == 0; i = sub_437C(1288) ) /*0x1504*/\\n    mm_pause_w(); /*0x1510*/\\n  _rdtsc_w(); /*0x1529*/\\n  if ( v16 ) /*0x1530*/\\n    enable_w(); /*0x1532*/\\n  else\\n    disable_w(); /*0x1539*/\\n}\",\"refs\":[{\"addr\":\"0x70a8\",\"name\":\"ImageHandle\"},{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5730\",\"name\":\"aEHsMdepkgLibra\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiBootServicesTableLib\\\\UefiBootServicesTableLib.c\"},{\"addr\":\"0x5710\",\"name\":\"aGimagehandleVo\",\"string\":\"gImageHandle != ((void *) 0)\"},{\"addr\":\"0x7098\",\"name\":\"SystemTable\"},{\"addr\":\"0x5780\",\"name\":\"aGstVoid0\",\"string\":\"gST != ((void *) 0)\"},{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x5798\",\"name\":\"aGbsVoid0\",\"string\":\"gBS != ((void *) 0)\"},{\"addr\":\"0x70b0\",\"name\":\"RuntimeServices\"},{\"addr\":\"0x57d0\",\"name\":\"aEHsMdepkgLibra_0\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiRuntimeServicesTableLib\\\\UefiRuntimeServicesTableLib.c\"},{\"addr\":\"0x57b0\",\"name\":\"aGrtVoid0\",\"string\":\"gRT != ((void *) 0)\"},{\"addr\":\"0x70c0\",\"name\":\"RuntimeServices_0\"},{\"addr\":\"0x70d8\",\"name\":\"BootServices_0\"},{\"addr\":\"0x3e1c\",\"name\":\"sub_3E1C\"},{\"addr\":\"0x3e28\",\"name\":\"sub_3E28\"},{\"addr\":\"0x70d0\",\"name\":\"qword_70D0\"},{\"addr\":\"0x3f9c\",\"name\":\"sub_3F9C\"},{\"addr\":\"0x5e38\",\"name\":\"aEHsMdepkgLibra_1\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiRuntimeLib\\\\RuntimeLib.c\"},{\"addr\":\"0x7138\",\"name\":\"RuntimeServices_1\"},{\"addr\":\"0x4024\",\"name\":\"sub_4024\"},{\"addr\":\"0x3d5c\",\"name\":\"sub_3D5C\"},{\"addr\":\"0x5000\",\"name\":\"aAssertEfiError\",\"string\":\"\\nASSERT_EFI_ERROR (Status = %r)\\n\"},{\"addr\":\"0x5028\",\"name\":\"aEfiErrorStatus\",\"string\":\"!EFI_ERROR (Status)\"},{\"addr\":\"0x4020\",\"name\":\"nullsub_1\"},{\"addr\":\"0x7060\",\"name\":\"unk_7060\"},{\"addr\":\"0x7140\",\"name\":\"qword_7140\"},{\"addr\":\"0x5040\",\"name\":\"aEHsBuildHr6n0x\",\"string\":\"e:\\\\hs\\\\Build\\\\HR6N0XMLK\\\\DEBUG_VS2015\\\\X64\\\\AmiIpmiPkg\\\\Ipmi\\\\IpmiRedirFru\\\\IpmiRedirFru\\\\DEBUG\\\\AutoGen.c\"},{\"addr\":\"0x3ed8\",\"name\":\"sub_3ED8\"},{\"addr\":\"0x7080\",\"name\":\"unk_7080\"},{\"addr\":\"0x70f8\",\"name\":\"qword_70F8\"},{\"addr\":\"0x5e70\",\"name\":\"aEHsMdepkgLibra_2\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxeServicesTableLib\\\\DxeServicesTableLib.c\"},{\"addr\":\"0x5eb0\",\"name\":\"aGdsVoid0\",\"string\":\"gDS != ((void *) 0)\"},{\"addr\":\"0x35f4\",\"name\":\"sub_35F4\"},{\"addr\":\"0x7110\",\"name\":\"qword_7110\"},{\"addr\":\"0x4048\",\"name\":\"sub_4048\"},{\"addr\":\"0x7070\",\"name\":\"unk_7070\"},{\"addr\":\"0x7120\",\"name\":\"qword_7120\"},{\"addr\":\"0x5ec8\",\"name\":\"aEHsMdepkgLibra_3\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxeRuntimePciExpressLib\\\\PciExpressLib.c\"},{\"addr\":\"0x40b8\",\"name\":\"sub_40B8\"},{\"addr\":\"0x4348\",\"name\":\"sub_4348\"},{\"addr\":\"0x1110\",\"name\":\"__getcallerseflags_w\"},{\"addr\":\"0x1100\",\"name\":\"_disable_w\"},{\"addr\":\"0x437c\",\"name\":\"sub_437C\"},{\"addr\":\"0x10e0\",\"name\":\"__rdtsc_w\"},{\"addr\":\"0x10d0\",\"name\":\"_mm_pause_w\"},{\"addr\":\"0x10f0\",\"name\":\"_enable_w\"}]}",
  "0x1558": "{\"addr\":\"0x1558\",\"code\":\"__int64 sub_1558()\\n{\\n  __int64 v0; // rax\\n  __int64 v1; // rbx\\n  __int64 BootServices; // rax\\n  __int64 v3; // rax\\n  __int64 v4; // rax\\n  __int64 v5; // rbx\\n\\n  if ( qword_7100 ) /*0x1577*/\\n    sub_3E94(); /*0x1579*/\\n  v0 = (*(__int64 (__fastcall **)(__int64))(BootServices + 112))(qword_7120); /*0x158c*/\\n  v1 = v0; /*0x15a2*/\\n  if ( v0 < 0 ) /*0x15a8*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v0); /*0x15b2*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeRuntimePciExpressLib\\\\\\\\PciExpressLib.c\\\", 178, \\\"!EFI_ERROR (Status)\\\"); /*0x15c6*/\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v1); /*0x15d3*/\\n    sub_3DDC( /*0x15e7*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\Build\\\\\\\\HR6N0XMLK\\\\\\\\DEBUG_VS2015\\\\\\\\X64\\\\\\\\AmiIpmiPkg\\\\\\\\Ipmi\\\\\\\\IpmiRedirFru\\\\\\\\IpmiRedirFru\\\\\\\\DEBUG\\\\\\\\AutoGen.c\\\",\\n      428,\\n      \\\"!EFI_ERROR (Status)\\\");\\n  }\\n  BootServices = BootServices; /*0x15ec*/\\n  if ( !BootServices ) /*0x15f6*/\\n  {\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeLib\\\\\\\\RuntimeLib.c\\\", 151, \\\"gBS != ((void *) 0)\\\"); /*0x160b*/\\n    BootServices = BootServices; /*0x1610*/\\n  }\\n  v3 = (*(__int64 (__fastcall **)(__int64))(BootServices + 112))(qword_7130); /*0x161e*/\\n  if ( v3 < 0 ) /*0x1624*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v3); /*0x162f*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeLib\\\\\\\\RuntimeLib.c\\\", 153, \\\"!EFI_ERROR (Status)\\\"); /*0x1643*/\\n  }\\n  v4 = (*(__int64 (__fastcall **)(__int64))(BootServices + 112))(qword_7140); /*0x1656*/\\n  v5 = v4; /*0x1659*/\\n  if ( v4 < 0 ) /*0x165f*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v4); /*0x166a*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiRuntimeLib\\\\\\\\RuntimeLib.c\\\", 156, \\\"!EFI_ERROR (Status)\\\"); /*0x167e*/\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v5); /*0x168c*/\\n    sub_3DDC( /*0x16a0*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\Build\\\\\\\\HR6N0XMLK\\\\\\\\DEBUG_VS2015\\\\\\\\X64\\\\\\\\AmiIpmiPkg\\\\\\\\Ipmi\\\\\\\\IpmiRedirFru\\\\\\\\IpmiRedirFru\\\\\\\\DEBUG\\\\\\\\AutoGen.c\\\",\\n      431,\\n      \\\"!EFI_ERROR (Status)\\\");\\n  }\\n  (*(void (__fastcall **)(__int64))(BootServices_0 + 112))(qword_70C8); /*0x16b3*/\\n  return (*(__int64 (__fastcall **)(__int64))(BootServices_0 + 112))(qword_70D0);\\n}\",\"refs\":[{\"addr\":\"0x3e94\",\"name\":\"sub_3E94\"},{\"addr\":\"0x7100\",\"name\":\"qword_7100\"},{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x7120\",\"name\":\"qword_7120\"},{\"addr\":\"0x3d5c\",\"name\":\"sub_3D5C\"},{\"addr\":\"0x5000\",\"name\":\"aAssertEfiError\",\"string\":\"\\nASSERT_EFI_ERROR (Status = %r)\\n\"},{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5ec8\",\"name\":\"aEHsMdepkgLibra_3\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxeRuntimePciExpressLib\\\\PciExpressLib.c\"},{\"addr\":\"0x5028\",\"name\":\"aEfiErrorStatus\",\"string\":\"!EFI_ERROR (Status)\"},{\"addr\":\"0x5040\",\"name\":\"aEHsBuildHr6n0x\",\"string\":\"e:\\\\hs\\\\Build\\\\HR6N0XMLK\\\\DEBUG_VS2015\\\\X64\\\\AmiIpmiPkg\\\\Ipmi\\\\IpmiRedirFru\\\\IpmiRedirFru\\\\DEBUG\\\\AutoGen.c\"},{\"addr\":\"0x5e38\",\"name\":\"aEHsMdepkgLibra_1\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiRuntimeLib\\\\RuntimeLib.c\"},{\"addr\":\"0x5798\",\"name\":\"aGbsVoid0\",\"string\":\"gBS != ((void *) 0)\"},{\"addr\":\"0x7130\",\"name\":\"qword_7130\"},{\"addr\":\"0x7140\",\"name\":\"qword_7140\"},{\"addr\":\"0x70d8\",\"name\":\"BootServices_0\"},{\"addr\":\"0x70c8\",\"name\":\"qword_70C8\"},{\"addr\":\"0x70d0\",\"name\":\"qword_70D0\"}]}",
  "0x16e0": "{\"addr\":\"0x16e0\",\"code\":\"__int64 sub_16E0()\\n{\\n  (*(void (__fastcall **)(_QWORD, __int64))(RuntimeServices + 64))(0, qword_7148 + 479); /*0x16fb*/\\n  (*(void (__fastcall **)(_QWORD, __int64))(RuntimeServices + 64))(0, qword_7148 + 487); /*0x1715*/\\n  (*(void (__fastcall **)(_QWORD, __int64))(RuntimeServices + 64))(0, qword_7148 + 495); /*0x172f*/\\n  return (*(__int64 (__fastcall **)(_QWORD, __int64))(RuntimeServices + 64))(0, qword_7148 + 503);\\n}\",\"refs\":[{\"addr\":\"0x70b0\",\"name\":\"RuntimeServices\"},{\"addr\":\"0x7148\",\"name\":\"qword_7148\"}]}",
  "0x1754": "{\"addr\":\"0x1754\",\"code\":\"unsigned __int64 __fastcall sub_1754(__int64 a1, __int64 a2, char *dst, _QWORD *a4, _QWORD *a5)\\n{\\n  bool v5; // zf\\n  __int64 v9; // rbx\\n  _DWORD src[4]; // [rsp+20h] [rbp-10h] BYREF\\n\\n  src[0] = 892468678; /*0x1776*/\\n  v5 = *(_QWORD *)(a1 - 479) == 2020766310; /*0x177d*/\\n  src[1] = 1288834734; /*0x178a*/\\n  src[2] = 1214228144; /*0x1794*/\\n  v9 = a1; /*0x179b*/\\n  src[3] = 149151648; /*0x179e*/\\n  if ( v5 ) /*0x17a5*/\\n    v9 = a1 - 479; /*0x17c1*/\\n  else\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\AmiIpmiPkg\\\\\\\\Ipmi\\\\\\\\IpmiRedirFru\\\\\\\\IpmiRedirFru.c\\\", 129, \\\"CR has Bad Signature\\\"); /*0x17ba*/\\n  if ( a2 + 1 > (unsigned __int64)*(unsigned __int8 *)(v9 + 9) ) /*0x17cf*/\\n    return 0x8000000000000011uLL; /*0x17d1*/\\n  sub_36FC(dst, (char *)src, 0x10u); /*0x17ea*/\\n  *a4 = 1; /*0x17f3*/\\n  *a5 = 0; /*0x17fa*/\\n  return 0; /*0x1814*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x50d0\",\"name\":\"aEHsAmiipmipkgI_0\",\"string\":\"e:\\\\hs\\\\AmiIpmiPkg\\\\Ipmi\\\\IpmiRedirFru\\\\IpmiRedirFru.c\"},{\"addr\":\"0x50b8\",\"name\":\"aCrHasBadSignat\",\"string\":\"CR has Bad Signature\"},{\"addr\":\"0x36fc\",\"name\":\"sub_36FC\"}]}",
  "0x181c": "{\"addr\":\"0x181c\",\"code\":\"__int64 __fastcall sub_181C(__int64 a1, char *dst, _QWORD *a3, _QWORD *a4)\\n{\\n  bool v4; // zf\\n  __int64 v8; // rbx\\n  _DWORD src[4]; // [rsp+20h] [rbp-10h] BYREF\\n\\n  src[0] = -1431216104; /*0x183e*/\\n  v4 = *(_QWORD *)(a1 - 479) == 2020766310; /*0x1845*/\\n  src[1] = 1147234205; /*0x1852*/\\n  src[2] = 216473786; /*0x185c*/\\n  v8 = a1; /*0x1863*/\\n  src[3] = -1687517449; /*0x1866*/\\n  if ( v4 ) /*0x186d*/\\n    v8 = a1 - 479; /*0x1889*/\\n  else\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\AmiIpmiPkg\\\\\\\\Ipmi\\\\\\\\IpmiRedirFru\\\\\\\\IpmiRedirFru.c\\\", 169, \\\"CR has Bad Signature\\\"); /*0x1882*/\\n  sub_36FC(dst, (char *)src, 0x10u); /*0x1899*/\\n  *a3 = 0; /*0x189e*/\\n  *a4 = *(unsigned __int8 *)(v8 + 9); /*0x18b5*/\\n  return 0; /*0x18bf*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x50d0\",\"name\":\"aEHsAmiipmipkgI_0\",\"string\":\"e:\\\\hs\\\\AmiIpmiPkg\\\\Ipmi\\\\IpmiRedirFru\\\\IpmiRedirFru.c\"},{\"addr\":\"0x50b8\",\"name\":\"aCrHasBadSignat\",\"string\":\"CR has Bad Signature\"},{\"addr\":\"0x36fc\",\"name\":\"sub_36FC\"}]}",
  "0x18c8": "{\"addr\":\"0x18c8\",\"code\":\"__int64 __fastcall sub_18C8(__int64 a1, __int64 n127_1, __int16 a3, unsigned __int8 *a4, __int64 a5)\\n{\\n  unsigned __int8 *v5; // rbx\\n  unsigned __int16 v6; // r14\\n  char n3; // si\\n  __int64 v8; // rdi\\n  bool v9; // zf\\n  __int64 result; // rax\\n  __int16 v12; // ax\\n  int v13; // [rsp+28h] [rbp-D8h]\\n  char n127_3; // [rsp+40h] [rbp-C0h] BYREF\\n  __int16 v15; // [rsp+41h] [rbp-BFh]\\n  unsigned __int8 n127; // [rsp+43h] [rbp-BDh]\\n  unsigned __int8 n127_2; // [rsp+50h] [rbp-B0h] BYREF\\n  char src[255]; // [rsp+51h] [rbp-AFh] BYREF\\n  char v19; // [rsp+188h] [rbp+88h] BYREF\\n\\n  v5 = a4; /*0x18ec*/\\n  n127_3 = 0; /*0x18ef*/\\n  v6 = 0; /*0x18f4*/\\n  v15 = 0; /*0x18f8*/\\n  n3 = 3; /*0x18fd*/\\n  n127 = 0; /*0x1900*/\\n  v8 = 0; /*0x1904*/\\n  if ( *(_QWORD *)a4 && a5 ) /*0x1917*/\\n  {\\n    v9 = *(_QWORD *)a4 == 0; /*0x191d*/\\n    n127_3 = n127_1; /*0x1920*/\\n    v15 = a3; /*0x1924*/\\n    while ( !v9 ) /*0x192a*/\\n    {\\n      if ( *(_QWORD *)v5 <= 0x7Fu ) /*0x1934*/\\n        n127 = *v5; /*0x193f*/\\n      else\\n        n127 = 127; /*0x1936*/\\n      while ( 1 ) /*0x194a*/\\n      {\\n        v19 = -1; /*0x194a*/\\n        LOBYTE(a4) = 17; /*0x1956*/\\n        LOBYTE(n127_1) = 10; /*0x1966*/\\n        LOBYTE(v13) = 4; /*0x196d*/\\n        result = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, unsigned __int8 *, char *, int, unsigned __int8 *, char *))(qword_7090 + 16))( /*0x1981*/\\n                   qword_7090,\\n                   n127_1,\\n                   0,\\n                   a4,\\n                   &n127_3,\\n                   v13,\\n                   &n127_2,\\n                   &v19);\\n        if ( result < 0 ) /*0x1987*/\\n          goto LABEL_18; /*0x1987*/\\n        if ( *(_BYTE *)(qword_7090 + 8) != 0x81 ) /*0x1998*/\\n          break; /*0x1998*/\\n        if ( !n3-- ) /*0x199a*/\\n        {\\n          result = 0x8000000000000006uLL; /*0x1a0e*/\\nLABEL_18:\\n          *(_QWORD *)v5 = v8; /*0x1a18*/\\n          return result; /*0x1a1b*/\\n        }\\n        sub_417C(107386); /*0x19aa*/\\n      }\\n      n127_1 = n127_2; /*0x19b5*/\\n      if ( n127_2 > n127 ) /*0x19be*/\\n        n127_1 = n127; /*0x19c0*/\\n      v12 = *(_WORD *)v5; /*0x19c3*/\\n      v15 += (unsigned __int8)n127_1; /*0x19c9*/\\n      v8 += (unsigned __int8)n127_1; /*0x19d5*/\\n      *(_QWORD *)v5 = (unsigned __int16)(v12 - (unsigned __int8)n127_1); /*0x19db*/\\n      n127_2 = n127_1; /*0x19de*/\\n      if ( (_BYTE)n127_1 ) /*0x19e4*/\\n      {\\n        sub_36FC((char *)(a5 + v6), src, (unsigned __int8)n127_1); /*0x19f6*/\\n        LOBYTE(n127_1) = n127_2; /*0x19fb*/\\n      }\\n      v6 += (unsigned __int8)n127_1; /*0x1a02*/\\n      v9 = *(_QWORD *)v5 == 0; /*0x1a06*/\\n    }\\n    *(_QWORD *)v5 = v8; /*0x1a1d*/\\n    return 0; /*0x1a20*/\\n  }\\n  else\\n  {\\n    *(_QWORD *)a4 = 0; /*0x1a24*/\\n    return 0x8000000000000002uLL; /*0x1a27*/\\n  }\\n}\",\"refs\":[{\"addr\":\"0x7090\",\"name\":\"qword_7090\"},{\"addr\":\"0x417c\",\"name\":\"sub_417C\"},{\"addr\":\"0x36fc\",\"name\":\"sub_36FC\"}]}",
  "0x1a50": "{\"addr\":\"0x1a50\",\"code\":\"__int64 __fastcall sub_1A50(__int64 a1, __int64 a2, __int16 a3, unsigned __int8 *a4, __int64 a5)\\n{\\n  unsigned __int8 *v5; // rbx\\n  unsigned __int16 v6; // r14\\n  char n3; // si\\n  __int64 v8; // rbp\\n  unsigned __int8 n127; // di\\n  char v10; // di\\n  __int64 result; // rax\\n  unsigned __int8 v13; // al\\n  unsigned __int8 v14; // al\\n  int v15; // [rsp+28h] [rbp-140h]\\n  char v16; // [rsp+40h] [rbp-128h] BYREF\\n  __int16 v17; // [rsp+41h] [rbp-127h]\\n  char dst[293]; // [rsp+43h] [rbp-125h] BYREF\\n  char v19; // [rsp+178h] [rbp+10h] BYREF\\n  unsigned __int8 v20; // [rsp+180h] [rbp+18h] BYREF\\n\\n  v16 = a2; /*0x1a66*/\\n  v5 = a4; /*0x1a6a*/\\n  v6 = 0; /*0x1a6d*/\\n  n3 = 3; /*0x1a71*/\\n  v8 = 0; /*0x1a74*/\\n  v17 = a3; /*0x1a77*/\\n  if ( *(_QWORD *)a4 ) /*0x1a7d*/\\n  {\\nLABEL_2:\\n    n127 = 127; /*0x1a86*/\\n    if ( *(_QWORD *)v5 <= 0x7Fu ) /*0x1a8d*/\\n      n127 = *v5; /*0x1a8f*/\\n    if ( n127 ) /*0x1a99*/\\n      sub_36FC(dst, (char *)(a5 + v6), n127); /*0x1aac*/\\n    v10 = n127 + 3; /*0x1ab1*/\\n    while ( 1 ) /*0x1abd*/\\n    {\\n      v19 = 1; /*0x1abd*/\\n      LOBYTE(a4) = 18; /*0x1aca*/\\n      LOBYTE(a2) = 10; /*0x1add*/\\n      LOBYTE(v15) = v10; /*0x1ae4*/\\n      result = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, unsigned __int8 *, char *, int, unsigned __int8 *, char *))(qword_7090 + 16))( /*0x1af8*/\\n                 qword_7090,\\n                 a2,\\n                 0,\\n                 a4,\\n                 &v16,\\n                 v15,\\n                 &v20,\\n                 &v19);\\n      if ( result < 0 ) /*0x1afe*/\\n        break; /*0x1afe*/\\n      if ( *(_BYTE *)(qword_7090 + 8) == 0x80 ) /*0x1b07*/\\n      {\\n        result = 0x8000000000000008uLL; /*0x1b79*/\\n        break; /*0x1b83*/\\n      }\\n      if ( *(_BYTE *)(qword_7090 + 8) != 0x81 ) /*0x1b11*/\\n      {\\n        v13 = *v5; /*0x1b32*/\\n        v8 += v20; /*0x1b34*/\\n        v17 += v20; /*0x1b37*/\\n        v14 = v13 - v20; /*0x1b3c*/\\n        v6 += v20; /*0x1b3e*/\\n        a2 = v14; /*0x1b42*/\\n        *(_QWORD *)v5 = v14; /*0x1b45*/\\n        if ( v14 ) /*0x1b4a*/\\n          goto LABEL_2; /*0x1b4a*/\\n        goto LABEL_13; /*0x1b4a*/\\n      }\\n      if ( !n3-- ) /*0x1b13*/\\n      {\\n        result = 0x8000000000000006uLL; /*0x1b6d*/\\n        break; /*0x1b77*/\\n      }\\n      sub_417C(107386); /*0x1b23*/\\n    }\\n  }\\n  else\\n  {\\nLABEL_13:\\n    result = 0; /*0x1b50*/\\n  }\\n  *(_QWORD *)v5 = v8; /*0x1b53*/\\n  return result; /*0x1b5e*/\\n}\",\"refs\":[{\"addr\":\"0x36fc\",\"name\":\"sub_36FC\"},{\"addr\":\"0x7090\",\"name\":\"qword_7090\"},{\"addr\":\"0x417c\",\"name\":\"sub_417C\"}]}",
  "0x1b88": "{\"addr\":\"0x1b88\",\"code\":\"unsigned __int64 __fastcall sub_1B88(__int64 a1, __int64 a2)\\n{\\n  __int64 v2; // rax\\n  __int64 v4; // rdx\\n  __int64 v5; // rdi\\n  __int64 v6; // r9\\n  char v7; // bl\\n  _QWORD v8[2]; // [rsp+48h] [rbp-30h] BYREF\\n  char v9; // [rsp+58h] [rbp-20h] BYREF\\n  __int64 v10; // [rsp+59h] [rbp-1Fh]\\n  int v11; // [rsp+61h] [rbp-17h]\\n  __int16 v12; // [rsp+65h] [rbp-13h]\\n  __int64 v13; // [rsp+A8h] [rbp+30h] BYREF\\n  char v14; // [rsp+B0h] [rbp+38h]\\n  __int16 v15; // [rsp+B8h] [rbp+40h]\\n\\n  v13 = a2; /*0x1b88*/\\n  v15 = 0; /*0x1ba5*/\\n  v14 = -1; /*0x1bb8*/\\n  v9 = 0; /*0x1bbc*/\\n  v10 = 0; /*0x1bc0*/\\n  v11 = 0; /*0x1bc4*/\\n  v12 = 0; /*0x1bc7*/\\n  LOBYTE(v13) = 15; /*0x1bcb*/\\n  v8[1] = 0; /*0x1bcf*/\\n  v2 = sub_3E50(6, 511); /*0x1bd3*/\\n  qword_7148 = v2; /*0x1bd8*/\\n  if ( !v2 ) /*0x1be2*/\\n    return 0x8000000000000009uLL; /*0x1be4*/\\n  *(_WORD *)(v2 + 8) = 67; /*0x1bfa*/\\n  *(_QWORD *)(v2 + 479) = sub_1754; /*0x1c00*/\\n  *(_QWORD *)v2 = 2020766310; /*0x1c15*/\\n  *(_QWORD *)(v2 + 487) = sub_181C; /*0x1c1c*/\\n  *(_QWORD *)(v2 + 495) = sub_18C8; /*0x1c2c*/\\n  *(_QWORD *)(v2 + 503) = sub_1A50; /*0x1c3a*/\\n  v5 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(BootServices + 320))(&unk_7040, 0, &qword_7090); /*0x1c55*/\\n  v7 = 1; /*0x1c58*/\\n  if ( v5 >= 0 ) /*0x1c5d*/\\n  {\\n    LOBYTE(v6) = 1; /*0x1c63*/\\n    LOBYTE(v4) = 6; /*0x1c72*/\\n    v5 = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, __int64, _QWORD, _BYTE, char *, __int64 *))(qword_7090 + 16))( /*0x1c90*/\\n           qword_7090,\\n           v4,\\n           0,\\n           v6,\\n           0,\\n           0,\\n           &v9,\\n           &v13);\\n    if ( v5 >= 0 ) /*0x1c96*/\\n    {\\n      v7 = 0; /*0x1c98*/\\n      v8[0] = 0; /*0x1cbb*/\\n      v5 = (*(__int64 (__fastcall **)(_QWORD *, void *, _QWORD, __int64))(BootServices + 128))( /*0x1cc8*/\\n             v8,\\n             &unk_7030,\\n             0,\\n             qword_7148 + 479);\\n    }\\n  }\\n  LOBYTE(v4) = v7; /*0x1cd2*/\\n  sub_2990(qword_7148 + 479, v4); /*0x1cdb*/\\n  if ( v5 >= 0 ) /*0x1ce3*/\\n    (*(void (__fastcall **)(__int64, __int64, __int64 (*)()))(BootServices + 368))(512, 16, sub_16E0); /*0x1d22*/\\n  else\\n    sub_3E94(qword_7148); /*0x1cec*/\\n  sub_2724(); /*0x1d28*/\\n  return 0; /*0x1d2f*/\\n}\",\"refs\":[{\"addr\":\"0x3e50\",\"name\":\"sub_3E50\"},{\"addr\":\"0x7148\",\"name\":\"qword_7148\"},{\"addr\":\"0x1754\",\"name\":\"sub_1754\"},{\"addr\":\"0x181c\",\"name\":\"sub_181C\"},{\"addr\":\"0x18c8\",\"name\":\"sub_18C8\"},{\"addr\":\"0x1a50\",\"name\":\"sub_1A50\"},{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x7040\",\"name\":\"unk_7040\"},{\"addr\":\"0x7090\",\"name\":\"qword_7090\"},{\"addr\":\"0x7030\",\"name\":\"unk_7030\"},{\"addr\":\"0x2990\",\"name\":\"sub_2990\"},{\"addr\":\"0x16e0\",\"name\":\"sub_16E0\"},{\"addr\":\"0x3e94\",\"name\":\"sub_3E94\"},{\"addr\":\"0x2724\",\"name\":\"sub_2724\"}]}",
  "0x1d38": "Output truncated. Run: curl -o .ida-mcp/6fbe24d4-c737-449f-bd09-b1401239b000.json http://127.0.0.1:13348/output/6fbe24d4-c737-449f-bd09-b1401239b000.json",
  "0x2724": "{\"addr\":\"0x2724\",\"code\":\"__int64 sub_2724()\\n{\\n  __int64 v0; // rax\\n  __int64 v1; // rax\\n  __int64 v3; // [rsp+40h] [rbp+8h]\\n  char v4; // [rsp+48h] [rbp+10h] BYREF\\n\\n  v0 = (*(__int64 (__fastcall **)(__int64, __int64, __int64 (__fastcall *)()))(BootServices + 80))(512, 8, sub_1D38); /*0x274e*/\\n  if ( v0 < 0 ) /*0x2759*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v0); /*0x2767*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiLib\\\\\\\\UefiLib.c\\\", 167, \\\"!EFI_ERROR (Status)\\\"); /*0x277f*/\\n  }\\n  v1 = (*(__int64 (__fastcall **)(void *, __int64, char *))(BootServices + 168))(&unk_7020, v3, &v4); /*0x279c*/\\n  if ( v1 < 0 ) /*0x27a5*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v1); /*0x27b4*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiLib\\\\\\\\UefiLib.c\\\", 179, \\\"!EFI_ERROR (Status)\\\"); /*0x27cc*/\\n  }\\n  (*(void (__fastcall **)(__int64))(BootServices + 104))(v3); /*0x27dd*/\\n  return 0; /*0x27e2*/\\n}\",\"refs\":[{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x1d38\",\"name\":\"sub_1D38\"},{\"addr\":\"0x3d5c\",\"name\":\"sub_3D5C\"},{\"addr\":\"0x5000\",\"name\":\"aAssertEfiError\",\"string\":\"\\nASSERT_EFI_ERROR (Status = %r)\\n\"},{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5d98\",\"name\":\"aEHsMdepkgLibra_4\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiLib\\\\UefiLib.c\"},{\"addr\":\"0x5028\",\"name\":\"aEfiErrorStatus\",\"string\":\"!EFI_ERROR (Status)\"},{\"addr\":\"0x7020\",\"name\":\"unk_7020\"}]}",
  "0x27e8": "{\"addr\":\"0x27e8\",\"code\":\"_WORD *__fastcall sub_27E8(_WORD *a1, unsigned int *a2, unsigned __int64 i)\\n{\\n  unsigned __int64 v4; // r10\\n  _WORD *v5; // r11\\n  unsigned int *v6; // rbx\\n  unsigned __int64 v7; // rdi\\n  unsigned int v8; // edx\\n  __int64 n4; // rbp\\n  char v10; // al\\n  unsigned __int64 v11; // rbx\\n  unsigned int v12; // r11d\\n  unsigned __int64 v13; // r8\\n  _WORD *v14; // rdx\\n  char v15; // al\\n\\n  v4 = 0; /*0x2815*/\\n  if ( i / 3 ) /*0x281b*/\\n  {\\n    v5 = a1; /*0x2820*/\\n    v6 = a2; /*0x2823*/\\n    v7 = i / 3; /*0x2826*/\\n    v4 = i / 3; /*0x2829*/\\n    do /*0x2857*/\\n    {\\n      v8 = *v6; /*0x282c*/\\n      n4 = 4; /*0x282e*/\\n      do /*0x284d*/\\n      {\\n        v10 = v8; /*0x2833*/\\n        v8 >>= 6; /*0x2835*/\\n        *v5++ = (v10 & 0x3F) + 32; /*0x2841*/\\n        --n4; /*0x2849*/\\n      }\\n      while ( n4 ); /*0x284d*/\\n      v6 = (unsigned int *)((char *)v6 + 3); /*0x284f*/\\n      --v7; /*0x2853*/\\n    }\\n    while ( v7 ); /*0x2857*/\\n  }\\n  v11 = 0; /*0x285d*/\\n  v12 = *(unsigned int *)((char *)a2 + 2 * v4 + v4); /*0x2860*/\\n  v13 = i % 3; /*0x2868*/\\n  if ( v13 ) /*0x286b*/\\n  {\\n    v14 = &a1[4 * v4]; /*0x286d*/\\n    v11 = v13; /*0x2871*/\\n    do /*0x288f*/\\n    {\\n      v15 = v12; /*0x2874*/\\n      v12 >>= 6; /*0x2877*/\\n      *v14++ = (v15 & 0x3F) + 32; /*0x2884*/\\n      --v13; /*0x288b*/\\n    }\\n    while ( v13 ); /*0x288f*/\\n  }\\n  a1[4 * v4 + v11] = 0; /*0x28a9*/\\n  return a1; /*0x28b1*/\\n}\"}",
  "0x28b8": "{\"addr\":\"0x28b8\",\"code\":\"unsigned __int64 __fastcall sub_28B8(__int64 a1, __int64 *a2, char n2, unsigned __int8 i_1)\\n{\\n  __int64 v7; // rbx\\n  __int64 v9; // rax\\n  unsigned __int64 i; // rcx\\n  unsigned int v11; // eax\\n  _WORD *v12; // rax\\n\\n  if ( n2 == 2 ) /*0x28d8*/\\n  {\\n    v11 = (unsigned __int64)(11453246128LL * i_1) >> 32; /*0x2943*/\\n    v12 = (_WORD *)sub_3E50(6, (int)(v11 + 2 + (v11 >> 31))); /*0x2950*/\\n    *a2 = (__int64)v12; /*0x2955*/\\n    v7 = 0; /*0x2958*/\\n    if ( v12 ) /*0x295d*/\\n    {\\n      sub_27E8(v12, (unsigned int *)(a1 + 1), i_1); /*0x296a*/\\n      return v7; /*0x296f*/\\n    }\\n    return 0x8000000000000009uLL; /*0x295d*/\\n  }\\n  if ( n2 != 3 ) /*0x28de*/\\n    return 0x8000000000000003uLL; /*0x28ea*/\\n  v9 = sub_3E50(6, 2LL * i_1 + 2); /*0x2900*/\\n  *a2 = v9; /*0x2905*/\\n  v7 = 0; /*0x290b*/\\n  if ( !v9 ) /*0x2910*/\\n    return 0x8000000000000009uLL; /*0x2971*/\\n  for ( i = 0; i < i_1; ++i ) /*0x2917*/\\n    *(_WORD *)(v9 + 2 * i) = *(unsigned __int8 *)(a1 + i + 1); /*0x291e*/\\n  *(_WORD *)(v9 + 2 * i) = 0; /*0x292a*/\\n  return v7; /*0x2988*/\\n}\",\"refs\":[{\"addr\":\"0x3e50\",\"name\":\"sub_3E50\"},{\"addr\":\"0x27e8\",\"name\":\"sub_27E8\"}]}",
  "0x2990": "Output truncated. Run: curl -o .ida-mcp/4abdb02b-4559-41c0-a488-d7e9b81c21a8.json http://127.0.0.1:13348/output/4abdb02b-4559-41c0-a488-d7e9b81c21a8.json",
  "0x35f4": "{\"addr\":\"0x35f4\",\"code\":\"__int64 sub_35F4()\\n{\\n  __int64 result; // rax\\n  __int64 v1; // rax\\n\\n  result = qword_70B8; /*0x35f8*/\\n  if ( !qword_70B8 ) /*0x3602*/\\n  {\\n    v1 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(BootServices + 320))(&unk_7010, 0, &qword_70B8); /*0x361b*/\\n    if ( v1 < 0 ) /*0x3624*/\\n    {\\n      sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v1); /*0x3635*/\\n      sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxePcdLib\\\\\\\\DxePcdLib.c\\\", 78, \\\"!EFI_ERROR (Status)\\\"); /*0x364d*/\\n    }\\n    result = qword_70B8; /*0x3652*/\\n    if ( !qword_70B8 ) /*0x365c*/\\n    {\\n      sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxePcdLib\\\\\\\\DxePcdLib.c\\\", 79, \\\"mPcd != ((void *) 0)\\\"); /*0x366f*/\\n      return qword_70B8; /*0x3674*/\\n    }\\n  }\\n  return result; /*0x367b*/\\n}\",\"refs\":[{\"addr\":\"0x70b8\",\"name\":\"qword_70B8\"},{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x7010\",\"name\":\"unk_7010\"},{\"addr\":\"0x3d5c\",\"name\":\"sub_3D5C\"},{\"addr\":\"0x5000\",\"name\":\"aAssertEfiError\",\"string\":\"\\nASSERT_EFI_ERROR (Status = %r)\\n\"},{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5820\",\"name\":\"aEHsMdepkgLibra_5\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxePcdLib\\\\DxePcdLib.c\"},{\"addr\":\"0x5028\",\"name\":\"aEfiErrorStatus\",\"string\":\"!EFI_ERROR (Status)\"},{\"addr\":\"0x5850\",\"name\":\"aMpcdVoid0\",\"string\":\"mPcd != ((void *) 0)\"}]}",
  "0x3680": "{\"addr\":\"0x3680\",\"code\":\"__int64 __fastcall sub_3680(__int64 a1, _QWORD *a2, __int64 a3)\\n{\\n  __int64 v6; // rax\\n\\n  if ( !a2 ) /*0x369b*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxePcdLib\\\\\\\\DxePcdLib.c\\\", 1000, \\\"SizeOfBuffer != ((void *) 0)\\\"); /*0x36b0*/\\n  if ( *a2 && !a3 ) /*0x36be*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxePcdLib\\\\\\\\DxePcdLib.c\\\", 1003, \\\"Buffer != ((void *) 0)\\\"); /*0x36d3*/\\n  v6 = sub_35F4(); /*0x36d8*/\\n  return (*(__int64 (__fastcall **)(__int64, _QWORD *, __int64))(v6 + 152))(a1, a2, a3);\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5820\",\"name\":\"aEHsMdepkgLibra_5\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxePcdLib\\\\DxePcdLib.c\"},{\"addr\":\"0x5868\",\"name\":\"aSizeofbufferVo\",\"string\":\"SizeOfBuffer != ((void *) 0)\"},{\"addr\":\"0x5888\",\"name\":\"aBufferVoid0\",\"string\":\"Buffer != ((void *) 0)\"},{\"addr\":\"0x35f4\",\"name\":\"sub_35F4\"}]}",
  "0x36fc": "{\"addr\":\"0x36fc\",\"code\":\"char *__fastcall sub_36FC(char *dst, char *src, unsigned __int64 count)\\n{\\n  unsigned __int64 v3; // rbp\\n\\n  v3 = count - 1; /*0x3719*/\\n  if ( count - 1 > -1 - (__int64)dst ) /*0x372f*/\\n    sub_3DDC( /*0x3742*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\CopyMemWrapper.c\\\",\\n      56,\\n      \\\"(Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)DestinationBuffer)\\\");\\n  if ( v3 > -1 - (__int64)src ) /*0x374d*/\\n    sub_3DDC( /*0x3762*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\CopyMemWrapper.c\\\",\\n      57,\\n      \\\"(Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)SourceBuffer)\\\");\\n  if ( dst == src ) /*0x376a*/\\n    return dst; /*0x376c*/\\n  else\\n    return sub_1000(dst, src, count); /*0x377a*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x58e8\",\"name\":\"aEHsMdepkgLibra_6\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\"},{\"addr\":\"0x58a0\",\"name\":\"aLength10xfffff\",\"string\":\"(Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)DestinationBuffer)\"},{\"addr\":\"0x5928\",\"name\":\"aLength10xfffff_0\",\"string\":\"(Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)SourceBuffer)\"},{\"addr\":\"0x1000\",\"name\":\"sub_1000\"}]}",
  "0x379c": "{\"addr\":\"0x379c\",\"code\":\"char *__fastcall sub_379C(char *buf, unsigned __int64 a2)\\n{\\n  if ( !a2 ) /*0x37af*/\\n    return buf; /*0x37b1*/\\n  if ( !buf ) /*0x37b9*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\ZeroMemWrapper.c\\\", 53, \\\"Buffer != ((void *) 0)\\\"); /*0x37cc*/\\n  if ( a2 > -(__int64)buf ) /*0x37da*/\\n    sub_3DDC( /*0x37ef*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\ZeroMemWrapper.c\\\",\\n      54,\\n      \\\"Length <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)Buffer + 1)\\\");\\n  return sub_1050(buf, a2); /*0x3804*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5968\",\"name\":\"aEHsMdepkgLibra_9\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\ZeroMemWrapper.c\"},{\"addr\":\"0x5888\",\"name\":\"aBufferVoid0\",\"string\":\"Buffer != ((void *) 0)\"},{\"addr\":\"0x59a8\",\"name\":\"aLength0xffffff_0\",\"string\":\"Length <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)Buffer + 1)\"},{\"addr\":\"0x1050\",\"name\":\"sub_1050\"}]}",
  "0x380c": "{\"addr\":\"0x380c\",\"code\":\"bool __fastcall sub_380C(char *src, __int64 a2)\\n{\\n  __int128 v4; // rdi\\n  __int64 v5; // rbx\\n\\n  *((_QWORD *)&v4 + 1) = ((__int64 (*)(void))sub_3CA4)(); /*0x382e*/\\n  v5 = sub_3CA4(a2); /*0x383a*/\\n  *(_QWORD *)&v4 = sub_3CA4(src + 8); /*0x3846*/\\n  return v4 == __PAIR128__(v5, sub_3CA4(a2 + 8)); /*0x386d*/\\n}\",\"refs\":[{\"addr\":\"0x3ca4\",\"name\":\"sub_3CA4\"}]}",
  "0x3874": "{\"addr\":\"0x3874\",\"code\":\"__int64 __fastcall sub_3874(_WORD *ThinkSystem_, __int16 *a2)\\n{\\n  __int64 ThinkSystem__1; // rbx\\n  __int64 ThinkSystem__2; // rax\\n\\n  ThinkSystem__1 = (__int64)ThinkSystem_; /*0x3888*/\\n  if ( !ThinkSystem_ ) /*0x388e*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 56, \\\"Destination != ((void *) 0)\\\"); /*0x38a1*/\\n  if ( (ThinkSystem__1 & 1) != 0 ) /*0x38a9*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 57, \\\"((UINTN) Destination & 0x00000001) == 0\\\"); /*0x38be*/\\n  if ( (ThinkSystem__1 - (__int64)a2) >> 1 <= (unsigned __int64)sub_394C(a2) ) /*0x38d7*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 62, \\\"(UINTN)(Destination - Source) > StrLen (Source)\\\"); /*0x38ec*/\\n  if ( ((__int64)a2 - ThinkSystem__1) >> 1 <= (unsigned __int64)sub_394C(a2) ) /*0x3905*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 63, \\\"(UINTN)(Source - Destination) > StrLen (Source)\\\"); /*0x391a*/\\n  ThinkSystem__2 = ThinkSystem__1; /*0x391f*/\\n  while ( *a2 ) /*0x3935*/\\n  {\\n    *(_WORD *)ThinkSystem__1 = *a2++; /*0x3924*/\\n    ThinkSystem__1 += 2; /*0x392b*/\\n  }\\n  *(_WORD *)ThinkSystem__1 = 0; /*0x3937*/\\n  return ThinkSystem__2; /*0x3944*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5a00\",\"name\":\"aEHsMdepkgLibra_7\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\"},{\"addr\":\"0x59e0\",\"name\":\"aDestinationVoi\",\"string\":\"Destination != ((void *) 0)\"},{\"addr\":\"0x5a28\",\"name\":\"aUintnDestinati\",\"string\":\"((UINTN) Destination & 0x00000001) == 0\"},{\"addr\":\"0x5a50\",\"name\":\"aUintnDestinati_0\",\"string\":\"(UINTN)(Destination - Source) > StrLen (Source)\"},{\"addr\":\"0x394c\",\"name\":\"sub_394C\"},{\"addr\":\"0x5a80\",\"name\":\"aUintnSourceDes\",\"string\":\"(UINTN)(Source - Destination) > StrLen (Source)\"}]}",
  "0x394c": "{\"addr\":\"0x394c\",\"code\":\"unsigned __int64 __fastcall sub_394C(_WORD *a1)\\n{\\n  _WORD *v1; // rbx\\n  unsigned __int64 n0xF4240; // rdi\\n\\n  v1 = a1; /*0x395d*/\\n  if ( !a1 ) /*0x3963*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 172, \\\"String != ((void *) 0)\\\"); /*0x3978*/\\n  if ( ((unsigned __int8)v1 & 1) != 0 ) /*0x3980*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 173, \\\"((UINTN) String & 0x00000001) == 0\\\"); /*0x3995*/\\n  n0xF4240 = 0; /*0x399a*/\\n  while ( *v1 ) /*0x39ca*/\\n  {\\n    if ( n0xF4240 >= 0xF4240 ) /*0x39a6*/\\n      sub_3DDC( /*0x39bb*/\\n        \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\",\\n        181,\\n        \\\"Length < _gPcd_FixedAtBuild_PcdMaximumUnicodeStringLength\\\");\\n    ++v1; /*0x39c0*/\\n    ++n0xF4240; /*0x39c4*/\\n  }\\n  return n0xF4240; /*0x39d9*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5a00\",\"name\":\"aEHsMdepkgLibra_7\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\"},{\"addr\":\"0x5ab0\",\"name\":\"aStringVoid0\",\"string\":\"String != ((void *) 0)\"},{\"addr\":\"0x5ac8\",\"name\":\"aUintnString0x0\",\"string\":\"((UINTN) String & 0x00000001) == 0\"},{\"addr\":\"0x5af0\",\"name\":\"aLengthGpcdFixe\",\"string\":\"Length < _gPcd_FixedAtBuild_PcdMaximumUnicodeStringLength\"}]}",
  "0x39e0": "{\"addr\":\"0x39e0\",\"code\":\"__int64 __fastcall sub_39E0(_WORD *a1, _WORD *a2)\\n{\\n  _WORD *v3; // rbx\\n\\n  v3 = a1; /*0x39f2*/\\n  if ( 2 * sub_394C(a1) == -2 ) /*0x3a05*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 252, \\\"StrSize (FirstString) != 0\\\"); /*0x3a1a*/\\n  if ( 2 * sub_394C(a2) == -2 ) /*0x3a32*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 253, \\\"StrSize (SecondString) != 0\\\"); /*0x3a47*/\\n  while ( *v3 && *v3 == *a2 ) /*0x3a51*/\\n  {\\n    ++v3; /*0x3a53*/\\n    ++a2; /*0x3a57*/\\n  }\\n  return (unsigned __int16)*v3 - (unsigned __int16)*a2; /*0x3a78*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5a00\",\"name\":\"aEHsMdepkgLibra_7\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\"},{\"addr\":\"0x5b30\",\"name\":\"aStrsizeFirstst\",\"string\":\"StrSize (FirstString) != 0\"},{\"addr\":\"0x394c\",\"name\":\"sub_394C\"},{\"addr\":\"0x5b50\",\"name\":\"aStrsizeSeconds\",\"string\":\"StrSize (SecondString) != 0\"}]}",
  "0x3a80": "{\"addr\":\"0x3a80\",\"code\":\"_BYTE *__fastcall sub_3A80(_WORD *a1, _BYTE *a2)\\n{\\n  _BYTE *v2; // rdi\\n  _BYTE *v4; // rsi\\n\\n  v2 = a2; /*0x3aa3*/\\n  if ( !a2 ) /*0x3aac*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 900, \\\"Destination != ((void *) 0)\\\"); /*0x3abd*/\\n  if ( 2 * sub_394C(a1) == -2 ) /*0x3ad5*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 906, \\\"StrSize (Source) != 0\\\"); /*0x3ae6*/\\n  if ( v2 - (_BYTE *)a1 < 2 * sub_394C(a1) + 2 ) /*0x3b04*/\\n    sub_3DDC( /*0x3b15*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\",\\n      911,\\n      \\\"(UINTN) (Destination - (CHAR8 *) Source) >= StrSize (Source)\\\");\\n  if ( (char *)a1 - v2 <= sub_394C(a1) ) /*0x3b2b*/\\n    sub_3DDC( /*0x3b3c*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\",\\n      912,\\n      \\\"(UINTN) ((CHAR8 *) Source - Destination) > StrLen (Source)\\\");\\n  v4 = v2; /*0x3b41*/\\n  while ( *a1 ) /*0x3b75*/\\n  {\\n    if ( *a1 >= 0x100u ) /*0x3b4e*/\\n      sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 921, \\\"*Source < 0x100\\\"); /*0x3b5f*/\\n    *v2++ = *(_BYTE *)a1++; /*0x3b66*/\\n  }\\n  *v2 = 0; /*0x3b7a*/\\n  if ( sub_3BBC(v4) == -1 ) /*0x3b86*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 931, \\\"AsciiStrSize (ReturnValue) != 0\\\"); /*0x3b97*/\\n  return v4; /*0x3bb3*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5a00\",\"name\":\"aEHsMdepkgLibra_7\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\"},{\"addr\":\"0x59e0\",\"name\":\"aDestinationVoi\",\"string\":\"Destination != ((void *) 0)\"},{\"addr\":\"0x5b90\",\"name\":\"aStrsizeSource0\",\"string\":\"StrSize (Source) != 0\"},{\"addr\":\"0x394c\",\"name\":\"sub_394C\"},{\"addr\":\"0x5ba8\",\"name\":\"aUintnDestinati_1\",\"string\":\"(UINTN) (Destination - (CHAR8 *) Source) >= StrSize (Source)\"},{\"addr\":\"0x5be8\",\"name\":\"aUintnChar8Sour\",\"string\":\"(UINTN) ((CHAR8 *) Source - Destination) > StrLen (Source)\"},{\"addr\":\"0x5c28\",\"name\":\"aSource0x100\",\"string\":\"*Source < 0x100\"},{\"addr\":\"0x5c38\",\"name\":\"aAsciistrsizeRe\",\"string\":\"AsciiStrSize (ReturnValue) != 0\"},{\"addr\":\"0x3bbc\",\"name\":\"sub_3BBC\"}]}",
  "0x3bbc": "{\"addr\":\"0x3bbc\",\"code\":\"unsigned __int64 __fastcall sub_3BBC(_BYTE *a1)\\n{\\n  _BYTE *v1; // rbx\\n  unsigned __int64 i; // rdi\\n\\n  v1 = a1; /*0x3bc6*/\\n  if ( !a1 ) /*0x3bcc*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\", 1082, \\\"String != ((void *) 0)\\\"); /*0x3be1*/\\n  for ( i = 0; *v1; ++i ) /*0x3be8*/\\n  {\\n    if ( i >= 0xF4240 ) /*0x3bf4*/\\n      sub_3DDC( /*0x3c09*/\\n        \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\String.c\\\",\\n        1090,\\n        \\\"Length < _gPcd_FixedAtBuild_PcdMaximumAsciiStringLength\\\");\\n    ++v1; /*0x3c0e*/\\n  }\\n  return i; /*0x3c21*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5a00\",\"name\":\"aEHsMdepkgLibra_7\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\"},{\"addr\":\"0x5ab0\",\"name\":\"aStringVoid0\",\"string\":\"String != ((void *) 0)\"},{\"addr\":\"0x5c58\",\"name\":\"aLengthGpcdFixe_0\",\"string\":\"Length < _gPcd_FixedAtBuild_PcdMaximumAsciiStringLength\"}]}",
  "0x3c28": "{\"addr\":\"0x3c28\",\"code\":\"char __fastcall sub_3C28(__int64 p_n3, unsigned __int64 n8)\\n{\\n  char v2; // bl\\n  unsigned __int64 i; // rax\\n\\n  v2 = 0; /*0x3c37*/\\n  if ( !p_n3 ) /*0x3c42*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\CheckSum.c\\\", 46, \\\"Buffer != ((void *) 0)\\\"); /*0x3c55*/\\n  if ( n8 > -p_n3 ) /*0x3c63*/\\n    sub_3DDC( /*0x3c78*/\\n      \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\CheckSum.c\\\",\\n      47,\\n      \\\"Length <= (0xFFFFFFFFFFFFFFFFULL - ((UINTN) Buffer) + 1)\\\");\\n  for ( i = 0; i < n8; ++i ) /*0x3c83*/\\n    v2 += *(_BYTE *)(i + p_n3); /*0x3c85*/\\n  return -v2; /*0x3c9e*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5c90\",\"name\":\"aEHsMdepkgLibra_8\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\CheckSum.c\"},{\"addr\":\"0x5888\",\"name\":\"aBufferVoid0\",\"string\":\"Buffer != ((void *) 0)\"},{\"addr\":\"0x5cb8\",\"name\":\"aLength0xffffff\",\"string\":\"Length <= (0xFFFFFFFFFFFFFFFFULL - ((UINTN) Buffer) + 1)\"}]}",
  "0x3ca4": "{\"addr\":\"0x3ca4\",\"code\":\"__int64 __fastcall sub_3CA4(__int64 a1)\\n{\\n  if ( !a1 ) /*0x3cb0*/\\n    sub_3DDC(\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseLib\\\\\\\\Unaligned.c\\\", 192, \\\"Buffer != ((void *) 0)\\\"); /*0x3cc5*/\\n  return *(_QWORD *)a1; /*0x3ccd*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5cf8\",\"name\":\"aEHsMdepkgLibra_11\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\"},{\"addr\":\"0x5888\",\"name\":\"aBufferVoid0\",\"string\":\"Buffer != ((void *) 0)\"}]}",
  "0x3cd4": "{\"addr\":\"0x3cd4\",\"code\":\"__int64 sub_3CD4()\\n{\\n  __int64 result; // rax\\n  unsigned __int64 n0x10; // rbx\\n  __int64 v2; // rax\\n  __int64 v3; // rcx\\n\\n  result = qword_70E0; /*0x3cde*/\\n  if ( !qword_70E0 ) /*0x3cea*/\\n  {\\n    if ( BootServices_0 /*0x3d18*/\\n      && (n0x10 = (*(__int64 (__fastcall **)(__int64))(BootServices_0 + 24))(31),\\n          (*(void (__fastcall **)(unsigned __int64))(BootServices_0 + 32))(n0x10),\\n          n0x10 <= 0x10) )\\n    {\\n      v2 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(BootServices_0 + 320))(&unk_7000, 0, &qword_70E0); /*0x3d31*/\\n      v3 = qword_70E0; /*0x3d37*/\\n      if ( v2 < 0 ) /*0x3d41*/\\n        v3 = 0; /*0x3d41*/\\n      qword_70E0 = v3; /*0x3d45*/\\n      return v3; /*0x3d4c*/\\n    }\\n    else\\n    {\\n      return 0; /*0x3cf8*/\\n    }\\n  }\\n  return result; /*0x3d54*/\\n}\",\"refs\":[{\"addr\":\"0x70e0\",\"name\":\"qword_70E0\"},{\"addr\":\"0x70d8\",\"name\":\"BootServices_0\"},{\"addr\":\"0x7000\",\"name\":\"unk_7000\"}]}",
  "0x3d5c": "{\"addr\":\"0x3d5c\",\"code\":\"__int64 sub_3D5C(__int64 a1, const char *a2, ...)\\n{\\n  __int64 result; // rax\\n  __int64 v4; // r8\\n  __int64 (__fastcall **v5)(__int64, const char *, __int64 *); // r9\\n  unsigned __int8 v6; // al\\n  unsigned __int8 n3; // al\\n  int n113; // edx\\n  va_list va; // [rsp+40h] [rbp+18h] BYREF\\n\\n  va_start(va, a2);\\n  result = sub_3CD4(); /*0x3d73*/\\n  v4 = 0; /*0x3d78*/\\n  v5 = (__int64 (__fastcall **)(__int64, const char *, __int64 *))result; /*0x3d7b*/\\n  if ( result ) /*0x3d81*/\\n  {\\n    v6 = __inbyte(0x70u); /*0x3d87*/\\n    __outbyte(0x70u, v6 & 0x80 | 0x4B); /*0x3d8c*/\\n    n113 = 113; /*0x3d8d*/\\n    n3 = __inbyte(0x71u); /*0x3d91*/\\n    LOBYTE(n113) = n3; /*0x3d92*/\\n    if ( n3 > 3u ) /*0x3d96*/\\n    {\\n      n113 = 3; /*0x3d9f*/\\n      if ( n113 ) /*0x3da5*/\\n        n113 = (unsigned __int8)n113; /*0x3da5*/\\n    }\\n    result = (unsigned int)(n113 - 1); /*0x3da8*/\\n    if ( (unsigned __int8)(n113 - 1) <= 0xFDu ) /*0x3dad*/\\n    {\\n      result = 2147483652LL; /*0x3db2*/\\n      v4 = 2147483718LL; /*0x3db7*/\\n      if ( (_BYTE)n113 == 1 ) /*0x3dbd*/\\n        v4 = 2147483652LL; /*0x3dbd*/\\n    }\\n    if ( (v4 & a1) != 0 ) /*0x3dc4*/\\n      return (*v5)(a1, a2, (__int64 *)va); /*0x3dd3*/\\n  }\\n  return result; /*0x3dd6*/\\n}\",\"refs\":[{\"addr\":\"0x3cd4\",\"name\":\"sub_3CD4\"},{\"addr\":\"0x7128\",\"name\":\"n113\"}]}",
  "0x3ddc": "{\"addr\":\"0x3ddc\",\"code\":\"__int64 __fastcall sub_3DDC(__int64 a1, __int64 a2, __int64 a3)\\n{\\n  __int64 result; // rax\\n\\n  result = sub_3CD4(); /*0x3df4*/\\n  if ( result ) /*0x3dfc*/\\n    return (*(__int64 (__fastcall **)(__int64, __int64, __int64))(result + 8))(a1, a2, a3); /*0x3e07*/\\n  return result; /*0x3e14*/\\n}\",\"refs\":[{\"addr\":\"0x3cd4\",\"name\":\"sub_3CD4\"}]}",
  "0x3e1c": "{\"addr\":\"0x3e1c\",\"code\":\"void sub_3E1C()\\n{\\n  BootServices_0 = 0; /*0x3e1c*/\\n}\",\"refs\":[{\"addr\":\"0x70d8\",\"name\":\"BootServices_0\"}]}",
  "0x3e28": "{\"addr\":\"0x3e28\",\"code\":\"__int64 sub_3E28()\\n{\\n  __int64 result; // rax\\n\\n  if ( qword_70E0 ) /*0x3e34*/\\n    return (*(__int64 (__fastcall **)(_QWORD, __int64 *))(RuntimeServices_0 + 64))(0, &qword_70E0); /*0x3e46*/\\n  return result; /*0x3e49*/\\n}\",\"refs\":[{\"addr\":\"0x70c0\",\"name\":\"RuntimeServices_0\"},{\"addr\":\"0x70e0\",\"name\":\"qword_70E0\"}]}",
  "0x3e50": "{\"addr\":\"0x3e50\",\"code\":\"char *__fastcall sub_3E50(__int64 a1, unsigned __int64 a2)\\n{\\n  __int64 v3; // rax\\n  char *buf; // rcx\\n  char *buf_1; // [rsp+40h] [rbp+18h] BYREF\\n\\n  v3 = (*(__int64 (__fastcall **)(__int64, unsigned __int64, char **))(BootServices + 64))(a1, a2, &buf_1); /*0x3e65*/\\n  buf = buf_1; /*0x3e68*/\\n  if ( v3 < 0 ) /*0x3e72*/\\n    buf = 0; /*0x3e72*/\\n  buf_1 = buf; /*0x3e76*/\\n  if ( buf ) /*0x3e7e*/\\n    return sub_379C(buf, a2); /*0x3e88*/\\n  return buf; /*0x3e8e*/\\n}\",\"refs\":[{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x379c\",\"name\":\"sub_379C\"}]}",
  "0x3e94": "{\"addr\":\"0x3e94\",\"code\":\"__int64 sub_3E94()\\n{\\n  __int64 result; // rax\\n\\n  result = (*(__int64 (**)(void))(BootServices + 72))(); /*0x3e9f*/\\n  if ( result < 0 ) /*0x3ea5*/\\n  {\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", result); /*0x3eb6*/\\n    return sub_3DDC( /*0x3ece*/\\n             (__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiMemoryAllocationLib\\\\\\\\MemoryAllocationLib.c\\\",\\n             819,\\n             (__int64)\\\"!EFI_ERROR (Status)\\\");\\n  }\\n  return result; /*0x3ed3*/\\n}\",\"refs\":[{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x3d5c\",\"name\":\"sub_3D5C\"},{\"addr\":\"0x5000\",\"name\":\"aAssertEfiError\",\"string\":\"\\nASSERT_EFI_ERROR (Status = %r)\\n\"},{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5d30\",\"name\":\"aEHsMdepkgLibra_10\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiMemoryAllocationLib\\\\MemoryAllocationLib.c\"},{\"addr\":\"0x5028\",\"name\":\"aEfiErrorStatus\",\"string\":\"!EFI_ERROR (Status)\"}]}",
  "0x3ed8": "{\"addr\":\"0x3ed8\",\"code\":\"unsigned __int64 __fastcall sub_3ED8(char *src, _QWORD *a2)\\n{\\n  __int64 SystemTable; // rdi\\n  __int64 v5; // rbx\\n  __int64 i; // r14\\n\\n  if ( !src ) /*0x3efa*/\\n    sub_3DDC((__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiLib\\\\\\\\UefiLib.c\\\", 97, (__int64)\\\"TableGuid != ((void *) 0)\\\"); /*0x3f0d*/\\n  if ( !a2 ) /*0x3f15*/\\n    sub_3DDC((__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\UefiLib\\\\\\\\UefiLib.c\\\", 98, (__int64)\\\"Table != ((void *) 0)\\\"); /*0x3f28*/\\n  SystemTable = SystemTable; /*0x3f2d*/\\n  v5 = 0; /*0x3f34*/\\n  *a2 = 0; /*0x3f36*/\\n  if ( !*(_QWORD *)(SystemTable + 104) ) /*0x3f3a*/\\n    return 0x800000000000000EuLL; /*0x3f63*/\\n  for ( i = 0; !sub_380C(src, i + *(_QWORD *)(SystemTable + 112)); i += 24 ) /*0x3f40*/\\n  {\\n    if ( (unsigned __int64)++v5 >= *(_QWORD *)(SystemTable + 104) ) /*0x3f61*/\\n      return 0x800000000000000EuLL; /*0x3f61*/\\n  }\\n  *a2 = *(_QWORD *)(*(_QWORD *)(SystemTable + 112) + 24 * v5 + 16); /*0x3f97*/\\n  return 0; /*0x3f81*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5d98\",\"name\":\"aEHsMdepkgLibra_4\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiLib\\\\UefiLib.c\"},{\"addr\":\"0x5d78\",\"name\":\"aTableguidVoid0\",\"string\":\"TableGuid != ((void *) 0)\"},{\"addr\":\"0x5dc0\",\"name\":\"aTableVoid0\",\"string\":\"Table != ((void *) 0)\"},{\"addr\":\"0x7098\",\"name\":\"SystemTable\"},{\"addr\":\"0x380c\",\"name\":\"sub_380C\"}]}",
  "0x3f9c": "{\"addr\":\"0x3f9c\",\"code\":\"__int64 sub_3F9C()\\n{\\n  __int64 result; // rax\\n  signed __int64 v1; // rax\\n\\n  result = qword_70E8; /*0x3fa0*/\\n  if ( !qword_70E8 ) /*0x3faa*/\\n  {\\n    v1 = sub_3ED8(&asc_7050, &qword_70E8); // \\\"L\\\" /*0x3fba*/\\n    if ( v1 < 0 ) /*0x3fc2*/\\n    {\\n      sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v1); /*0x3fd3*/\\n      sub_3DDC((__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeHobLib\\\\\\\\HobLib.c\\\", 54, (__int64)\\\"!EFI_ERROR (Status)\\\"); /*0x3feb*/\\n    }\\n    result = qword_70E8; /*0x3ff0*/\\n    if ( !qword_70E8 ) /*0x3ffa*/\\n    {\\n      sub_3DDC((__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeHobLib\\\\\\\\HobLib.c\\\", 55, (__int64)\\\"mHobList != ((void *) 0)\\\"); /*0x400d*/\\n      return qword_70E8; /*0x4012*/\\n    }\\n  }\\n  return result; /*0x4019*/\\n}\",\"refs\":[{\"addr\":\"0x70e8\",\"name\":\"qword_70E8\"},{\"addr\":\"0x3ed8\",\"name\":\"sub_3ED8\"},{\"addr\":\"0x7050\",\"name\":\"asc_7050\",\"string\":\"L\"},{\"addr\":\"0x3d5c\",\"name\":\"sub_3D5C\"},{\"addr\":\"0x5000\",\"name\":\"aAssertEfiError\",\"string\":\"\\nASSERT_EFI_ERROR (Status = %r)\\n\"},{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5dd8\",\"name\":\"aEHsMdepkgLibra_12\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxeHobLib\\\\HobLib.c\"},{\"addr\":\"0x5028\",\"name\":\"aEfiErrorStatus\",\"string\":\"!EFI_ERROR (Status)\"},{\"addr\":\"0x5e00\",\"name\":\"aMhoblistVoid0\",\"string\":\"mHobList != ((void *) 0)\"}]}",
  "0x4020": "{\"addr\":\"0x4020\",\"code\":\"void nullsub_1()\\n{\\n  ; /*0x4020*/\\n}\"}",
  "0x4024": "{\"addr\":\"0x4024\",\"code\":\"__int64 sub_4024()\\n{\\n  __int64 result; // rax\\n\\n  result = (*(__int64 (__fastcall **)(_QWORD, __int64 *))(RuntimeServices + 64))(0, &RuntimeServices_1); /*0x4038*/\\n  byte_70F0 = 1; /*0x403b*/\\n  return result; /*0x4042*/\\n}\",\"refs\":[{\"addr\":\"0x70b0\",\"name\":\"RuntimeServices\"},{\"addr\":\"0x7138\",\"name\":\"RuntimeServices_1\"},{\"addr\":\"0x70f0\",\"name\":\"byte_70F0\"}]}",
  "0x4048": "{\"addr\":\"0x4048\",\"code\":\"__int64 sub_4048()\\n{\\n  __int64 result; // rax\\n  unsigned __int64 v1; // rbx\\n  __int64 v2; // rdi\\n\\n  result = qword_7100; /*0x4052*/\\n  v1 = 0; /*0x4059*/\\n  if ( qword_7100 ) /*0x405e*/\\n  {\\n    if ( qword_7108 ) /*0x4067*/\\n    {\\n      v2 = 0; /*0x4069*/\\n      while ( 1 ) /*0x407b*/\\n      {\\n        (*(void (__fastcall **)(_QWORD, __int64))(RuntimeServices + 64))(0, v2 + result + 8); /*0x407b*/\\n        ++v1; /*0x407e*/\\n        v2 += 16; /*0x4081*/\\n        if ( v1 >= qword_7108 ) /*0x408c*/\\n          break; /*0x408c*/\\n        result = qword_7100; /*0x408e*/\\n      }\\n    }\\n    return (*(__int64 (__fastcall **)(_QWORD, __int64 *))(RuntimeServices + 64))(0, &qword_7100); /*0x40a7*/\\n  }\\n  return result; /*0x40af*/\\n}\",\"refs\":[{\"addr\":\"0x7100\",\"name\":\"qword_7100\"},{\"addr\":\"0x70b0\",\"name\":\"RuntimeServices\"},{\"addr\":\"0x7108\",\"name\":\"qword_7108\"}]}",
  "0x40b8": "{\"addr\":\"0x40b8\",\"code\":\"__int64 __fastcall sub_40B8(__int64 n1024064)\\n{\\n  __int64 v2; // rbx\\n  unsigned __int64 v3; // rax\\n  _QWORD *v4; // rcx\\n\\n  if ( (n1024064 & 0xFFFFFFFFF0000000uLL) != 0 ) /*0x40c8*/\\n    sub_3DDC( /*0x40dd*/\\n      (__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeRuntimePciExpressLib\\\\\\\\PciExpressLib.c\\\",\\n      203,\\n      (__int64)\\\"((Address) & ~0xfffffff) == 0\\\");\\n  v2 = qword_7110 + n1024064; /*0x40e2*/\\n  v3 = 0; /*0x40e9*/\\n  if ( byte_70F0 ) /*0x40f1*/\\n  {\\n    if ( *(_QWORD *)(qword_7100 + 16 * qword_7118) == (v2 & 0xFFFFFFFFFFFFF000uLL) ) /*0x4112*/\\n    {\\n      return *(_QWORD *)(qword_7100 + 16 * qword_7118 + 8) + (v2 & 0xFFF); /*0x411a*/\\n    }\\n    else\\n    {\\n      if ( !qword_7108 ) /*0x412b*/\\n      {\\nLABEL_10:\\n        sub_3DDC( /*0x4141*/\\n          (__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\DxeRuntimePciExpressLib\\\\\\\\PciExpressLib.c\\\",\\n          246,\\n          (__int64)\\\"((BOOLEAN)(0==1))\\\");\\n        __debugbreak(); /*0x4159*/\\n      }\\n      v4 = (_QWORD *)qword_7100; /*0x412d*/\\n      while ( *v4 != (v2 & 0xFFFFFFFFFFFFF000uLL) ) /*0x4133*/\\n      {\\n        ++v3; /*0x4135*/\\n        v4 += 2; /*0x4138*/\\n        if ( v3 >= qword_7108 ) /*0x413f*/\\n          goto LABEL_10; /*0x413f*/\\n      }\\n      qword_7118 = v3; /*0x4163*/\\n      return *(_QWORD *)(qword_7100 + 16 * v3 + 8) + (v2 & 0xFFF); /*0x4173*/\\n    }\\n  }\\n  return v2; /*0x415d*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5ec8\",\"name\":\"aEHsMdepkgLibra_3\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxeRuntimePciExpressLib\\\\PciExpressLib.c\"},{\"addr\":\"0x5f08\",\"name\":\"aAddress0xfffff\",\"string\":\"((Address) & ~0xfffffff) == 0\"},{\"addr\":\"0x7110\",\"name\":\"qword_7110\"},{\"addr\":\"0x7100\",\"name\":\"qword_7100\"},{\"addr\":\"0x7118\",\"name\":\"qword_7118\"},{\"addr\":\"0x5e20\",\"name\":\"aBoolean01\",\"string\":\"((BOOLEAN)(0==1))\"},{\"addr\":\"0x7108\",\"name\":\"qword_7108\"},{\"addr\":\"0x70f0\",\"name\":\"byte_70F0\"}]}",
  "0x417c": "{\"addr\":\"0x417c\",\"code\":\"__int64 __fastcall sub_417C(unsigned int n107386)\\n{\\n  unsigned int v1; // ebx\\n  int n0x400000; // edi\\n  int v3; // esi\\n  __int64 result; // rax\\n\\n  v1 = n107386 >> 22; /*0x4194*/\\n  n0x400000 = n107386 & 0x3FFFFF; /*0x419c*/\\n  do /*0x41d8*/\\n  {\\n    v3 = n0x400000 + (sub_437C(1288) & 0xFFFFFF); /*0x41b2*/\\n    n0x400000 = 0x400000; /*0x41b4*/\\n    while ( ((v3 - (unsigned int)sub_437C(1288)) & 0x800000) == 0 ) /*0x41d0*/\\n      mm_pause_w(); /*0x41bb*/\\n    result = v1--; /*0x41d2*/\\n  }\\n  while ( (_DWORD)result ); /*0x41d8*/\\n  return result; /*0x41e9*/\\n}\",\"refs\":[{\"addr\":\"0x437c\",\"name\":\"sub_437C\"},{\"addr\":\"0x10d0\",\"name\":\"_mm_pause_w\"}]}",
  "0x41f0": "{\"addr\":\"0x41f0\",\"code\":\"__int64 __fastcall sub_41F0(unsigned __int16 a1, __int64 a2, double a3)\\n{\\n  __int64 v4; // rax\\n  __int64 v5; // rdi\\n  __int64 n62; // rdx\\n  __int64 v7; // rax\\n  __int64 v8; // rax\\n  char v10; // [rsp+58h] [rbp+10h] BYREF\\n  char v11; // [rsp+59h] [rbp+11h]\\n  unsigned __int8 v12; // [rsp+5Ah] [rbp+12h]\\n  __int64 v13; // [rsp+60h] [rbp+18h] BYREF\\n  __int64 n5; // [rsp+68h] [rbp+20h] BYREF\\n\\n  v13 = 0; /*0x41f8*/\\n  sub_3D5C(64, \\\"%a: Start\\\\n\\\", a3);\\n  v4 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(BootServices + 320))(&unk_7030, 0, &v13); /*0x422e*/\\n  v5 = v4; /*0x4234*/\\n  if ( v4 >= 0 )\\n  {\\n    n5 = 5; /*0x4279*/\\n    while ( 1 )\\n    {\\n      v7 = (*(__int64 (__fastcall **)(__int64, _QWORD, _QWORD, __int64 *, char *))(v13 + 16))(v13, 0, a1, &n5, &v10); /*0x429b*/\\n      v5 = v7; /*0x429e*/\\n      if ( v7 < 0 ) /*0x42a4*/\\n        break; /*0x42a4*/\\n      if ( v10 == -64 )\\n      {\\n        v8 = sub_35F4(); /*0x42c1*/\\n        (*(void (__fastcall **)(__int64, _QWORD))(v8 + 128))(189, a1); /*0x42ce*/\\n        v5 = a1; /*0x42e4*/\\n        sub_3D5C(64, \\\"Misc Area offset: %x \\\\n\\\", a1);\\n        return v5; /*0x42ec*/\\n      }\\n      a1 += v12 + 5; /*0x42b5*/\\n      if ( v11 < 0 ) /*0x42bd*/\\n        return v5; /*0x42bd*/\\n    }\\n    sub_3D5C(0x80000000LL, \\\"%a: Failed to get FRU data[0x%x]. Status = %r\\\\n\\\", \\\"UpdateMiscOffsetPcd\\\", a1, v7);\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v5); /*0x431d*/\\n    n62 = 62; /*0x4322*/\\n  }\\n  else\\n  {\\n    sub_3D5C(0x80000000LL, \\\"%a: Failed to locate EfiRedirFruProtocol. Status = %r\\\\n\\\", \\\"UpdateMiscOffsetPcd\\\", v4);\\n    sub_3D5C(0x80000000LL, \\\"\\\\nASSERT_EFI_ERROR (Status = %r)\\\\n\\\", v5); /*0x4265*/\\n    n62 = 47; /*0x426a*/\\n  }\\n  sub_3DDC( /*0x4335*/\\n    (__int64)\\\"e:\\\\\\\\hs\\\\\\\\LenovoPlatformPkg\\\\\\\\Library\\\\\\\\OemMiscOffsetDxeLib\\\\\\\\OemMiscOffsetDxeLib.c\\\",\\n    n62,\\n    (__int64)\\\"!EFI_ERROR (Status)\\\");\\n  return v5; /*0x433d*/\\n}\",\"refs\":[{\"addr\":\"0x3d5c\",\"name\":\"sub_3D5C\"},{\"addr\":\"0x5f40\",\"name\":\"aAStart\",\"string\":\"%a: Start\\n\"},{\"addr\":\"0x70a0\",\"name\":\"BootServices\"},{\"addr\":\"0x7030\",\"name\":\"unk_7030\"},{\"addr\":\"0x35f4\",\"name\":\"sub_35F4\"},{\"addr\":\"0x6010\",\"name\":\"aMiscAreaOffset\",\"string\":\"Misc Area offset: %x \\n\"},{\"addr\":\"0x5fe0\",\"name\":\"aAFailedToGetFr\",\"string\":\"%a: Failed to get FRU data[0x%x]. Status = %r\\n\"},{\"addr\":\"0x5f28\",\"name\":\"aUpdatemiscoffs\",\"string\":\"UpdateMiscOffsetPcd\"},{\"addr\":\"0x5000\",\"name\":\"aAssertEfiError\",\"string\":\"\\nASSERT_EFI_ERROR (Status = %r)\\n\"},{\"addr\":\"0x5f50\",\"name\":\"aAFailedToLocat\",\"string\":\"%a: Failed to locate EfiRedirFruProtocol. Status = %r\\n\"},{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x5f90\",\"name\":\"aEHsLenovoplatf\",\"string\":\"e:\\\\hs\\\\LenovoPlatformPkg\\\\Library\\\\OemMiscOffsetDxeLib\\\\OemMiscOffsetDxeLib.c\"},{\"addr\":\"0x5028\",\"name\":\"aEfiErrorStatus\",\"string\":\"!EFI_ERROR (Status)\"}]}",
  "0x4348": "{\"addr\":\"0x4348\",\"code\":\"__int64 __fastcall sub_4348(_WORD *a1)\\n{\\n  if ( ((unsigned __int8)a1 & 1) != 0 ) /*0x4354*/\\n    sub_3DDC((__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseIoLibIntrinsic\\\\\\\\IoLib.c\\\", 183, (__int64)\\\"(Address & 1) == 0\\\"); /*0x4369*/\\n  *a1 = 1280; /*0x4373*/\\n  return 1280; /*0x4376*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x6028\",\"name\":\"aEHsMdepkgLibra_13\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseIoLibIntrinsic\\\\IoLib.c\"},{\"addr\":\"0x6058\",\"name\":\"aAddress10\",\"string\":\"(Address & 1) == 0\"}]}",
  "0x437c": "{\"addr\":\"0x437c\",\"code\":\"unsigned __int32 __fastcall sub_437C(unsigned __int16 n1288)\\n{\\n  if ( (n1288 & 3) != 0 ) /*0x4388*/\\n    sub_3DDC((__int64)\\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseIoLibIntrinsic\\\\\\\\IoLibMsc.c\\\", 193, (__int64)\\\"(Port & 3) == 0\\\"); /*0x439d*/\\n  return __indword(n1288); /*0x43a6*/\\n}\",\"refs\":[{\"addr\":\"0x3ddc\",\"name\":\"sub_3DDC\"},{\"addr\":\"0x6070\",\"name\":\"aEHsMdepkgLibra_14\",\"string\":\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseIoLibIntrinsic\\\\IoLibMsc.c\"},{\"addr\":\"0x60a8\",\"name\":\"aPort30\",\"string\":\"(Port & 3) == 0\"}]}"
}