{
"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}",
"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}",
"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}",
"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}",
"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}",
"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}",
"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}",
"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}",
"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}"
}