{
"0x1000": "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": "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}",
"0x10e0": "unsigned __int64 sub_10E0()\n{\n return __rdtsc(); /*0x10e9*/\n}",
"0x1110": "unsigned __int64 sub_1110()\n{\n return __getcallerseflags(); /*0x1112*/\n}",
"0x1114": "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}",
"0x113c": "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,\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_40B88) >= 0) /*0x14b6*/\n {\n v13 = sub_40B84); /*0x14bb*/\n sub_4348(v13); /*0x14c3*/\n v14 = (_BYTE *)sub_40B88); /*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) & 0xFFFFFF; /*0x14f7*/\n _rdtsc_w(); /*0x14fd*/\n for (i = sub_437C); (((_DWORD)v17 + 357 - i) & 0x800000) == 0; i = sub_437C)) /*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}",
"0x1558": "__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}",
"0x16e0": "__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}",
"0x1754": "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}",
"0x181c": "__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}",
"0x18c8": "__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); /*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}",
"0x1a50": "__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); /*0x1b23*/\n }\n }\n else\n {\nLABEL_13:\n result = 0; /*0x1b50*/\n }\n *(_QWORD *)v5 = v8; /*0x1b53*/\n return result; /*0x1b5e*/\n}",
"0x1b88": "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}",
"0x2724": "__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}",
"0x27e8": "_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 har v10; // al\n unsigned __int64 v11; // rbx\n unsigned int v12; // r11d\n unsigned __int64 v13; // r8\n _WORD *v14; // rdx\n har v15; // al\n\nv4 = 0;\nif (i / 3)\n {\nv5 =;\nv6 =;\nv7 = i / 3;\nv4 = i / 3;\ndo\n {\nv8 = *v6;\nn4 = 4;\ndo\n {\nv10 = v8;\nv8 >>= 6;\n*v5++ = (v10 & 0x3F) + 32;\n--n4;\n }\nwhile (n4);\nv6 = (unsigned int *)((char *)v6 + 3);\n--v7;\n }\nwhile (v7);\n }\nv11 = 0;\nv12 = *(unsigned int *)((char *) + 2 * v4 + v4);\nv13 = i % 3;\nif (v13)\n {\nv14 = &[4 * v4];\nv11 = v13;\ndo\n {\nv15 = v12;\nv12 >>= 6;\n*v14++ = (v15 & 0x3F) + 32;\n--v13;\n }\nwhile (v13);\n }\n[4 * v4 + v11] = 0;\nreturn;\n}",
"0x28b8": "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)8LL * 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}",
"0x35f4": "__int64 sub_35F4()\n{\n __int64 result; // rax\n __int64 v1; // rax\n\nresult = qword_70B8;\nif (!qword_70B8)\n {\nv1 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(ootServices + 320))(&unk_7010, 0, &qword_70B8);\nif (v1 < 0)\n {\nsub_3D5C(0x80000000LL, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v1);\nsub_3DDC(\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxePcdLib\\\\DxePcdLib.c\", 78, \"!EFI_ERROR (Status)\");\n }\nresult = qword_70B8;\nif (!qword_70B8)\n {\nsub_3DDC(\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxePcdLib\\\\DxePcdLib.c\", 79, \"mPcd!= ((void *) 0)\");\nreturn qword_70B8;\n }\n }\nreturn result;\n}",
"0x3680": "__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}",
"0x36fc": "char *__fastcall sub_36FC(char *dst, char *src, unsigned __int64 count)\n{\n unsigned __int64 v3; // rbp\n\nv3 = ount - 1;\nif (ount - 1 > -1 - (__int64)st)\nsub_3DDC(\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 56,\n \"(Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)DestinationBuffer)\");\nif (v3 > -1 - (__int64)src)\nsub_3DDC(\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 57,\n \"(Length - 1) <= (0xFFFFFFFFFFFFFFFFULL - (UINTN)SourceBuffer)\");\nif (st == src)\nreturn st;\n else\nreturn sub_1000(st, src, ount);\n}",
"0x379c": "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}",
"0x380c": "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}",
"0x3874": "__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}",
"0x394c": "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}",
"0x39e0": "__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}",
"0x3a80": "_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}",
"0x3bbc": "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}",
"0x3c28": "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}",
"0x3ca4": "__int64 __fastcall sub_3CA4(__int64 a1)\n{\nif (!)\nsub_3DDC(\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\", 192, \"Buffer!= ((void *) 0)\");\nreturn *(_QWORD *);\n}",
"0x3cd4": "__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}",
"0x3d5c": "__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}",
"0x3ddc": "__int64 __fastcall sub_3DDC(__int64 a1, __int64 a2, __int64 a3)\n{\n __int64 result; // rax\n\nresult = sub_3CD4();\nif (result)\nreturn (*(__int64 (__fastcall **)(__int64, __int64, __int64))(result + 8))(,,);\nreturn result;\n}",
"0x3e1c": "void sub_3E1C()\n{\n BootServices_0 = 0; /*0x3e1c*/\n}",
"0x3e28": "__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}",
"0x3e50": "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}",
"0x3e94": "__int64 sub_3E94()\n{\n __int64 result; // rax\n\nresult = (*(__int64 (**)(void))(ootServices + 72))();\nif (result < 0)\n {\nsub_3D5C(0x80000000LL, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", result);\nreturn sub_3DDC(\n (__int64)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\UefiMemoryAllocationLib\\\\MemoryAllocationLib.c\",\n 819,\n (__int64)\"!EFI_ERROR (Status)\");\n }\nreturn result;\n}",
"0x3ed8": "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}",
"0x3f9c": "__int64 sub_3F9C()\n{\n __int64 result; // rax\n signed __int64 v1; // rax\n\nresult = qword_70E8;\nif (!qword_70E8)\n {\nv1 = sub_3ED8(&sc_7050, &qword_70E8); // \"L\"\nif (v1 < 0)\n {\nsub_3D5C(0x80000000LL, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v1);\nsub_3DDC((__int64)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxeHobLib\\\\HobLib.c\", 54, (__int64)\"!EFI_ERROR (Status)\");\n }\nresult = qword_70E8;\nif (!qword_70E8)\n {\nsub_3DDC((__int64)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\DxeHobLib\\\\HobLib.c\", 55, (__int64)\"mHobList!= ((void *) 0)\");\nreturn qword_70E8;\n }\n }\nreturn result;\n}",
"0x4024": "__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}",
"0x4048": "__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}",
"0x40b8": "__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}",
"0x417c": "__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) & 0xFFFFFF); /*0x41b2*/\n n0x400000 = 0x400000; /*0x41b4*/\n while (((v3 - (unsigned int)sub_437C)) & 0x800000) == 0) /*0x41d0*/\n mm_pause_w(); /*0x41bb*/\n result = v1--; /*0x41d2*/\n }\n while ((_DWORD)result); /*0x41d8*/\n return result; /*0x41e9*/\n}",
"0x41f0": "__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}",
"0x4348": "__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}",
"0x437c": "unsigned __int32 __fastcall sub_437C(unsigned __int16 n1288)\n{\nif ((n1288 & 3)!= 0)\nsub_3DDC((__int64)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseIoLibIntrinsic\\\\IoLibMsc.c\", 193, (__int64)\"(Port & 3) == 0\");\nreturn __indword(n1288);\n}",
"0x1d38": "char __fastcall sub_1D38(__int64 a1)\n{\n __int64 v2; // rbx\n __int64 v3; // rax\n __int64 v4; // rbx\n __int64 v5; // rdi\n __int64 v6; // rax\n char *src; // rbx\n __int64 v8; // rax\n __int64 LENOVO_2; // rbx\n const __int16 *LENOVO; // rsi\n const __int16 *LENOVO_1; // r14\n __int64 v12; // rax\n const __int16 *ThinkSystem_; // rbx\n unsigned __int8 n16; // al\n __int64 v15; // rax\n __int64 v16; // rax\n __int64 LENOVO_4; // rbx\n const __int16 *LENOVO_3; // r14\n __int64 v19; // rax\n __int64 LENOVO_6; // rbx\n const __int16 *LENOVO_5; // r14\n __int64 v22; // rbx\n _BYTE *v23; // rdi\n __int16 v24; // ax\n __int64 v25; // rax\n __int64 LENOVO_8; // rbx\n const __int16 *LENOVO_7; // r14\n __int64 v28; // rax\n __int64 LENOVO_10; // rbx\n const __int16 *LENOVO_9; // r14\n __int64 v31; // rax\n __int64 LENOVO_12; // rbx\n const __int16 *LENOVO_11; // r14\n __int64 v34; // rax\n __int64 LENOVO_14; // rbx\n const __int16 *LENOVO_13; // r14\n __int64 v37; // rax\n __int64 LENOVO_16; // rbx\n const __int16 *LENOVO_15; // r14\n __int64 v40; // rbx\n __int64 v41; // rdi\n __int64 v42; // rax\n __int64 v43; // rax\n __int64 LENOVO_18; // rbx\n const __int16 *LENOVO_17; // r14\n __int64 v46; // rax\n __int64 LENOVO_20; // rbx\n const __int16 *LENOVO_19; // r14\n __int64 v49; // rax\n __int64 LENOVO_22; // rbx\n const __int16 *LENOVO_21; // r14\n __int64 v52; // rax\n __int64 LENOVO_23; // rbx\n __int64 v55; // [rsp+30h] [rbp-D0h] BYREF\n __int64 v56; // [rsp+38h] [rbp-C8h] BYREF\n __int64 v57; // [rsp+40h] [rbp-C0h] BYREF\n int v58; // [rsp+48h] [rbp-B8h] BYREF\n __int64 v59; // [rsp+4Ch] [rbp-B4h]\n int v60; // [rsp+54h] [rbp-ACh]\n _BYTE v61[256]; // [rsp+60h] [rbp-A0h] BYREF\n _WORD ThinkSystem__1[88]; // [rsp+160h] [rbp+60h] BYREF\n char n2; // [rsp+230h] [rbp+130h] BYREF\n __int16 v64; // [rsp+238h] [rbp+138h] BYREF\n\nv59 = 0;\nv60 = 0;\nv58 = 0;\nv2 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(ootServices + 320))(&unk_7020, 0, &v56);\nLOBYTE(v3) = sub_3D5C(64, \"Locate SmbiosProtocol Status:%r \\n\", v2);\nif (v2 >= 0)\n {\n(*(void (__fastcall **)(__int64))(ootServices + 112))();\nn2 = 1;\nv64 = -2;\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, char *, __int64 *, _QWORD))(v56 + 24))(v56, &v64, &n2, &v57, 0) >= 0)\ngoto LABEL_6;\nv3 = sub_3E50(4, 29);\nv4 = v3;\nif (v3)\n {\n*(_DWORD *)v3 = -58623;\nv64 = -2;\nv3 = (*(__int64 (__fastcall **)(__int64, _QWORD, __int16 *, __int64))v56)(v56, 0, &v64, v3);\nif (v3 >= 0)\n {\nsub_3E94(v4);\nv64 = -2;\nv3 = (*(__int64 (__fastcall **)(__int64, __int16 *, char *, __int64 *, _QWORD))(v56 + 24))(\n v56,\n &v64,\n &n2,\n &v57,\n 0);\nif (v3 >= 0)\n {\nLABEL_6 :\nv5 = v57;\n*(_DWORD *)(v57 + 4) = 0;\nv6 = sub_35F4();\nsrc = (char *)(*(__int64 (__fastcall **)(__int64))(v6 + 40))(187);\nif (!(unsigned __int8)sub_380C(src, &v58))\nsub_36FC((char *)(v5 + 8), src, 0x10u);\nv64 = *(_WORD *)(v5 + 2);\nv55 = 1;\nv8 = sub_35F4();\nLENOVO_2 = (*(__int64 (__fastcall **)(__int64))(v8 + 40))(118);\nLENOVO = L\"LENOVO\";\nLENOVO_1 = L\"LENOVO\";\nif (sub_39E0(LENOVO_2, L\"To be filled by O.E.M. \"))\nLENOVO_1 = (const __int16 *)LENOVO_2;\nif (sub_39E0(LENOVO_1, &unk_51BC))\n {\nsub_3A80(LENOVO_1, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(v56, &v64, &v55, v61) >= 0)\n*(_BYTE *)(v5 + 4) = v55++;\n }\nv12 = sub_35F4();\nThinkSystem_ = (const __int16 *)(*(__int64 (__fastcall **)(__int64))(v12 + 40))(117);\nif (sub_39E0(ThinkSystem_, L\"To be filled by O.E.M. \"))\n {\n__outbyte(0x72u, 0x5Cu);\nn16 = __inbyte(0x73u);\nif (n16 == 16)\n {\nsub_3874(ThinkSystem__1, L\"ThinkSystem \");\nv15 = sub_394C(ThinkSystem__1);\nsub_3874(&ThinkSystem__1[v15], ThinkSystem_);\nif (2 * sub_394C(ThinkSystem__1) == -2)\nsub_3DDC(\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\", 378, \"StrSize (Destination)!= 0\");\nThinkSystem_ = ThinkSystem__1;\n }\n }\n else\n {\nThinkSystem_ = L\"LENOVO\";\n }\nif (sub_39E0(ThinkSystem_, &unk_51BC))\n {\nsub_3A80(ThinkSystem_, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(v56, &v64, &v55, v61) >= 0)\n*(_BYTE *)(v5 + 5) = v55++;\n }\nv16 = sub_35F4();\nLENOVO_4 = (*(__int64 (__fastcall **)(__int64))(v16 + 40))(119);\nLENOVO_3 = L\"LENOVO\";\nif (sub_39E0(LENOVO_4, L\"To be filled by O.E.M. \"))\nLENOVO_3 = (const __int16 *)LENOVO_4;\nif (sub_39E0(LENOVO_3, &unk_51BC))\n {\nsub_3A80(LENOVO_3, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(v56, &v64, &v55, v61) >= 0)\n*(_BYTE *)(v5 + 6) = v55++;\n }\nv19 = sub_35F4();\nLENOVO_6 = (*(__int64 (__fastcall **)(__int64))(v19 + 40))(120);\nLENOVO_5 = L\"LENOVO\";\nif (sub_39E0(LENOVO_6, L\"To be filled by O.E.M. \"))\nLENOVO_5 = (const __int16 *)LENOVO_6;\nif (sub_39E0(LENOVO_5, &unk_51BC))\n {\nsub_3A80(LENOVO_5, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(v56, &v64, &v55, v61) >= 0)\n*(_BYTE *)(v5 + 7) = v55;\n }\nv64 = -2;\nn2 = 2;\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, char *, __int64 *, _QWORD))(v56 + 24))(\n v56,\n &v64,\n &n2,\n &v57,\n 0) >= 0)\ngoto LABEL_36;\nv3 = sub_3E50(4, 19);\nv22 = v3;\nif (v3)\n {\n*(_WORD *)v3 = 4354;\n*(_WORD *)(v3 + 2) = -1;\nv64 = -2;\nv3 = (*(__int64 (__fastcall **)(__int64, _QWORD, __int16 *, __int64))v56)(v56, 0, &v64, v3);\nif (v3 >= 0)\n {\nsub_3E94(v22);\nv64 = -2;\nv3 = (*(__int64 (__fastcall **)(__int64, __int16 *, char *, __int64 *, _QWORD))(v56 + 24))(\n v56,\n &v64,\n &n2,\n &v57,\n 0);\nif (v3 >= 0)\n {\nLABEL_36 :\nv23 = (_BYTE *)v57;\nv24 = *(_WORD *)(v57 + 2);\n*(_DWORD *)(v57 + 4) = 0;\nv23[8] = 0;\nv64 = v24;\nv55 = 1;\nv25 = sub_35F4();\nLENOVO_8 = (*(__int64 (__fastcall **)(__int64))(v25 + 40))(121);\nLENOVO_7 = L\"LENOVO\";\nif (sub_39E0(LENOVO_8, L\"To be filled by O.E.M. \"))\nLENOVO_7 = (const __int16 *)LENOVO_8;\nif (sub_39E0(LENOVO_7, &unk_51BC))\n {\nsub_3A80(LENOVO_7, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\nv23[4] = v55++;\n }\nv28 = sub_35F4();\nLENOVO_10 = (*(__int64 (__fastcall **)(__int64))(v28 + 40))(122);\nLENOVO_9 = L\"LENOVO\";\nif (sub_39E0(LENOVO_10, L\"To be filled by O.E.M. \"))\nLENOVO_9 = (const __int16 *)LENOVO_10;\nif (sub_39E0(LENOVO_9, &unk_51BC))\n {\nsub_3A80(LENOVO_9, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\nv23[5] = v55++;\n }\nv31 = sub_35F4();\nLENOVO_12 = (*(__int64 (__fastcall **)(__int64))(v31 + 40))(123);\nLENOVO_11 = L\"LENOVO\";\nif (sub_39E0(LENOVO_12, L\"To be filled by O.E.M. \"))\nLENOVO_11 = (const __int16 *)LENOVO_12;\nif (sub_39E0(LENOVO_11, &unk_51BC))\n {\nsub_3A80(LENOVO_11, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\nv23[6] = v55++;\n }\nv34 = sub_35F4();\nLENOVO_14 = (*(__int64 (__fastcall **)(__int64))(v34 + 40))(124);\nLENOVO_13 = L\"LENOVO\";\nif (sub_39E0(LENOVO_14, L\"To be filled by O.E.M. \"))\nLENOVO_13 = (const __int16 *)LENOVO_14;\nif (sub_39E0(LENOVO_13, &unk_51BC))\n {\nsub_3A80(LENOVO_13, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\nv23[7] = v55++;\n }\nv37 = sub_35F4();\nLENOVO_16 = (*(__int64 (__fastcall **)(__int64))(v37 + 40))(125);\nLENOVO_15 = L\"LENOVO\";\nif (sub_39E0(LENOVO_16, L\"To be filled by O.E.M. \"))\nLENOVO_15 = (const __int16 *)LENOVO_16;\nif (sub_39E0(LENOVO_15, &unk_51BC))\n {\nsub_3A80(LENOVO_15, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\nv23[8] = v55;\n }\nv64 = -2;\nn2 = 3;\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, char *, __int64 *, _QWORD))(v56 + 24))(\n v56,\n &v64,\n &n2,\n &v57,\n 0) >= 0)\ngoto LABEL_65;\nv3 = sub_3E50(4, 26);\nv40 = v3;\nif (v3)\n {\n*(_WORD *)v3 = 6147;\n*(_WORD *)(v3 + 2) = -1;\nv64 = -2;\nv3 = (*(__int64 (__fastcall **)(__int64, _QWORD, __int16 *, __int64))v56)(v56, 0, &v64, v3);\nif (v3 >= 0)\n {\nsub_3E94(v40);\nv64 = -2;\nv3 = (*(__int64 (__fastcall **)(__int64, __int16 *, char *, __int64 *, _QWORD))(v56 + 24))(\n v56,\n &v64,\n &n2,\n &v57,\n 0);\nif (v3 >= 0)\n {\nLABEL_65 :\nv41 = v57;\n*(_BYTE *)(v57 + 4) = 0;\n*(_WORD *)(v41 + 6) = 0;\n*(_BYTE *)(v41 + 8) = 0;\nv42 = sub_35F4();\n*(_BYTE *)(v41 + 5) = (*(__int64 (__fastcall **)(__int64))(v42 + 8))(188);\nv64 = *(_WORD *)(v41 + 2);\nv55 = 1;\nv43 = sub_35F4();\nLENOVO_18 = (*(__int64 (__fastcall **)(__int64))(v43 + 40))(126);\nLENOVO_17 = L\"LENOVO\";\nif (sub_39E0(LENOVO_18, L\"To be filled by O.E.M. \"))\nLENOVO_17 = (const __int16 *)LENOVO_18;\nif (sub_39E0(LENOVO_17, &unk_51BC))\n {\nsub_3A80(LENOVO_17, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\n*(_BYTE *)(v41 + 4) = v55++;\n }\nv46 = sub_35F4();\nLENOVO_20 = (*(__int64 (__fastcall **)(__int64))(v46 + 40))(127);\nLENOVO_19 = L\"LENOVO\";\nif (sub_39E0(LENOVO_20, L\"To be filled by O.E.M. \"))\nLENOVO_19 = (const __int16 *)LENOVO_20;\nif (sub_39E0(LENOVO_19, &unk_51BC))\n {\nsub_3A80(LENOVO_19, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\n*(_BYTE *)(v41 + 6) = v55++;\n }\nv49 = sub_35F4();\nLENOVO_22 = (*(__int64 (__fastcall **)(__int64))(v49 + 40))(128);\nLENOVO_21 = L\"LENOVO\";\nif (sub_39E0(LENOVO_22, L\"To be filled by O.E.M. \"))\nLENOVO_21 = (const __int16 *)LENOVO_22;\nif (sub_39E0(LENOVO_21, &unk_51BC))\n {\nsub_3A80(LENOVO_21, v61);\nif ((*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61) >= 0)\n*(_BYTE *)(v41 + 7) = v55++;\n }\nv52 = sub_35F4();\nLENOVO_23 = (*(__int64 (__fastcall **)(__int64))(v52 + 40))(129);\nif (sub_39E0(LENOVO_23, L\"To be filled by O.E.M. \"))\nLENOVO = (const __int16 *)LENOVO_23;\nv3 = sub_39E0(LENOVO, &unk_51BC);\nif (v3)\n {\nsub_3A80(LENOVO, v61);\nv3 = (*(__int64 (__fastcall **)(__int64, __int16 *, __int64 *, _BYTE *))(v56 + 8))(\n v56,\n &v64,\n &v55,\n v61);\nif (v3 >= 0)\n {\nLOBYTE(v3) = v55;\n*(_BYTE *)(v41 + 8) = v55;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\nreturn v3;\n}",
"0x2990": "__int64 __fastcall sub_2990(__int64 a1, char a2)\n{\n __int64 v2; // r14\n __int64 v3; // r12\n __int64 v4; // r13\n __int64 v5; // rdi\n __int64 result; // rax\n __int64 v7; // r15\n int v8; // eax\n __int16 v9; // bx\n __int64 v10; // rax\n __int64 v11; // rsi\n __int64 v12; // rax\n __int64 v13; // rax\n unsigned __int8 n16_2; // bl\n __int64 v15; // rbx\n _BYTE *v16; // rcx\n __int64 v17; // rax\n unsigned __int64 v18; // rax\n __int64 v19; // rdx\n __int64 v20; // r14\n _BYTE *v21; // rcx\n signed __int64 v22; // rax\n __int64 v23; // rax\n unsigned __int8 n16_3; // bl\n __int64 v25; // r14\n __int64 v26; // rax\n __int64 v27; // rdi\n __int64 v28; // rax\n unsigned __int8 n16_4; // bl\n __int64 v30; // r14\n __int64 v31; // rax\n __int64 v32; // rax\n unsigned __int8 n16_5; // bl\n _BYTE *v34; // rcx\n __int64 v35; // rax\n char v36; // cl\n int v37; // eax\n __int16 v38; // bx\n __int64 v39; // rax\n __int64 v40; // r14\n __int64 v41; // rax\n unsigned __int8 n16_6; // bl\n __int64 v43; // rax\n __int64 v44; // rax\n unsigned __int8 n16_7; // bl\n __int64 v46; // rsi\n _BYTE *v47; // rcx\n __int64 v48; // rax\n __int64 v49; // rax\n unsigned __int8 n16_8; // bl\n __int64 v51; // rsi\n __int64 v52; // rax\n __int64 v53; // rax\n unsigned __int8 n16_9; // bl\n _BYTE *v55; // rcx\n __int64 v56; // rax\n __int64 v57; // rax\n unsigned __int8 n16_10; // bl\n int v59; // eax\n __int16 v60; // bx\n __int64 v61; // rax\n __int64 v62; // rsi\n char v63; // bl\n __int64 v64; // rax\n __int64 v65; // rdx\n __int64 v66; // rax\n __int64 v67; // rax\n unsigned __int8 n16_11; // bl\n _BYTE *v69; // rcx\n unsigned __int64 v70; // rax\n __int64 v71; // rax\n unsigned __int8 n16_12; // bl\n __int64 v73; // rax\n unsigned __int8 n16_13; // bl\n __int64 v75; // rax\n unsigned __int8 n16_14; // bl\n __int16 v77; // bx\n __int64 v78; // rdi\n __int64 v79; // rbx\n __int64 v80; // rax\n unsigned __int8 n16_1; // bl\n unsigned __int64 n16; // [rsp+30h] [rbp-39h] BYREF\n unsigned __int8 v83[8]; // [rsp+38h] [rbp-31h] BYREF\n __int64 v84; // [rsp+40h] [rbp-29h] BYREF\n unsigned __int8 v85[8]; // [rsp+48h] [rbp-21h] BYREF\n char n3_2; // [rsp+50h] [rbp-19h] BYREF\n int v87; // [rsp+51h] [rbp-18h]\n __int16 v88; // [rsp+55h] [rbp-14h]\n char v89; // [rsp+57h] [rbp-12h]\n __int64 v90; // [rsp+58h] [rbp-11h] BYREF\n __int64 v91; // [rsp+60h] [rbp-9h] BYREF\n char n3_1; // [rsp+68h] [rbp-1h] BYREF\n __int64 v93[10]; // [rsp+69h] [rbp+0h] BYREF\n char v95; // [rsp+D8h] [rbp+6Fh]\n __int64 n7; // [rsp+E0h] [rbp+77h] BYREF\n char n3; // [rsp+E8h] [rbp+7Fh] BYREF\n int v98; // [rsp+E9h] [rbp+80h]\n\nv95 = a2;\nn3_2 = 0;\nv2 = a1;\nv87 = 0;\nv3 = 0;\nv88 = 0;\nv4 = 0;\nv89 = 0;\nv5 = 0;\nv91 = 0;\nv84 = 0;\nv90 = 0;\nn3 = 0;\nv98 = 0;\nLOBYTE(n7) = 0;\nif (!a2)\n {\n*(_QWORD *)v85 = 8;\nresult = sub_18C8(a1, 0, 0, v85, (__int64)&n3_2);\nif (result < 0)\nreturn result;\nif ((unsigned __int8)sub_3C28(&n3_2, 8))\n {\nsub_3D5C(0x80000000LL, \"FRU header invalid.\\n\");\na2 = 1;\nv95 = 1;\n }\n else\n {\na2 = 0;\n }\n }\nv7 = 0x800000000000000EuLL;\nv8 = 8 * HIBYTE(v87);\nv9 = 8 * HIBYTE(v87);\nif (v8\n &&!a2\n && (*(_QWORD *)v83 = 0, *(_QWORD *)v85 = 1, sub_18C8(v2, 0, v8 + 1, v85, (__int64)v83), *(_QWORD *)v83)\n && (*(_QWORD *)v83 *= 8LL, v10 = sub_3E50(6, *(_QWORD *)v83), (v11 = v10)!= 0))\n {\nif (sub_18C8(v2, 0, v9, v83, v10) < 0)\n {\nv27 = v84;\n }\n else\n {\n*(_QWORD *)v83 = *(_BYTE *)(v11 + 3) & 0x3F;\nif ((*(_BYTE *)(v11 + 3) & 0x3F)!= 0)\n {\nv12 = sub_28B8(v11 + 3, &v84, *(_BYTE *)(v11 + 3) >> 6, *(_BYTE *)(v11 + 3) & 0x3F);\nv4 = v84;\n }\n else\n {\nv12 = 0x800000000000000EuLL;\n }\nif (v12 >= 0)\n {\nn16 = 2 * sub_394C(v4) + 2;\nv13 = sub_35F4();\nn16_2 = (*(__int64 (__fastcall **)(__int64))(v13 + 56))(118);\nif (n16 > n16_2)\n {\nsub_3D5C(64, \"PcdSystemManufacturer:SizeofBuffer > PcdSize so truncating the string\\n\");\nn16 = n16_2 - 2;\n }\nsub_3680(118, &n16, v4);\n }\nv15 = *(_QWORD *)v83;\nv16 = (_BYTE *)(v11 + *(_QWORD *)v83 + 4LL);\nv17 = *v16 & 0x3F;\n*(_QWORD *)v83 = v17;\nif ((*v16 & 0x3F)!= 0)\n {\nv18 = sub_28B8((__int64)v16, &v90, *v16 >> 6, *v16 & 0x3F);\nv5 = v90;\nv19 = v18;\nv17 = *(_QWORD *)v83;\n }\n else\n {\nv19 = 0x800000000000000EuLL;\n }\nv20 = v17 + v15 + 5;\nv21 = (_BYTE *)(v11 + v20);\n*(_QWORD *)v83 = *(_BYTE *)(v11 + v20) & 0x3F;\nif (v19 >= 0)\n {\nv22 = (*v21 & 0x3F)!= 0 ? sub_28B8((__int64)v21, &v84, *v21 >> 6, *v21 & 0x3F) : 0x800000000000000EuLL;\nif (v22 >= 0)\n {\nn16 = 2 * sub_394C(v5) + 2;\nv23 = sub_35F4();\nn16_3 = (*(__int64 (__fastcall **)(__int64))(v23 + 56))(117);\nif (n16 > n16_3)\n {\nsub_3D5C(64, \"PcdSystemProductName:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_3 - 2;\n }\nsub_3680(117, &n16, v5);\nsub_3E94(v5);\n }\n }\nv25 = *(_QWORD *)v83 + 1LL + v20;\n*(_QWORD *)v83 = *(_BYTE *)(v11 + v25) & 0x3F;\nif ((*(_BYTE *)(v11 + v25) & 0x3F)!= 0)\nv26 = sub_28B8(v11 + v25, &v84, *(_BYTE *)(v11 + v25) >> 6, *(_BYTE *)(v11 + v25) & 0x3F);\n else\nv26 = 0x800000000000000EuLL;\nv27 = v84;\nif (v26 >= 0)\n {\nn16 = 2 * sub_394C(v84) + 2;\nv28 = sub_35F4();\nn16_4 = (*(__int64 (__fastcall **)(__int64))(v28 + 56))(119);\nif (n16 > n16_4)\n {\nsub_3D5C(64, \"PcdSystemVersion:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_4 - 2;\n }\nsub_3680(119, &n16, v27);\nsub_3E94(v27);\n }\nv30 = *(_QWORD *)v83 + 1LL + v25;\n*(_QWORD *)v83 = *(_BYTE *)(v11 + v30) & 0x3F;\nif ((*(_BYTE *)(v11 + v30) & 0x3F)!= 0)\n {\nv31 = sub_28B8(v11 + v30, &v84, *(_BYTE *)(v11 + v30) >> 6, *(_BYTE *)(v11 + v30) & 0x3F);\nv27 = v84;\n }\n else\n {\nv31 = 0x800000000000000EuLL;\n }\nif (v31 >= 0)\n {\nn16 = 2 * sub_394C(v27) + 2;\nv32 = sub_35F4();\nn16_5 = (*(__int64 (__fastcall **)(__int64))(v32 + 56))(120);\nif (n16 > n16_5)\n {\nsub_3D5C(64, \"PcdSystemSerialNumber:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_5 - 2;\n }\nsub_3680(120, &n16, v27);\nsub_3E94(v27);\n }\nv34 = (_BYTE *)(v11 + v30 + *(_QWORD *)v83 + 1LL);\n*(_QWORD *)v83 = *v34 & 0x3F;\nif ((*v34 & 0x3F)!= 0)\n {\nv35 = sub_28B8((__int64)v34, &v91, *v34 >> 6, *v34 & 0x3F);\nv3 = v91;\n }\n else\n {\nv35 = 0x800000000000000EuLL;\n }\nif (v35 < 0)\nsub_3D5C(0x80000000LL, \"GetFRUData :AssetTagString: Status %r\\n\", v35);\nv2 = a1;\n }\nsub_3E94(v11);\n }\n else\n {\nv27 = v84;\n }\nv36 = v95;\nv37 = 8 * BYTE2(v87);\nv38 = 8 * BYTE2(v87);\nif (v37 &&!v95)\n {\n*(_QWORD *)v83 = 0;\n*(_QWORD *)v85 = 1;\nsub_18C8(v2, 0, v37 + 1, v85, (__int64)v83);\nif (*(_QWORD *)v83)\n {\n*(_QWORD *)v83 *= 8LL;\nv39 = sub_3E50(6, *(_QWORD *)v83);\nv40 = v39;\nif (v39)\n {\nif (sub_18C8(a1, 0, v38, v83, v39) >= 0)\n {\nif (v3)\n {\nn16 = 2 * sub_394C(v3) + 2;\nv41 = sub_35F4();\nn16_6 = (*(__int64 (__fastcall **)(__int64))(v41 + 56))(125);\nif (n16 > n16_6)\n {\nsub_3D5C(64, \"PcdBaseBoardAssetTag:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_6 - 2;\n }\nsub_3680(125, &n16, v3);\n }\n*(_QWORD *)v83 = *(_BYTE *)(v40 + 6) & 0x3F;\nif ((*(_BYTE *)(v40 + 6) & 0x3F)!= 0)\n {\nv43 = sub_28B8(v40 + 6, &v84, *(_BYTE *)(v40 + 6) >> 6, *(_BYTE *)(v40 + 6) & 0x3F);\nv27 = v84;\n }\n else\n {\nv43 = 0x800000000000000EuLL;\n }\nif (v43 >= 0)\n {\nn16 = 2 * sub_394C(v27) + 2;\nv44 = sub_35F4();\nn16_7 = (*(__int64 (__fastcall **)(__int64))(v44 + 56))(121);\nif (n16 > n16_7)\n {\nsub_3D5C(64, \"PcdBaseBoardManufacturer:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_7 - 2;\n }\nsub_3680(121, &n16, v27);\nsub_3E94(v27);\n }\nv46 = *(_QWORD *)v83;\nv47 = (_BYTE *)(v40 + *(_QWORD *)v83 + 7LL);\n*(_QWORD *)v83 = *v47 & 0x3F;\nif ((*v47 & 0x3F)!= 0)\n {\nv48 = sub_28B8((__int64)v47, &v84, *v47 >> 6, *v47 & 0x3F);\nv27 = v84;\n }\n else\n {\nv48 = 0x800000000000000EuLL;\n }\nif (v48 >= 0)\n {\nn16 = 2 * sub_394C(v27) + 2;\nv49 = sub_35F4();\nn16_8 = (*(__int64 (__fastcall **)(__int64))(v49 + 56))(122);\nif (n16 > n16_8)\n {\nsub_3D5C(64, \"PcdBaseBoardProductName:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_8 - 2;\n }\nsub_3680(122, &n16, v27);\nsub_3E94(v27);\n }\nv51 = *(_QWORD *)v83 + 8LL + v46;\n*(_QWORD *)v83 = *(_BYTE *)(v40 + v51) & 0x3F;\nif ((*(_BYTE *)(v40 + v51) & 0x3F)!= 0)\n {\nv52 = sub_28B8(v40 + v51, &v84, *(_BYTE *)(v40 + v51) >> 6, *(_BYTE *)(v40 + v51) & 0x3F);\nv27 = v84;\n }\n else\n {\nv52 = 0x800000000000000EuLL;\n }\nif (v52 >= 0)\n {\nn16 = 2 * sub_394C(v27) + 2;\nv53 = sub_35F4();\nn16_9 = (*(__int64 (__fastcall **)(__int64))(v53 + 56))(124);\nif (n16 > n16_9)\n {\nsub_3D5C(64, \"PcdBaseBoardSerialNumber:SizeofBuffer > PcdSize so truncating the string\\n\");\nn16 = n16_9 - 2;\n }\nsub_3680(124, &n16, v27);\nsub_3E94(v27);\n }\nv55 = (_BYTE *)(v40 + v51 + *(_QWORD *)v83 + 1LL);\n*(_QWORD *)v83 = *v55 & 0x3F;\nif ((*v55 & 0x3F)!= 0)\n {\nv56 = sub_28B8((__int64)v55, &v84, *v55 >> 6, *v55 & 0x3F);\nv27 = v84;\n }\n else\n {\nv56 = 0x800000000000000EuLL;\n }\nif (v56 >= 0)\n {\nn16 = 2 * sub_394C(v27) + 2;\nv57 = sub_35F4();\nn16_10 = (*(__int64 (__fastcall **)(__int64))(v57 + 56))(123);\nif (n16 > n16_10)\n {\nsub_3D5C(64, \"PcdBaseBoardVersion:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_10 - 2;\n }\nsub_3680(123, &n16, v27);\nsub_3E94(v27);\n }\n }\nsub_3E94(v40);\n }\n }\nv36 = 0;\n }\nv59 = 8 * BYTE1(v87);\nv60 = 8 * BYTE1(v87);\nif (v59)\n {\nif (!v36)\n {\n*(_QWORD *)v83 = 0;\n*(_QWORD *)v85 = 1;\nsub_18C8(a1, 0, v59 + 1, v85, (__int64)v83);\nif (*(_QWORD *)v83)\n {\n*(_QWORD *)v83 *= 8LL;\nv61 = sub_3E50(6, *(_QWORD *)v83);\nv62 = v61;\nif (v61)\n {\nif (sub_18C8(a1, 0, v60, v83, v61) >= 0)\n {\nv63 = *(_BYTE *)(v62 + 2);\nv64 = sub_35F4();\nLOBYTE(v65) = v63;\n(*(void (__fastcall **)(__int64, __int64))(v64 + 120))(188, v65);\n*(_QWORD *)v83 = *(_BYTE *)(v62 + 3) & 0x3F;\nif ((*(_BYTE *)(v62 + 3) & 0x3F)!= 0)\n {\nv66 = sub_28B8(v62 + 3, &v84, *(_BYTE *)(v62 + 3) >> 6, *(_BYTE *)(v62 + 3) & 0x3F);\nv27 = v84;\n }\n else\n {\nv66 = 0x800000000000000EuLL;\n }\nif (v66 >= 0)\n {\nn16 = 2 * sub_394C(v27) + 2;\nv67 = sub_35F4();\nn16_11 = (*(__int64 (__fastcall **)(__int64))(v67 + 56))(127);\nif (n16 > n16_11)\n {\nsub_3D5C(64, \"PcdChassisVersion:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_11 - 2;\n }\nsub_3680(127, &n16, v27);\nsub_3E94(v27);\n }\nv69 = (_BYTE *)(v62 + *(_QWORD *)v83 + 4LL);\n*(_QWORD *)v83 = *v69 & 0x3F;\nif ((*v69 & 0x3F)!= 0)\n {\nv70 = sub_28B8((__int64)v69, &v84, *v69 >> 6, *v69 & 0x3F);\nv27 = v84;\nv7 = v70;\n }\nif (v7 >= 0)\n {\nn16 = 2 * sub_394C(v27) + 2;\nv71 = sub_35F4();\nn16_12 = (*(__int64 (__fastcall **)(__int64))(v71 + 56))(128);\nif (n16 > n16_12)\n {\nsub_3D5C(64, \"PcdChassisSerialNumber:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_12 - 2;\n }\nsub_3680(128, &n16, v27);\nsub_3E94(v27);\n }\nif (v4)\n {\nn16 = 2 * sub_394C(v4) + 2;\nv73 = sub_35F4();\nn16_13 = (*(__int64 (__fastcall **)(__int64))(v73 + 56))(126);\nif (n16 > n16_13)\n {\nsub_3D5C(64, \"PcdChassisManufacturer:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_13 - 2;\n }\nsub_3680(126, &n16, v4);\n }\nif (v3)\n {\nn16 = 2 * sub_394C(v3) + 2;\nv75 = sub_35F4();\nn16_14 = (*(__int64 (__fastcall **)(__int64))(v75 + 56))(129);\nif (n16 > n16_14)\n {\nsub_3D5C(64, \"PcdChassisAssetTag:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_14 - 2;\n }\nsub_3680(129, &n16, v3);\n }\n }\nsub_3E94(v62);\n }\n }\n }\n }\nif (v4)\nsub_3E94(v4);\nif (v3)\nsub_3E94(v3);\nv77 = 8 * (unsigned __int8)v88;\nif (8 * (unsigned __int8)v88 &&!v95)\n {\nwhile (1)\n {\n*(_QWORD *)v85 = 5;\nv78 = sub_18C8(a1, 0, v77, v85, (__int64)&n3);\nif (v78 < 0)\nbreak;\nif ((unsigned __int8)sub_3C28(&n3, 5))\n {\nsub_3D5C(0x80000000LL, \"FRU MultiRecord Record invalid.\\n\");\nbreak;\n }\nif (n3 == 3)\n {\n*(_QWORD *)v85 = 1;\nv78 = sub_18C8(a1, 0, v77 + 5, v85, (__int64)&n7);\nif (v78 >= 0 && (_BYTE)n7 == 7)\n {\nn3_1 = BYTE2(v98);\n*(_QWORD *)v85 = 17;\nif (sub_18C8(a1, 0, v77 + 5, v85, (__int64)v93) >= 0 &&!(unsigned __int8)sub_3C28(&n3_1, 18))\n {\nn16 = 16;\nv80 = sub_35F4();\nn16_1 = (*(__int64 (__fastcall **)(__int64))(v80 + 56))(187);\nif (n16 > n16_1)\n {\nsub_3D5C(64, \"PcdSystemUuid:SizeofBuffer > PcdSize so truncating the string \\n\");\nn16 = n16_1 - 2;\n }\nsub_3680(187, &n16, (char *)v93 + 1);\n }\nbreak;\n }\n }\nif ((v98 & 0x80u) == 0)\n {\nv77 += BYTE1(v98) + 5;\nif (v78 >= 0)\ncontinue;\n }\nbreak;\n }\n }\nresult = sub_41F0((unsigned __int16)(8 * (unsigned __int8)v88));\nv79 = result;\nif (result < 0)\n {\nsub_3D5C(0x80000000LL, \"%a: Failed to update PcdLnvMiscAreaOffset. Status = %r\\n\", \"GenerateFruSmbiosData\", result);\nsub_3D5C(0x80000000LL, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v79);\nreturn sub_3DDC(\"e:\\\\hs\\\\AmiIpmiPkg\\\\Ipmi\\\\IpmiRedirFru\\\\FruSmbios.c\", 892, \"!EFI_ERROR (Status)\");\n }\nreturn result;\n}",
"0x10d0": "void sub_10D0(){ _mm_pause(); /*0x10d0*/}",
"0x10f0": "void sub_10F0(){ _enable(); /*0x10f0*/}",
"0x1100": "void sub_1100(){ _disable(); /*0x1100*/}",
"0x4020": "void nullsub_1(){ ; /*0x4020*/}"
}