{"jsonrpc": "2.0", "result": {"structuredContent": {"format": "json", "functions": [{"addr": "0xffe0fc2c", "name": "ProcessTpmSupportDisabled", "prototype": "int __thiscall(void *this)", "size": "0x116", "comments": {"0xffe0fc92": {"regular": "this"}, "0xffe0fca1": {"regular": "this"}}, "asm": "ProcessTpmSupportDisabled (.text @ 0xffe0fc2c):\nffe0fc2c push ebp\nffe0fc2d mov ebp, esp\nffe0fc2f and esp, 0FFFFFFF8h\nffe0fc32 push esi\nffe0fc33 push edi\nffe0fc34 push offset aProcesstpmsupp\nffe0fc39 push 40h\nffe0fc3b mov edi, ecx\nffe0fc3d call DebugPrint\nffe0fc42 pop ecx\nffe0fc43 pop ecx\nffe0fc44 call Tpm20GetInterfaceType\nffe0fc49 mov InterfaceType, al\nffe0fc4e test al, al\nffe0fc50 jnz loc_FFE0FC68\nffe0fc52 cmp byte ptr ds:0FED40000h, 0FFh\nffe0fc59 jz loc_FFE0FC88\nffe0fc5b cmp ds:0FED40000h, al\nffe0fc61 jz loc_FFE0FC88\nffe0fc63 mov al, InterfaceType\nffe0fc68 cmp al, 1\nffe0fc6a jnz loc_FFE0FC92\nffe0fc6c call Tpm20GetDeviceType\nffe0fc71 cmp al, 2\nffe0fc73 jz loc_FFE0FC92\nffe0fc75 call Tpm20GetDeviceType\nffe0fc7a cmp al, 1\nffe0fc7c jz loc_FFE0FC92\nffe0fc7e mov eax, 80000003h\nffe0fc83 jmp loc_FFE0FD3C\nffe0fc88 mov eax, 8000000Eh\nffe0fc8d jmp loc_FFE0FD3C\nffe0fc92 mov ecx, edi\nffe0fc94 call Tpm2Startup\nffe0fc99 test eax, eax\nffe0fc9b js loc_FFE0FD3C\nffe0... [2350 chars total]", "code": "int __thiscall ProcessTpmSupportDisabled(void *this)\n{\n char InterfaceType; // al\n int result; // eax\n int v4; // ecx\n int v5; // eax\n int v6; // ecx\n int v7; // eax\n unsigned int n8; // ecx\n int v9; // esi\n\n DebugPrint(64, \" ProcessTpmSupportDisabled Entry \\n\"); /*0xffe0fc3d*/\n InterfaceType = Tpm20GetInterfaceType(); /*0xffe0fc44*/\n ::InterfaceType = InterfaceType; /*0xffe0fc49*/\n if ( !InterfaceType ) /*0xffe0fc50*/\n {\n if ( MEMORY[0xFED40000] == 0xFF || !MEMORY[0xFED40000] ) /*0xffe0fc61*/\n return -2147483634; /*0xffe0fc8d*/\n InterfaceType = ::InterfaceType; /*0xffe0fc63*/\n }\n if ( InterfaceType == 1 && Tpm20GetDeviceType() != 2 && Tpm20GetDeviceType() != 1 ) /*0xffe0fc7c*/\n return -2147483645; /*0xffe0fc7e*/\n result = sub_FFE0F2C2(this); /*0xffe0fc94*/\n if ( result >= 0 )\n {\n result = sub_FFE0F3F9(this); /*0xffe0fca3*/\n if ( result >= 0 )\n {\n v5 = sub_FFE0F536(v4, v4, 0x4000000Bu); /*0xffe0fcb8*/\n if ( v5 < 0 ) /*0xffe0fcc2*/\n ... [1725 chars total]", "xrefs": {"to": [{"addr": "0xffe0fd90", "type": "code"}], "from": [{"addr": "0xffe0fc2d", "type": "code"}]}}, {"addr": "0xffe0fd42", "name": "TrEEPeiEntry", "prototype": "int __fastcall(int, int *SystemTable)", "size": "0x27b", "comments": {"0xffe0fddd": {"regular": "SystemTable"}, "0xffe0fddf": {"regular": "unsigned __int8"}, "0xffe0fe4a": {"regular": "SystemTable"}, "0xffe0fe4c": {"regular": "unsigned __int8"}, "0xffe0fe9f": {"regular": "_DWORD *"}, "0xffe0fea4": {"regular": "int *"}, "0xffe0fea5": {"regular": "n4136"}, "0xffe0feaa": {"regular": "this"}}, "asm": "TrEEPeiEntry (.text @ 0xffe0fd42):\nffe0fd42 push ebp\nffe0fd43 mov ebp, esp\nffe0fd45 sub esp, 24h\nffe0fd48 lea ecx, [ebp+var_4]\nffe0fd4b push ebx\nffe0fd4c push esi\nffe0fd4d push ecx\nffe0fd4e mov esi, edx\nffe0fd50 xor bl, bl\nffe0fd52 push 0\nffe0fd54 push 0\nffe0fd56 push offset unk_FFE173C8\nffe0fd5b mov eax, [esi]\nffe0fd5d push esi\nffe0fd5e call dword ptr [eax+20h]\nffe0fd61 add esp, 14h\nffe0fd64 test eax, eax\nffe0fd66 js loc_FFE0FFB7\nffe0fd6c push edi\nffe0fd6d lea eax, [ebp+var_24]\nffe0fd70 push eax\nffe0fd71 mov eax, [ebp+var_4]\nffe0fd74 push esi\nffe0fd75 call dword ptr [eax+4]\nffe0fd78 mov edi, eax\nffe0fd7a pop ecx\nffe0fd7b pop ecx\nffe0fd7c test edi, edi\nffe0fd7e js loc_FFE0FFB6\nffe0fd84 cmp [ebp+var_1E], bl\nffe0fd87 jz loc_FFE0FDA3\nffe0fd89 cmp [ebp+var_24], bl\nffe0fd8c jnz loc_FFE0FD9A\nffe0fd8e mov ecx, esi\nffe0fd90 call ProcessTpmSupportDisabled\nffe0fd95 jmp loc_FFE0FFB6\nffe0fd9a call Tpm20IsSupportedVidDid\nffe0fd9f test al, al\nffe0fda1 jz loc_FF... [5745 chars total]", "code": "int __fastcall TrEEPeiEntry(int a1, int *SystemTable)\n{\n char v3; // bl\n int result; // eax\n int v5; // edi\n char InterfaceType; // al\n int v7; // eax\n __int64 v8; // rcx\n unsigned __int8 n2; // al\n _DWORD *v10; // edx\n int v11; // eax\n int DebugLib; // eax\n _BYTE v13[5]; // [esp+8h] [ebp-24h] BYREF\n unsigned __int8 n2_1; // [esp+Dh] [ebp-1Fh]\n char v15; // [esp+Eh] [ebp-1Eh]\n bool v16; // [esp+1Eh] [ebp-Eh]\n int v17; // [esp+1Fh] [ebp-Dh]\n int v18; // [esp+24h] [ebp-8h] BYREF\n int v19; // [esp+28h] [ebp-4h] BYREF\n\n v3 = 0; /*0xffe0fd50*/\n result = (*(int (__cdecl **)(int *, void *, _DWORD, _DWORD, int *))(*SystemTable + 32))( /*0xffe0fd5e*/\n SystemTable,\n &unk_FFE173C8,\n 0,\n 0,\n &v19);\n if ( result < 0 ) /*0xffe0fd66*/\n return result; /*0xffe0fd66*/\n result = (*(int (__cdecl **)(int *, _BYTE *))(v19 + 4))(SystemTable, v13); /*0xffe0fd75*/\n v5 = result; /*0xffe0fd78*/\n if ( result < 0 ) /*0xffe0fd7e*/... [5032 chars total]", "xrefs": {"to": [{"addr": "0xffe0e20f", "type": "code"}], "from": [{"addr": "0xffe0fd43", "type": "code"}]}}, {"addr": "0xffe0ffbd", "name": "TrEEPeiInstallPpi", "prototype": "int __cdecl(_DWORD *)", "size": "0xcc", "comments": {}, "asm": "TrEEPeiInstallPpi (.text @ 0xffe0ffbd):\nffe0ffbd push ebp\nffe0ffbe mov ebp, esp\nffe0ffc0 sub esp, 60h\nffe0ffc3 push esi\nffe0ffc4 mov esi, ecx\nffe0ffc6 test esi, esi\nffe0ffc8 jnz loc_FFE0FFD4\nffe0ffca mov eax, 80000002h\nffe0ffcf jmp loc_FFE10084\nffe0ffd4 push 4Eh\nffe0ffd6 pop edx\nffe0ffd7 lea ecx, [ebp+var_60]\nffe0ffda call ReallocatePool\nffe0ffdf mov eax, 180h\nffe0ffe4 mov [ebp+var_5A], 86010000h\nffe0ffeb xor edx, edx\nffe0ffed mov [ebp+var_60], ax\nffe0fff1 lea ecx, [ebp+var_56]\nffe0fff4 call SwapBytes16\nffe0fff9 mov edx, 1200h\nffe0fffe lea ecx, [ebp+var_54]\nffe10001 call SwapBytes16\nffe10006 push 0Eh\nffe10008 pop ecx\nffe10009 call SwapBytes32\nffe1000e mov [ebp+var_5E], eax\nffe10011 lea eax, [ebp+var_10]\nffe10014 push eax\nffe10015 push 0Eh\nffe10017 lea eax, [ebp+var_60]\nffe1001a push eax\nffe1001b push 0Eh\nffe1001d push esi\nffe1001e call dword ptr [esi+0Ch]\nffe10021 add esp, 14h\nffe10024 test eax, eax\nffe10026 js loc_FFE10084\nffe10028 mov ecx, [ebp+v... [1777 chars total]", "code": "int __cdecl TrEEPeiInstallPpi(_DWORD *a1)\n{\n int v1; // ecx\n int v2; // esi\n int result; // eax\n unsigned int n0xE; // eax\n int v5; // eax\n __int16 n384; // [esp+4h] [ebp-60h] BYREF\n int v7; // [esp+6h] [ebp-5Eh]\n int v8; // [esp+Ah] [ebp-5Ah]\n _BYTE v9[2]; // [esp+Eh] [ebp-56h] BYREF\n _BYTE v10[68]; // [esp+10h] [ebp-54h] BYREF\n _BYTE v11[2]; // [esp+54h] [ebp-10h] BYREF\n int v12; // [esp+56h] [ebp-Eh]\n int v13; // [esp+5Ah] [ebp-Ah]\n int v14; // [esp+5Eh] [ebp-6h]\n\n v2 = v1; /*0xffe0ffc4*/\n if ( !v1 ) /*0xffe0ffc8*/\n return -2147483646; /*0xffe0ffca*/\n sub_FFE10490(&n384, 78); /*0xffe0ffda*/\n v8 = -2046754816; /*0xffe0ffe4*/\n n384 = 384; /*0xffe0ffed*/\n sub_FFE105B3(v9, 0); /*0xffe0fff4*/\n sub_FFE105B3(v10, 4608); /*0xffe10001*/\n v7 = sub_FFE10573(14); /*0xffe1000e*/\n result = (*(int (__cdecl **)(int, int, __int16 *, int, _BYTE *))(v2 + 12))(v2, 14, &n384, 14, v11); /*0xffe1001e*/\n if ( result >= 0 )\n {\n n0xE = sub_FFE10573(v12); /*0xffe1002b*/\n if (... [1538 chars total]", "xrefs": {"to": [{"addr": "0xffe0e962", "type": "code"}, {"addr": "0xffe0ef60", "type": "code"}], "from": [{"addr": "0xffe0ffbe", "type": "code"}]}}, {"addr": "0xffe10089", "name": "TrEESerializeCmdHeader", "prototype": "int __fastcall(int, int)", "size": "0xa7", "comments": {}, "asm": "TrEESerializeCmdHeader (.text @ 0xffe10089):\nffe10089 push ebx\nffe1008a push esi\nffe1008b mov ebx, ecx\nffe1008d push edi\nffe1008e mov edi, edx\nffe10090 test ebx, ebx\nffe10092 jz loc_FFE100FF\nffe10094 mov ecx, [ebx]\nffe10096 call SwapBytes32\nffe1009b mov edx, eax\nffe1009d mov ecx, edi\nffe1009f call WriteUnaligned32\nffe100a4 movzx edx, word ptr [ebx+4]\nffe100a8 lea esi, [edi+4]\nffe100ab rol dx, 8\nffe100af mov ecx, esi\nffe100b1 call SwapBytes16\nffe100b6 movzx eax, word ptr [ebx+4]\nffe100ba lea edx, [ebx+6]\nffe100bd add esi, 2\nffe100c0 push eax\nffe100c1 mov ecx, esi\nffe100c3 call CopyMemChecked\nffe100c8 movzx eax, word ptr [ebx+4]\nffe100cc add esi, eax\nffe100ce mov al, [ebx+46h]\nffe100d1 mov [esi], al\nffe100d3 lea ecx, [esi+1]\nffe100d6 movzx edx, word ptr [ebx+47h]\nffe100da rol dx, 8\nffe100de call SwapBytes16\nffe100e3 movzx eax, word ptr [ebx+47h]\nffe100e7 lea edx, [ebx+49h]\nffe100ea add esi, 3\nffe100ed push eax\nffe100ee mov ecx, esi\nffe100f0 call CopyM... [1565 chars total]", "code": "int __fastcall TrEESerializeCmdHeader(int a1, int a2)\n{\n int n150995008; // eax\n int dst; // esi\n int v6; // esi\n\n if ( a1 ) /*0xffe10092*/\n {\n n150995008 = SwapBytes32(*(_DWORD *)a1); /*0xffe10096*/\n sub_FFE105E2(a2, n150995008); /*0xffe1009f*/\n SwapBytes16((_WORD *)(a2 + 4), __ROL2__(*(_WORD *)(a1 + 4), 8)); /*0xffe100b1*/\n CopyMemChecked((char *)(a2 + 6), (char *)(a1 + 6), *(unsigned __int16 *)(a1 + 4)); /*0xffe100c3*/\n dst = *(unsigned __int16 *)(a1 + 4) + a2 + 6; /*0xffe100cc*/\n *(_BYTE *)dst = *(_BYTE *)(a1 + 70); /*0xffe100d1*/\n SwapBytes16((_WORD *)(dst + 1), __ROL2__(*(_WORD *)(a1 + 71), 8)); /*0xffe100de*/\n dst += 3; /*0xffe100ea*/\n CopyMemChecked((char *)dst, (char *)(a1 + 73), *(unsigned __int16 *)(a1 + 71)); /*0xffe100f0*/\n v6 = *(unsigned __int16 *)(a1 + 71) + dst; /*0xffe100fb*/\n }\n else\n {\n sub_FFE105E2(a2, 150995008); /*0xffe10106*/\n SwapBytes16((_WORD *)(a2 + 4), 0); /*0xffe10112*/\n *(_BYTE *)(a2 + 6) = 0; /*0xffe10119*/\n... [1124 chars total]", "xrefs": {"to": [{"addr": "0xffe0e7c6", "type": "code"}, {"addr": "0xffe0f57a", "type": "code"}, {"addr": "0xffe0f73e", "type": "code"}, {"addr": "0xffe10189", "type": "code"}, {"addr": "0xffe102b5", "type": "code"}], "from": [{"addr": "0xffe1008a", "type": "code"}]}}, {"addr": "0xffe10130", "name": "TrEESequenceUpdate", "prototype": "int __fastcall(int, int, unsigned __int16 *p_i)", "size": "0x12a", "comments": {}, "asm": "TrEESequenceUpdate (.text @ 0xffe10130):\nffe10130 push ebp\nffe10131 mov ebp, esp\nffe10133 sub esp, 534h\nffe10139 push ebx\nffe1013a mov ebx, ecx\nffe1013c push esi\nffe1013d mov esi, edx\nffe1013f test ebx, ebx\nffe10141 jnz loc_FFE1014D\nffe10143 mov eax, 80000002h\nffe10148 jmp loc_FFE10254\nffe1014d push edi\nffe1014e mov edx, 49Dh\nffe10153 lea ecx, [ebp+var_534]\nffe10159 call ReallocatePool\nffe1015e mov eax, 280h\nffe10163 mov [ebp+var_52E], 5C010000h\nffe1016d mov ecx, esi\nffe1016f mov [ebp+var_534], ax\nffe10176 call SwapBytes32\nffe1017b lea edx, [ebp+var_522]\nffe10181 mov [ebp+var_52A], eax\nffe10187 xor ecx, ecx\nffe10189 call TrEESerializeCmdHeader\nffe1018e lea edi, [ebp+var_522]\nffe10194 mov ecx, eax\nffe10196 add edi, eax\nffe10198 call SwapBytes32\nffe1019d mov esi, [ebp+p_i]\nffe101a0 mov ecx, edi\nffe101a2 mov [ebp+var_526], eax\nffe101a8 movzx edx, word ptr [esi]\nffe101ab rol dx, 8\nffe101af call SwapBytes16\nffe101b4 movzx eax, word ptr [esi]\nffe101b7 lea ... [2321 chars total]", "code": "int __fastcall TrEESequenceUpdate(int a1, int a2, unsigned __int16 *p_i)\n{\n int result; // eax\n int v6; // eax\n char *dst; // edi\n int v8; // edx\n unsigned int n0x93; // eax\n int v10; // eax\n __int16 n384; // [esp+8h] [ebp-534h] BYREF\n int v12; // [esp+Ah] [ebp-532h]\n int n1543569408; // [esp+Eh] [ebp-52Eh]\n int v14; // [esp+12h] [ebp-52Ah]\n int v15; // [esp+16h] [ebp-526h]\n _BYTE v16[1166]; // [esp+1Ah] [ebp-522h] BYREF\n _BYTE v17[2]; // [esp+4A8h] [ebp-94h] BYREF\n int v18; // [esp+4AAh] [ebp-92h]\n int v19; // [esp+4AEh] [ebp-8Eh]\n\n if ( !a1 ) /*0xffe10141*/\n return -2147483646; /*0xffe10143*/\n ReallocatePool((int)&n384, 0x49Du); /*0xffe10159*/\n n1543569408 = 1543569408; /*0xffe10163*/\n n384 = 640; /*0xffe1016f*/\n v14 = SwapBytes32(a2); /*0xffe10181*/\n v6 = TrEESerializeCmdHeader(0, (int)v16); /*0xffe10189*/\n dst = &v16[v6]; /*0xffe10196*/\n v15 = SwapBytes32(v6); /*0xffe101a2*/\n SwapBytes16(dst, __ROL2__(*p_i, 8)); /*0xffe101af*/\n dst += 2; /*0xffe101ba*/\n ... [1810 chars total]", "xrefs": {"to": [{"addr": "0xffe0e9a6", "type": "code"}, {"addr": "0xffe0e9fb", "type": "code"}, {"addr": "0xffe0f050", "type": "code"}], "from": [{"addr": "0xffe10131", "type": "code"}]}}, {"addr": "0xffe1025a", "name": "TrEESequenceComplete", "prototype": "int __fastcall(int, int, char *p_n1024, char *p_count)", "size": "0x155", "comments": {}, "asm": "TrEESequenceComplete (.text @ 0xffe1025a):\nffe1025a push ebp\nffe1025b lea ebp, [esp-70h]\nffe1025f sub esp, 57Ch\nffe10265 push ebx\nffe10266 mov ebx, ecx\nffe10268 push esi\nffe10269 mov esi, edx\nffe1026b test ebx, ebx\nffe1026d jnz loc_FFE10279\nffe1026f mov eax, 80000002h\nffe10274 jmp loc_FFE103A8\nffe10279 push edi\nffe1027a mov edx, 4A1h\nffe1027f lea ecx, [ebp+70h+var_57C]\nffe10285 call ReallocatePool\nffe1028a mov eax, 280h\nffe1028f mov [ebp+70h+var_576], 3E010000h\nffe10299 mov ecx, esi\nffe1029b mov [ebp+70h+var_57C], ax\nffe102a2 call SwapBytes32\nffe102a7 lea edx, [ebp+70h+var_56A]\nffe102ad mov [ebp+70h+var_572], eax\nffe102b3 xor ecx, ecx\nffe102b5 call TrEESerializeCmdHeader\nffe102ba lea edi, [ebp+70h+var_56A]\nffe102c0 mov ecx, eax\nffe102c2 add edi, eax\nffe102c4 call SwapBytes32\nffe102c9 mov esi, [ebp+70h+p_n1024]\nffe102cc mov ecx, edi\nffe102ce mov [ebp+70h+var_56E], eax\nffe102d4 movzx edx, word ptr [esi]\nffe102d7 rol dx, 8\nffe102db call SwapBytes16\nffe102... [2796 chars total]", "code": "int __fastcall TrEESequenceComplete(int a1, int a2, char *p_n1024, char *p_count)\n{\n int result; // eax\n int v7; // eax\n char *dst; // edi\n char *v9; // edi\n int v10; // edi\n unsigned int n0xD5; // eax\n int v12; // eax\n unsigned int count; // [esp-4h] [ebp-518h]\n __int16 n384; // [esp+8h] [ebp-50Ch] BYREF\n int v15; // [esp+Ah] [ebp-50Ah]\n int n1040252928; // [esp+Eh] [ebp-506h]\n int v17; // [esp+12h] [ebp-502h]\n int v18; // [esp+16h] [ebp-4FEh]\n _BYTE v19[1170]; // [esp+1Ah] [ebp-4FAh] BYREF\n char v20[2]; // [esp+4ACh] [ebp-68h] BYREF\n int v21; // [esp+4AEh] [ebp-66h]\n int v22; // [esp+4B2h] [ebp-62h]\n char v23[2]; // [esp+4BAh] [ebp-5Ah] BYREF\n char src[200]; // [esp+4BCh] [ebp-58h] BYREF\n\n if ( !a1 ) /*0xffe1026d*/\n return -2147483646; /*0xffe1026f*/\n ReallocatePool((int)&n384, 0x4A1u); /*0xffe10285*/\n n1040252928 = 1040252928; /*0xffe1028f*/\n n384 = 640; /*0xffe1029b*/\n v17 = SwapBytes32(a2); /*0xffe102ad*/\n v7 = TrEESerializeCmdHeader(0, (int)v19); /*0xf... [2330 chars total]", "xrefs": {"to": [{"addr": "0xffe0ea18", "type": "code"}, {"addr": "0xffe0f13b", "type": "code"}], "from": [{"addr": "0xffe1025b", "type": "code"}]}}, {"addr": "0xffe103af", "name": "GetBootServicesTable", "prototype": "int()", "size": "0x32", "comments": {}, "asm": "GetBootServicesTable (.text @ 0xffe103af):\nffe103af push ebp\nffe103b0 mov ebp, esp\nffe103b2 push ecx\nffe103b3 push ecx\nffe103b4 push esi\nffe103b5 lea ecx, [ebp+var_8]\nffe103b8 call DebugPrintAssertChain\nffe103bd mov eax, [ebp+var_6]\nffe103c0 mov esi, [eax-4]\nffe103c3 test esi, esi\nffe103c5 jnz loc_FFE103DA\nffe103c7 push offset aPeiservicesVoi\nffe103cc push 30h\nffe103ce pop edx\nffe103cf mov ecx, offset aEHsMdepkgLibra\nffe103d4 call DebugAssert\nffe103d9 pop ecx\nffe103da mov eax, esi\nffe103dc pop esi\nffe103dd mov esp, ebp\nffe103df pop ebp\nffe103e0 retn", "code": "int GetBootServicesTable()\n{\n int v0; // esi\n _BYTE v2[2]; // [esp+4h] [ebp-8h] BYREF\n int v3; // [esp+6h] [ebp-6h]\n\n sub_FFE10611(v2); /*0xffe103b8*/\n v0 = *(_DWORD *)(v3 - 4); /*0xffe103c0*/\n if ( !v0 ) /*0xffe103c5*/\n sub_FFE1053E(\"PeiServices != ((void *) 0)\"); /*0xffe103d4*/\n return v0; /*0xffe103dc*/\n}", "xrefs": {"to": [{"addr": "0xffe0e53e", "type": "code"}, {"addr": "0xffe0e92b", "type": "code"}, {"addr": "0xffe0f1a0", "type": "code"}, {"addr": "0xffe104e8", "type": "code"}, {"addr": "0xffe162aa", "type": "code"}, {"addr": "0xffe162fe", "type": "code"}], "from": [{"addr": "0xffe103b0", "type": "code"}]}}, {"addr": "0xffe103e1", "name": "CopyMemChecked", "prototype": "char *__fastcall(char *dst, char *src, unsigned int count)", "size": "0x71", "comments": {"0xffe10443": {"regular": "count"}, "0xffe10444": {"regular": "src"}, "0xffe10445": {"regular": "dst"}}, "asm": "CopyMemChecked (.text @ 0xffe103e1):\nffe103e1 push ebx\nffe103e2 mov ebx, [esp+4+count]\nffe103e6 push esi\nffe103e7 mov esi, ecx\nffe103e9 mov eax, esi\nffe103eb push edi\nffe103ec mov edi, edx\nffe103ee test ebx, ebx\nffe103f0 jz loc_FFE1044E\nffe103f2 push ebp\nffe103f3 lea ebp, [ebx-1]\nffe103f6 not eax\nffe103f8 cmp ebp, eax\nffe103fa jbe loc_FFE10417\nffe103fc call GetDebugLib\nffe10401 test eax, eax\nffe10403 jz loc_FFE10417\nffe10405 push offset aLength10xfffff\nffe1040a push 38h\nffe1040c push offset aEHsMdepkgLibra_0\nffe10411 call dword ptr [eax+4]\nffe10414 add esp, 0Ch\nffe10417 mov eax, edi\nffe10419 not eax\nffe1041b cmp ebp, eax\nffe1041d pop ebp\nffe1041e jbe loc_FFE1043B\nffe10420 call GetDebugLib\nffe10425 test eax, eax\nffe10427 jz loc_FFE1043B\nffe10429 push offset aLength10xfffff_0\nffe1042e push 39h\nffe10430 push offset aEHsMdepkgLibra_0\nffe10435 call dword ptr [eax+4]\nffe10438 add esp, 0Ch\nffe1043b cmp esi, edi\nffe1043d jnz loc_FFE10443\nffe1043f mov eax, ... [1202 chars total]", "code": "char *__fastcall CopyMemChecked(char *dst, char *src, unsigned int count)\n{\n char *dst_1; // eax\n int v6; // eax\n int v7; // eax\n\n dst_1 = dst; /*0xffe103e9*/\n if ( count ) /*0xffe103f0*/\n {\n if ( count - 1 > ~(unsigned int)dst ) /*0xffe103fa*/\n {\n v6 = sub_FFE104E3(); /*0xffe103fc*/\n if ( v6 ) /*0xffe10403*/\n (*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))( /*0xffe10411*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 56,\n \"(Length - 1) <= (0xFFFFFFFF - (UINTN)DestinationBuffer)\");\n }\n if ( count - 1 > ~(unsigned int)src ) /*0xffe1041e*/\n {\n v7 = sub_FFE104E3(); /*0xffe10420*/\n if ( v7 ) /*0xffe10427*/\n (*(void (__cdecl **)(const char *, int, const char *))(v7 + 4))( /*0xffe10435*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 57,\n \"(Length - 1) <= (0xFFFFFFFF - (UINTN)SourceBuffer)\");\n }\n if ( dst == src ) /*0xff... [1141 chars total]", "xrefs": {"to": [{"addr": "0xffe0e4b1", "type": "code"}, {"addr": "0xffe0e98e", "type": "code"}, {"addr": "0xffe0e9e9", "type": "code"}, {"addr": "0xffe0ea61", "type": "code"}, {"addr": "0xffe0ecac", "type": "code"}, {"addr": "0xffe0ece0", "type": "code"}, {"addr": "0xffe0ecfd", "type": "code"}, {"addr": "0xffe0ed32", "type": "code"}, {"addr": "0xffe0ed65", "type": "code"}, {"addr": "0xffe0ed98", "type": "code"}], "from": [{"addr": "0xffe103e2", "type": "code"}]}}, {"addr": "0xffe10452", "name": "AllocatePool", "prototype": "void *__fastcall(void *buf, unsigned int count)", "size": "0x3e", "comments": {"0xffe10480": {"regular": "value"}, "0xffe10482": {"regular": "count"}, "0xffe10483": {"regular": "buf"}}, "asm": "AllocatePool (.text @ 0xffe10452):\nffe10452 push ebx\nffe10453 push esi\nffe10454 push edi\nffe10455 mov edi, edx\nffe10457 or esi, 0FFFFFFFFh\nffe1045a mov ebx, ecx\nffe1045c sub esi, ebx\nffe1045e lea eax, [edi-1]\nffe10461 cmp eax, esi\nffe10463 jbe loc_FFE10480\nffe10465 call GetDebugLib\nffe1046a test eax, eax\nffe1046c jz loc_FFE10480\nffe1046e push offset aLength10xfffff_1\nffe10473 push 36h\nffe10475 push offset aEHsMdepkgLibra_1\nffe1047a call dword ptr [eax+4]\nffe1047d add esp, 0Ch\nffe10480 push 0\nffe10482 push edi\nffe10483 push ebx\nffe10484 call SetMem\nffe10489 add esp, 0Ch\nffe1048c pop edi\nffe1048d pop esi\nffe1048e pop ebx\nffe1048f retn", "code": "void *__fastcall AllocatePool(void *buf, unsigned int count)\n{\n int DebugLib; // eax\n\n if ( count - 1 > -1 - (int)buf ) /*0xffe10463*/\n {\n DebugLib = GetDebugLib(); /*0xffe10465*/\n if ( DebugLib ) /*0xffe1046c*/\n (*(void (__cdecl **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe1047a*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\SetMemWrapper.c\",\n 54,\n \"(Length - 1) <= (0xFFFFFFFF - (UINTN)Buffer)\");\n }\n return SetMem(buf, count, 0); /*0xffe1048c*/\n}", "xrefs": {"to": [{"addr": "0xffe0ec05", "type": "code"}, {"addr": "0xffe0ec20", "type": "code"}, {"addr": "0xffe0ec39", "type": "code"}, {"addr": "0xffe0ec52", "type": "code"}, {"addr": "0xffe0ec6b", "type": "code"}, {"addr": "0xffe0f1d5", "type": "code"}, {"addr": "0xffe0f31b", "type": "code"}, {"addr": "0xffe0f42e", "type": "code"}, {"addr": "0xffe118f4", "type": "code"}, {"addr": "0xffe11a56", "type": "code"}], "from": [{"addr": "0xffe10453", "type": "code"}]}}, {"addr": "0xffe10490", "name": "ReallocatePool", "prototype": "void *__fastcall(int p_n384, unsigned int n78)", "size": "0x53", "comments": {"0xffe104d6": {"regular": "count"}, "0xffe104d7": {"regular": "buf"}}, "asm": "ReallocatePool (.text @ 0xffe10490):\nffe10490 push ebx\nffe10491 push esi\nffe10492 mov esi, ecx\nffe10494 mov ebx, offset aEHsMdepkgLibra_2\nffe10499 push edi\nffe1049a mov edi, edx\nffe1049c test esi, esi\nffe1049e jnz loc_FFE104B7\nffe104a0 call GetDebugLib\nffe104a5 test eax, eax\nffe104a7 jz loc_FFE104B7\nffe104a9 push offset aBufferVoid0\nffe104ae push 35h\nffe104b0 push ebx\nffe104b1 call dword ptr [eax+4]\nffe104b4 add esp, 0Ch\nffe104b7 mov eax, esi\nffe104b9 neg eax\nffe104bb cmp edi, eax\nffe104bd jbe loc_FFE104D6\nffe104bf call GetDebugLib\nffe104c4 test eax, eax\nffe104c6 jz loc_FFE104D6\nffe104c8 push offset aLength0xffffff\nffe104cd push 36h\nffe104cf push ebx\nffe104d0 call dword ptr [eax+4]\nffe104d3 add esp, 0Ch\nffe104d6 push edi\nffe104d7 push esi\nffe104d8 call ZeroMem\nffe104dd pop ecx\nffe104de pop ecx\nffe104df pop edi\nffe104e0 pop esi\nffe104e1 pop ebx\nffe104e2 retn", "code": "void *__fastcall ReallocatePool(int p_n384, unsigned int n78)\n{\n int DebugLib; // eax\n int v5; // eax\n\n if ( !p_n384 ) /*0xffe1049e*/\n {\n DebugLib = GetDebugLib(); /*0xffe104a0*/\n if ( DebugLib ) /*0xffe104a7*/\n (*(void (__cdecl **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe104b1*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\ZeroMemWrapper.c\",\n 53,\n \"Buffer != ((void *) 0)\");\n }\n if ( n78 > -p_n384 ) /*0xffe104bd*/\n {\n v5 = GetDebugLib(); /*0xffe104bf*/\n if ( v5 ) /*0xffe104c6*/\n (*(void (__cdecl **)(const char *, int, const char *))(v5 + 4))( /*0xffe104d0*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\ZeroMemWrapper.c\",\n 54,\n \"Length <= (0xFFFFFFFF - (UINTN)Buffer + 1)\");\n }\n return ZeroMem((void *)p_n384, n78); /*0xffe104df*/\n}", "xrefs": {"to": [{"addr": "0xffe0ffda", "type": "code"}, {"addr": "0xffe10159", "type": "code"}, {"addr": "0xffe10285", "type": "code"}], "from": [{"addr": "0xffe10491", "type": "code"}]}}]}, "content": [{"type": "text", "text": "{\"format\":\"json\",\"functions\":[{\"addr\":\"0xffe0fc2c\",\"name\":\"ProcessTpmSupportDisabled\",\"prototype\":\"int __thiscall(void *this)\",\"size\":\"0x116\",\"comments\":{\"0xffe0fc92\":{\"regular\":\"this\"},\"0xffe0fca1\":{\"regular\":\"this\"}},\"asm\":\"ProcessTpmSupportDisabled (.text @ 0xffe0fc2c):\\nffe0fc2c push ebp\\nffe0fc2d mov ebp, esp\\nffe0fc2f and esp, 0FFFFFFF8h\\nffe0fc32 push esi\\nffe0fc33 push edi\\nffe0fc34 push offset aProcesstpmsupp\\nffe0fc39 push 40h\\nffe0fc3b mov edi, ecx\\nffe0fc3d call DebugPrint\\nffe0fc42 pop ecx\\nffe0fc43 pop ecx\\nffe0fc44 call Tpm20GetInterfaceType\\nffe0fc49 mov InterfaceType, al\\nffe0fc4e test al, al\\nffe0fc50 jnz loc_FFE0FC68\\nffe0fc52 cmp byte ptr ds:0FED40000h, 0FFh\\nffe0fc59 jz loc_FFE0FC88\\nffe0fc5b cmp ds:0FED40000h, al\\nffe0fc61 jz loc_FFE0FC88\\nffe0fc63 mov al, InterfaceType\\nffe0fc68 cmp al, 1\\nffe0fc6a jnz loc_FFE0FC92\\nffe0fc6c call Tpm20GetDeviceType\\nffe0fc71 cmp al, 2\\nffe0fc73 jz loc_FFE0FC92\\nffe0fc75 call Tpm20GetDeviceType\\nffe0fc7a cmp al, 1\\nffe0fc7c jz loc_FFE0FC92\\nffe0fc7e mov eax, 80000003h\\nffe0fc83 jmp loc_FFE0FD3C\\nffe0fc88 mov eax, 8000000Eh\\nffe0fc8d jmp loc_FFE0FD3C\\nffe0fc92 mov ecx, edi\\nffe0fc94 call Tpm2Startup\\nffe0fc99 test eax, eax\\nffe0fc9b js loc_FFE0FD3C\\nffe0... [2350 chars total]\",\"code\":\"int __thiscall ProcessTpmSupportDisabled(void *this)\\n{\\n char InterfaceType; // al\\n int result; // eax\\n int v4; // ecx\\n int v5; // eax\\n int v6; // ecx\\n int v7; // eax\\n unsigned int n8; // ecx\\n int v9; // esi\\n\\n DebugPrint(64, \\\" ProcessTpmSupportDisabled Entry \\\\n\\\"); /*0xffe0fc3d*/\\n InterfaceType = Tpm20GetInterfaceType(); /*0xffe0fc44*/\\n ::InterfaceType = InterfaceType; /*0xffe0fc49*/\\n if ( !InterfaceType ) /*0xffe0fc50*/\\n {\\n if ( MEMORY[0xFED40000] == 0xFF || !MEMORY[0xFED40000] ) /*0xffe0fc61*/\\n return -2147483634; /*0xffe0fc8d*/\\n InterfaceType = ::InterfaceType; /*0xffe0fc63*/\\n }\\n if ( InterfaceType == 1 && Tpm20GetDeviceType() != 2 && Tpm20GetDeviceType() != 1 ) /*0xffe0fc7c*/\\n return -2147483645; /*0xffe0fc7e*/\\n result = sub_FFE0F2C2(this); /*0xffe0fc94*/\\n if ( result >= 0 )\\n {\\n result = sub_FFE0F3F9(this); /*0xffe0fca3*/\\n if ( result >= 0 )\\n {\\n v5 = sub_FFE0F536(v4, v4, 0x4000000Bu); /*0xffe0fcb8*/\\n if ( v5 < 0 ) /*0xffe0fcc2*/\\n ... [1725 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0fd90\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe0fc2d\",\"type\":\"code\"}]}},{\"addr\":\"0xffe0fd42\",\"name\":\"TrEEPeiEntry\",\"prototype\":\"int __fastcall(int, int *SystemTable)\",\"size\":\"0x27b\",\"comments\":{\"0xffe0fddd\":{\"regular\":\"SystemTable\"},\"0xffe0fddf\":{\"regular\":\"unsigned __int8\"},\"0xffe0fe4a\":{\"regular\":\"SystemTable\"},\"0xffe0fe4c\":{\"regular\":\"unsigned __int8\"},\"0xffe0fe9f\":{\"regular\":\"_DWORD *\"},\"0xffe0fea4\":{\"regular\":\"int *\"},\"0xffe0fea5\":{\"regular\":\"n4136\"},\"0xffe0feaa\":{\"regular\":\"this\"}},\"asm\":\"TrEEPeiEntry (.text @ 0xffe0fd42):\\nffe0fd42 push ebp\\nffe0fd43 mov ebp, esp\\nffe0fd45 sub esp, 24h\\nffe0fd48 lea ecx, [ebp+var_4]\\nffe0fd4b push ebx\\nffe0fd4c push esi\\nffe0fd4d push ecx\\nffe0fd4e mov esi, edx\\nffe0fd50 xor bl, bl\\nffe0fd52 push 0\\nffe0fd54 push 0\\nffe0fd56 push offset unk_FFE173C8\\nffe0fd5b mov eax, [esi]\\nffe0fd5d push esi\\nffe0fd5e call dword ptr [eax+20h]\\nffe0fd61 add esp, 14h\\nffe0fd64 test eax, eax\\nffe0fd66 js loc_FFE0FFB7\\nffe0fd6c push edi\\nffe0fd6d lea eax, [ebp+var_24]\\nffe0fd70 push eax\\nffe0fd71 mov eax, [ebp+var_4]\\nffe0fd74 push esi\\nffe0fd75 call dword ptr [eax+4]\\nffe0fd78 mov edi, eax\\nffe0fd7a pop ecx\\nffe0fd7b pop ecx\\nffe0fd7c test edi, edi\\nffe0fd7e js loc_FFE0FFB6\\nffe0fd84 cmp [ebp+var_1E], bl\\nffe0fd87 jz loc_FFE0FDA3\\nffe0fd89 cmp [ebp+var_24], bl\\nffe0fd8c jnz loc_FFE0FD9A\\nffe0fd8e mov ecx, esi\\nffe0fd90 call ProcessTpmSupportDisabled\\nffe0fd95 jmp loc_FFE0FFB6\\nffe0fd9a call Tpm20IsSupportedVidDid\\nffe0fd9f test al, al\\nffe0fda1 jz loc_FF... [5745 chars total]\",\"code\":\"int __fastcall TrEEPeiEntry(int a1, int *SystemTable)\\n{\\n char v3; // bl\\n int result; // eax\\n int v5; // edi\\n char InterfaceType; // al\\n int v7; // eax\\n __int64 v8; // rcx\\n unsigned __int8 n2; // al\\n _DWORD *v10; // edx\\n int v11; // eax\\n int DebugLib; // eax\\n _BYTE v13[5]; // [esp+8h] [ebp-24h] BYREF\\n unsigned __int8 n2_1; // [esp+Dh] [ebp-1Fh]\\n char v15; // [esp+Eh] [ebp-1Eh]\\n bool v16; // [esp+1Eh] [ebp-Eh]\\n int v17; // [esp+1Fh] [ebp-Dh]\\n int v18; // [esp+24h] [ebp-8h] BYREF\\n int v19; // [esp+28h] [ebp-4h] BYREF\\n\\n v3 = 0; /*0xffe0fd50*/\\n result = (*(int (__cdecl **)(int *, void *, _DWORD, _DWORD, int *))(*SystemTable + 32))( /*0xffe0fd5e*/\\n SystemTable,\\n &unk_FFE173C8,\\n 0,\\n 0,\\n &v19);\\n if ( result < 0 ) /*0xffe0fd66*/\\n return result; /*0xffe0fd66*/\\n result = (*(int (__cdecl **)(int *, _BYTE *))(v19 + 4))(SystemTable, v13); /*0xffe0fd75*/\\n v5 = result; /*0xffe0fd78*/\\n if ( result < 0 ) /*0xffe0fd7e*/... [5032 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e20f\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe0fd43\",\"type\":\"code\"}]}},{\"addr\":\"0xffe0ffbd\",\"name\":\"TrEEPeiInstallPpi\",\"prototype\":\"int __cdecl(_DWORD *)\",\"size\":\"0xcc\",\"comments\":{},\"asm\":\"TrEEPeiInstallPpi (.text @ 0xffe0ffbd):\\nffe0ffbd push ebp\\nffe0ffbe mov ebp, esp\\nffe0ffc0 sub esp, 60h\\nffe0ffc3 push esi\\nffe0ffc4 mov esi, ecx\\nffe0ffc6 test esi, esi\\nffe0ffc8 jnz loc_FFE0FFD4\\nffe0ffca mov eax, 80000002h\\nffe0ffcf jmp loc_FFE10084\\nffe0ffd4 push 4Eh\\nffe0ffd6 pop edx\\nffe0ffd7 lea ecx, [ebp+var_60]\\nffe0ffda call ReallocatePool\\nffe0ffdf mov eax, 180h\\nffe0ffe4 mov [ebp+var_5A], 86010000h\\nffe0ffeb xor edx, edx\\nffe0ffed mov [ebp+var_60], ax\\nffe0fff1 lea ecx, [ebp+var_56]\\nffe0fff4 call SwapBytes16\\nffe0fff9 mov edx, 1200h\\nffe0fffe lea ecx, [ebp+var_54]\\nffe10001 call SwapBytes16\\nffe10006 push 0Eh\\nffe10008 pop ecx\\nffe10009 call SwapBytes32\\nffe1000e mov [ebp+var_5E], eax\\nffe10011 lea eax, [ebp+var_10]\\nffe10014 push eax\\nffe10015 push 0Eh\\nffe10017 lea eax, [ebp+var_60]\\nffe1001a push eax\\nffe1001b push 0Eh\\nffe1001d push esi\\nffe1001e call dword ptr [esi+0Ch]\\nffe10021 add esp, 14h\\nffe10024 test eax, eax\\nffe10026 js loc_FFE10084\\nffe10028 mov ecx, [ebp+v... [1777 chars total]\",\"code\":\"int __cdecl TrEEPeiInstallPpi(_DWORD *a1)\\n{\\n int v1; // ecx\\n int v2; // esi\\n int result; // eax\\n unsigned int n0xE; // eax\\n int v5; // eax\\n __int16 n384; // [esp+4h] [ebp-60h] BYREF\\n int v7; // [esp+6h] [ebp-5Eh]\\n int v8; // [esp+Ah] [ebp-5Ah]\\n _BYTE v9[2]; // [esp+Eh] [ebp-56h] BYREF\\n _BYTE v10[68]; // [esp+10h] [ebp-54h] BYREF\\n _BYTE v11[2]; // [esp+54h] [ebp-10h] BYREF\\n int v12; // [esp+56h] [ebp-Eh]\\n int v13; // [esp+5Ah] [ebp-Ah]\\n int v14; // [esp+5Eh] [ebp-6h]\\n\\n v2 = v1; /*0xffe0ffc4*/\\n if ( !v1 ) /*0xffe0ffc8*/\\n return -2147483646; /*0xffe0ffca*/\\n sub_FFE10490(&n384, 78); /*0xffe0ffda*/\\n v8 = -2046754816; /*0xffe0ffe4*/\\n n384 = 384; /*0xffe0ffed*/\\n sub_FFE105B3(v9, 0); /*0xffe0fff4*/\\n sub_FFE105B3(v10, 4608); /*0xffe10001*/\\n v7 = sub_FFE10573(14); /*0xffe1000e*/\\n result = (*(int (__cdecl **)(int, int, __int16 *, int, _BYTE *))(v2 + 12))(v2, 14, &n384, 14, v11); /*0xffe1001e*/\\n if ( result >= 0 )\\n {\\n n0xE = sub_FFE10573(v12); /*0xffe1002b*/\\n if (... [1538 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e962\",\"type\":\"code\"},{\"addr\":\"0xffe0ef60\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe0ffbe\",\"type\":\"code\"}]}},{\"addr\":\"0xffe10089\",\"name\":\"TrEESerializeCmdHeader\",\"prototype\":\"int __fastcall(int, int)\",\"size\":\"0xa7\",\"comments\":{},\"asm\":\"TrEESerializeCmdHeader (.text @ 0xffe10089):\\nffe10089 push ebx\\nffe1008a push esi\\nffe1008b mov ebx, ecx\\nffe1008d push edi\\nffe1008e mov edi, edx\\nffe10090 test ebx, ebx\\nffe10092 jz loc_FFE100FF\\nffe10094 mov ecx, [ebx]\\nffe10096 call SwapBytes32\\nffe1009b mov edx, eax\\nffe1009d mov ecx, edi\\nffe1009f call WriteUnaligned32\\nffe100a4 movzx edx, word ptr [ebx+4]\\nffe100a8 lea esi, [edi+4]\\nffe100ab rol dx, 8\\nffe100af mov ecx, esi\\nffe100b1 call SwapBytes16\\nffe100b6 movzx eax, word ptr [ebx+4]\\nffe100ba lea edx, [ebx+6]\\nffe100bd add esi, 2\\nffe100c0 push eax\\nffe100c1 mov ecx, esi\\nffe100c3 call CopyMemChecked\\nffe100c8 movzx eax, word ptr [ebx+4]\\nffe100cc add esi, eax\\nffe100ce mov al, [ebx+46h]\\nffe100d1 mov [esi], al\\nffe100d3 lea ecx, [esi+1]\\nffe100d6 movzx edx, word ptr [ebx+47h]\\nffe100da rol dx, 8\\nffe100de call SwapBytes16\\nffe100e3 movzx eax, word ptr [ebx+47h]\\nffe100e7 lea edx, [ebx+49h]\\nffe100ea add esi, 3\\nffe100ed push eax\\nffe100ee mov ecx, esi\\nffe100f0 call CopyM... [1565 chars total]\",\"code\":\"int __fastcall TrEESerializeCmdHeader(int a1, int a2)\\n{\\n int n150995008; // eax\\n int dst; // esi\\n int v6; // esi\\n\\n if ( a1 ) /*0xffe10092*/\\n {\\n n150995008 = SwapBytes32(*(_DWORD *)a1); /*0xffe10096*/\\n sub_FFE105E2(a2, n150995008); /*0xffe1009f*/\\n SwapBytes16((_WORD *)(a2 + 4), __ROL2__(*(_WORD *)(a1 + 4), 8)); /*0xffe100b1*/\\n CopyMemChecked((char *)(a2 + 6), (char *)(a1 + 6), *(unsigned __int16 *)(a1 + 4)); /*0xffe100c3*/\\n dst = *(unsigned __int16 *)(a1 + 4) + a2 + 6; /*0xffe100cc*/\\n *(_BYTE *)dst = *(_BYTE *)(a1 + 70); /*0xffe100d1*/\\n SwapBytes16((_WORD *)(dst + 1), __ROL2__(*(_WORD *)(a1 + 71), 8)); /*0xffe100de*/\\n dst += 3; /*0xffe100ea*/\\n CopyMemChecked((char *)dst, (char *)(a1 + 73), *(unsigned __int16 *)(a1 + 71)); /*0xffe100f0*/\\n v6 = *(unsigned __int16 *)(a1 + 71) + dst; /*0xffe100fb*/\\n }\\n else\\n {\\n sub_FFE105E2(a2, 150995008); /*0xffe10106*/\\n SwapBytes16((_WORD *)(a2 + 4), 0); /*0xffe10112*/\\n *(_BYTE *)(a2 + 6) = 0; /*0xffe10119*/\\n... [1124 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e7c6\",\"type\":\"code\"},{\"addr\":\"0xffe0f57a\",\"type\":\"code\"},{\"addr\":\"0xffe0f73e\",\"type\":\"code\"},{\"addr\":\"0xffe10189\",\"type\":\"code\"},{\"addr\":\"0xffe102b5\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe1008a\",\"type\":\"code\"}]}},{\"addr\":\"0xffe10130\",\"name\":\"TrEESequenceUpdate\",\"prototype\":\"int __fastcall(int, int, unsigned __int16 *p_i)\",\"size\":\"0x12a\",\"comments\":{},\"asm\":\"TrEESequenceUpdate (.text @ 0xffe10130):\\nffe10130 push ebp\\nffe10131 mov ebp, esp\\nffe10133 sub esp, 534h\\nffe10139 push ebx\\nffe1013a mov ebx, ecx\\nffe1013c push esi\\nffe1013d mov esi, edx\\nffe1013f test ebx, ebx\\nffe10141 jnz loc_FFE1014D\\nffe10143 mov eax, 80000002h\\nffe10148 jmp loc_FFE10254\\nffe1014d push edi\\nffe1014e mov edx, 49Dh\\nffe10153 lea ecx, [ebp+var_534]\\nffe10159 call ReallocatePool\\nffe1015e mov eax, 280h\\nffe10163 mov [ebp+var_52E], 5C010000h\\nffe1016d mov ecx, esi\\nffe1016f mov [ebp+var_534], ax\\nffe10176 call SwapBytes32\\nffe1017b lea edx, [ebp+var_522]\\nffe10181 mov [ebp+var_52A], eax\\nffe10187 xor ecx, ecx\\nffe10189 call TrEESerializeCmdHeader\\nffe1018e lea edi, [ebp+var_522]\\nffe10194 mov ecx, eax\\nffe10196 add edi, eax\\nffe10198 call SwapBytes32\\nffe1019d mov esi, [ebp+p_i]\\nffe101a0 mov ecx, edi\\nffe101a2 mov [ebp+var_526], eax\\nffe101a8 movzx edx, word ptr [esi]\\nffe101ab rol dx, 8\\nffe101af call SwapBytes16\\nffe101b4 movzx eax, word ptr [esi]\\nffe101b7 lea ... [2321 chars total]\",\"code\":\"int __fastcall TrEESequenceUpdate(int a1, int a2, unsigned __int16 *p_i)\\n{\\n int result; // eax\\n int v6; // eax\\n char *dst; // edi\\n int v8; // edx\\n unsigned int n0x93; // eax\\n int v10; // eax\\n __int16 n384; // [esp+8h] [ebp-534h] BYREF\\n int v12; // [esp+Ah] [ebp-532h]\\n int n1543569408; // [esp+Eh] [ebp-52Eh]\\n int v14; // [esp+12h] [ebp-52Ah]\\n int v15; // [esp+16h] [ebp-526h]\\n _BYTE v16[1166]; // [esp+1Ah] [ebp-522h] BYREF\\n _BYTE v17[2]; // [esp+4A8h] [ebp-94h] BYREF\\n int v18; // [esp+4AAh] [ebp-92h]\\n int v19; // [esp+4AEh] [ebp-8Eh]\\n\\n if ( !a1 ) /*0xffe10141*/\\n return -2147483646; /*0xffe10143*/\\n ReallocatePool((int)&n384, 0x49Du); /*0xffe10159*/\\n n1543569408 = 1543569408; /*0xffe10163*/\\n n384 = 640; /*0xffe1016f*/\\n v14 = SwapBytes32(a2); /*0xffe10181*/\\n v6 = TrEESerializeCmdHeader(0, (int)v16); /*0xffe10189*/\\n dst = &v16[v6]; /*0xffe10196*/\\n v15 = SwapBytes32(v6); /*0xffe101a2*/\\n SwapBytes16(dst, __ROL2__(*p_i, 8)); /*0xffe101af*/\\n dst += 2; /*0xffe101ba*/\\n ... [1810 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e9a6\",\"type\":\"code\"},{\"addr\":\"0xffe0e9fb\",\"type\":\"code\"},{\"addr\":\"0xffe0f050\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe10131\",\"type\":\"code\"}]}},{\"addr\":\"0xffe1025a\",\"name\":\"TrEESequenceComplete\",\"prototype\":\"int __fastcall(int, int, char *p_n1024, char *p_count)\",\"size\":\"0x155\",\"comments\":{},\"asm\":\"TrEESequenceComplete (.text @ 0xffe1025a):\\nffe1025a push ebp\\nffe1025b lea ebp, [esp-70h]\\nffe1025f sub esp, 57Ch\\nffe10265 push ebx\\nffe10266 mov ebx, ecx\\nffe10268 push esi\\nffe10269 mov esi, edx\\nffe1026b test ebx, ebx\\nffe1026d jnz loc_FFE10279\\nffe1026f mov eax, 80000002h\\nffe10274 jmp loc_FFE103A8\\nffe10279 push edi\\nffe1027a mov edx, 4A1h\\nffe1027f lea ecx, [ebp+70h+var_57C]\\nffe10285 call ReallocatePool\\nffe1028a mov eax, 280h\\nffe1028f mov [ebp+70h+var_576], 3E010000h\\nffe10299 mov ecx, esi\\nffe1029b mov [ebp+70h+var_57C], ax\\nffe102a2 call SwapBytes32\\nffe102a7 lea edx, [ebp+70h+var_56A]\\nffe102ad mov [ebp+70h+var_572], eax\\nffe102b3 xor ecx, ecx\\nffe102b5 call TrEESerializeCmdHeader\\nffe102ba lea edi, [ebp+70h+var_56A]\\nffe102c0 mov ecx, eax\\nffe102c2 add edi, eax\\nffe102c4 call SwapBytes32\\nffe102c9 mov esi, [ebp+70h+p_n1024]\\nffe102cc mov ecx, edi\\nffe102ce mov [ebp+70h+var_56E], eax\\nffe102d4 movzx edx, word ptr [esi]\\nffe102d7 rol dx, 8\\nffe102db call SwapBytes16\\nffe102... [2796 chars total]\",\"code\":\"int __fastcall TrEESequenceComplete(int a1, int a2, char *p_n1024, char *p_count)\\n{\\n int result; // eax\\n int v7; // eax\\n char *dst; // edi\\n char *v9; // edi\\n int v10; // edi\\n unsigned int n0xD5; // eax\\n int v12; // eax\\n unsigned int count; // [esp-4h] [ebp-518h]\\n __int16 n384; // [esp+8h] [ebp-50Ch] BYREF\\n int v15; // [esp+Ah] [ebp-50Ah]\\n int n1040252928; // [esp+Eh] [ebp-506h]\\n int v17; // [esp+12h] [ebp-502h]\\n int v18; // [esp+16h] [ebp-4FEh]\\n _BYTE v19[1170]; // [esp+1Ah] [ebp-4FAh] BYREF\\n char v20[2]; // [esp+4ACh] [ebp-68h] BYREF\\n int v21; // [esp+4AEh] [ebp-66h]\\n int v22; // [esp+4B2h] [ebp-62h]\\n char v23[2]; // [esp+4BAh] [ebp-5Ah] BYREF\\n char src[200]; // [esp+4BCh] [ebp-58h] BYREF\\n\\n if ( !a1 ) /*0xffe1026d*/\\n return -2147483646; /*0xffe1026f*/\\n ReallocatePool((int)&n384, 0x4A1u); /*0xffe10285*/\\n n1040252928 = 1040252928; /*0xffe1028f*/\\n n384 = 640; /*0xffe1029b*/\\n v17 = SwapBytes32(a2); /*0xffe102ad*/\\n v7 = TrEESerializeCmdHeader(0, (int)v19); /*0xf... [2330 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0ea18\",\"type\":\"code\"},{\"addr\":\"0xffe0f13b\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe1025b\",\"type\":\"code\"}]}},{\"addr\":\"0xffe103af\",\"name\":\"GetBootServicesTable\",\"prototype\":\"int()\",\"size\":\"0x32\",\"comments\":{},\"asm\":\"GetBootServicesTable (.text @ 0xffe103af):\\nffe103af push ebp\\nffe103b0 mov ebp, esp\\nffe103b2 push ecx\\nffe103b3 push ecx\\nffe103b4 push esi\\nffe103b5 lea ecx, [ebp+var_8]\\nffe103b8 call DebugPrintAssertChain\\nffe103bd mov eax, [ebp+var_6]\\nffe103c0 mov esi, [eax-4]\\nffe103c3 test esi, esi\\nffe103c5 jnz loc_FFE103DA\\nffe103c7 push offset aPeiservicesVoi\\nffe103cc push 30h\\nffe103ce pop edx\\nffe103cf mov ecx, offset aEHsMdepkgLibra\\nffe103d4 call DebugAssert\\nffe103d9 pop ecx\\nffe103da mov eax, esi\\nffe103dc pop esi\\nffe103dd mov esp, ebp\\nffe103df pop ebp\\nffe103e0 retn\",\"code\":\"int GetBootServicesTable()\\n{\\n int v0; // esi\\n _BYTE v2[2]; // [esp+4h] [ebp-8h] BYREF\\n int v3; // [esp+6h] [ebp-6h]\\n\\n sub_FFE10611(v2); /*0xffe103b8*/\\n v0 = *(_DWORD *)(v3 - 4); /*0xffe103c0*/\\n if ( !v0 ) /*0xffe103c5*/\\n sub_FFE1053E(\\\"PeiServices != ((void *) 0)\\\"); /*0xffe103d4*/\\n return v0; /*0xffe103dc*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e53e\",\"type\":\"code\"},{\"addr\":\"0xffe0e92b\",\"type\":\"code\"},{\"addr\":\"0xffe0f1a0\",\"type\":\"code\"},{\"addr\":\"0xffe104e8\",\"type\":\"code\"},{\"addr\":\"0xffe162aa\",\"type\":\"code\"},{\"addr\":\"0xffe162fe\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe103b0\",\"type\":\"code\"}]}},{\"addr\":\"0xffe103e1\",\"name\":\"CopyMemChecked\",\"prototype\":\"char *__fastcall(char *dst, char *src, unsigned int count)\",\"size\":\"0x71\",\"comments\":{\"0xffe10443\":{\"regular\":\"count\"},\"0xffe10444\":{\"regular\":\"src\"},\"0xffe10445\":{\"regular\":\"dst\"}},\"asm\":\"CopyMemChecked (.text @ 0xffe103e1):\\nffe103e1 push ebx\\nffe103e2 mov ebx, [esp+4+count]\\nffe103e6 push esi\\nffe103e7 mov esi, ecx\\nffe103e9 mov eax, esi\\nffe103eb push edi\\nffe103ec mov edi, edx\\nffe103ee test ebx, ebx\\nffe103f0 jz loc_FFE1044E\\nffe103f2 push ebp\\nffe103f3 lea ebp, [ebx-1]\\nffe103f6 not eax\\nffe103f8 cmp ebp, eax\\nffe103fa jbe loc_FFE10417\\nffe103fc call GetDebugLib\\nffe10401 test eax, eax\\nffe10403 jz loc_FFE10417\\nffe10405 push offset aLength10xfffff\\nffe1040a push 38h\\nffe1040c push offset aEHsMdepkgLibra_0\\nffe10411 call dword ptr [eax+4]\\nffe10414 add esp, 0Ch\\nffe10417 mov eax, edi\\nffe10419 not eax\\nffe1041b cmp ebp, eax\\nffe1041d pop ebp\\nffe1041e jbe loc_FFE1043B\\nffe10420 call GetDebugLib\\nffe10425 test eax, eax\\nffe10427 jz loc_FFE1043B\\nffe10429 push offset aLength10xfffff_0\\nffe1042e push 39h\\nffe10430 push offset aEHsMdepkgLibra_0\\nffe10435 call dword ptr [eax+4]\\nffe10438 add esp, 0Ch\\nffe1043b cmp esi, edi\\nffe1043d jnz loc_FFE10443\\nffe1043f mov eax, ... [1202 chars total]\",\"code\":\"char *__fastcall CopyMemChecked(char *dst, char *src, unsigned int count)\\n{\\n char *dst_1; // eax\\n int v6; // eax\\n int v7; // eax\\n\\n dst_1 = dst; /*0xffe103e9*/\\n if ( count ) /*0xffe103f0*/\\n {\\n if ( count - 1 > ~(unsigned int)dst ) /*0xffe103fa*/\\n {\\n v6 = sub_FFE104E3(); /*0xffe103fc*/\\n if ( v6 ) /*0xffe10403*/\\n (*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))( /*0xffe10411*/\\n \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\CopyMemWrapper.c\\\",\\n 56,\\n \\\"(Length - 1) <= (0xFFFFFFFF - (UINTN)DestinationBuffer)\\\");\\n }\\n if ( count - 1 > ~(unsigned int)src ) /*0xffe1041e*/\\n {\\n v7 = sub_FFE104E3(); /*0xffe10420*/\\n if ( v7 ) /*0xffe10427*/\\n (*(void (__cdecl **)(const char *, int, const char *))(v7 + 4))( /*0xffe10435*/\\n \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\CopyMemWrapper.c\\\",\\n 57,\\n \\\"(Length - 1) <= (0xFFFFFFFF - (UINTN)SourceBuffer)\\\");\\n }\\n if ( dst == src ) /*0xff... [1141 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e4b1\",\"type\":\"code\"},{\"addr\":\"0xffe0e98e\",\"type\":\"code\"},{\"addr\":\"0xffe0e9e9\",\"type\":\"code\"},{\"addr\":\"0xffe0ea61\",\"type\":\"code\"},{\"addr\":\"0xffe0ecac\",\"type\":\"code\"},{\"addr\":\"0xffe0ece0\",\"type\":\"code\"},{\"addr\":\"0xffe0ecfd\",\"type\":\"code\"},{\"addr\":\"0xffe0ed32\",\"type\":\"code\"},{\"addr\":\"0xffe0ed65\",\"type\":\"code\"},{\"addr\":\"0xffe0ed98\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe103e2\",\"type\":\"code\"}]}},{\"addr\":\"0xffe10452\",\"name\":\"AllocatePool\",\"prototype\":\"void *__fastcall(void *buf, unsigned int count)\",\"size\":\"0x3e\",\"comments\":{\"0xffe10480\":{\"regular\":\"value\"},\"0xffe10482\":{\"regular\":\"count\"},\"0xffe10483\":{\"regular\":\"buf\"}},\"asm\":\"AllocatePool (.text @ 0xffe10452):\\nffe10452 push ebx\\nffe10453 push esi\\nffe10454 push edi\\nffe10455 mov edi, edx\\nffe10457 or esi, 0FFFFFFFFh\\nffe1045a mov ebx, ecx\\nffe1045c sub esi, ebx\\nffe1045e lea eax, [edi-1]\\nffe10461 cmp eax, esi\\nffe10463 jbe loc_FFE10480\\nffe10465 call GetDebugLib\\nffe1046a test eax, eax\\nffe1046c jz loc_FFE10480\\nffe1046e push offset aLength10xfffff_1\\nffe10473 push 36h\\nffe10475 push offset aEHsMdepkgLibra_1\\nffe1047a call dword ptr [eax+4]\\nffe1047d add esp, 0Ch\\nffe10480 push 0\\nffe10482 push edi\\nffe10483 push ebx\\nffe10484 call SetMem\\nffe10489 add esp, 0Ch\\nffe1048c pop edi\\nffe1048d pop esi\\nffe1048e pop ebx\\nffe1048f retn\",\"code\":\"void *__fastcall AllocatePool(void *buf, unsigned int count)\\n{\\n int DebugLib; // eax\\n\\n if ( count - 1 > -1 - (int)buf ) /*0xffe10463*/\\n {\\n DebugLib = GetDebugLib(); /*0xffe10465*/\\n if ( DebugLib ) /*0xffe1046c*/\\n (*(void (__cdecl **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe1047a*/\\n \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\SetMemWrapper.c\\\",\\n 54,\\n \\\"(Length - 1) <= (0xFFFFFFFF - (UINTN)Buffer)\\\");\\n }\\n return SetMem(buf, count, 0); /*0xffe1048c*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0ec05\",\"type\":\"code\"},{\"addr\":\"0xffe0ec20\",\"type\":\"code\"},{\"addr\":\"0xffe0ec39\",\"type\":\"code\"},{\"addr\":\"0xffe0ec52\",\"type\":\"code\"},{\"addr\":\"0xffe0ec6b\",\"type\":\"code\"},{\"addr\":\"0xffe0f1d5\",\"type\":\"code\"},{\"addr\":\"0xffe0f31b\",\"type\":\"code\"},{\"addr\":\"0xffe0f42e\",\"type\":\"code\"},{\"addr\":\"0xffe118f4\",\"type\":\"code\"},{\"addr\":\"0xffe11a56\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe10453\",\"type\":\"code\"}]}},{\"addr\":\"0xffe10490\",\"name\":\"ReallocatePool\",\"prototype\":\"void *__fastcall(int p_n384, unsigned int n78)\",\"size\":\"0x53\",\"comments\":{\"0xffe104d6\":{\"regular\":\"count\"},\"0xffe104d7\":{\"regular\":\"buf\"}},\"asm\":\"ReallocatePool (.text @ 0xffe10490):\\nffe10490 push ebx\\nffe10491 push esi\\nffe10492 mov esi, ecx\\nffe10494 mov ebx, offset aEHsMdepkgLibra_2\\nffe10499 push edi\\nffe1049a mov edi, edx\\nffe1049c test esi, esi\\nffe1049e jnz loc_FFE104B7\\nffe104a0 call GetDebugLib\\nffe104a5 test eax, eax\\nffe104a7 jz loc_FFE104B7\\nffe104a9 push offset aBufferVoid0\\nffe104ae push 35h\\nffe104b0 push ebx\\nffe104b1 call dword ptr [eax+4]\\nffe104b4 add esp, 0Ch\\nffe104b7 mov eax, esi\\nffe104b9 neg eax\\nffe104bb cmp edi, eax\\nffe104bd jbe loc_FFE104D6\\nffe104bf call GetDebugLib\\nffe104c4 test eax, eax\\nffe104c6 jz loc_FFE104D6\\nffe104c8 push offset aLength0xffffff\\nffe104cd push 36h\\nffe104cf push ebx\\nffe104d0 call dword ptr [eax+4]\\nffe104d3 add esp, 0Ch\\nffe104d6 push edi\\nffe104d7 push esi\\nffe104d8 call ZeroMem\\nffe104dd pop ecx\\nffe104de pop ecx\\nffe104df pop edi\\nffe104e0 pop esi\\nffe104e1 pop ebx\\nffe104e2 retn\",\"code\":\"void *__fastcall ReallocatePool(int p_n384, unsigned int n78)\\n{\\n int DebugLib; // eax\\n int v5; // eax\\n\\n if ( !p_n384 ) /*0xffe1049e*/\\n {\\n DebugLib = GetDebugLib(); /*0xffe104a0*/\\n if ( DebugLib ) /*0xffe104a7*/\\n (*(void (__cdecl **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe104b1*/\\n \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\ZeroMemWrapper.c\\\",\\n 53,\\n \\\"Buffer != ((void *) 0)\\\");\\n }\\n if ( n78 > -p_n384 ) /*0xffe104bd*/\\n {\\n v5 = GetDebugLib(); /*0xffe104bf*/\\n if ( v5 ) /*0xffe104c6*/\\n (*(void (__cdecl **)(const char *, int, const char *))(v5 + 4))( /*0xffe104d0*/\\n \\\"e:\\\\\\\\hs\\\\\\\\MdePkg\\\\\\\\Library\\\\\\\\BaseMemoryLibRepStr\\\\\\\\ZeroMemWrapper.c\\\",\\n 54,\\n \\\"Length <= (0xFFFFFFFF - (UINTN)Buffer + 1)\\\");\\n }\\n return ZeroMem((void *)p_n384, n78); /*0xffe104df*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0ffda\",\"type\":\"code\"},{\"addr\":\"0xffe10159\",\"type\":\"code\"},{\"addr\":\"0xffe10285\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe10491\",\"type\":\"code\"}]}}]}"}, {"type": "text", "text": "Output truncated. Run: curl -o .ida-mcp/d3b9e92f-0758-4730-a6cc-1a95774f3f75.json http://127.0.0.1:13375/output/d3b9e92f-0758-4730-a6cc-1a95774f3f75.json"}], "isError": false, "_meta": {"ida_mcp": {"output_truncated": true, "total_chars": 285027, "output_id": "d3b9e92f-0758-4730-a6cc-1a95774f3f75", "download_url": "http://127.0.0.1:13375/output/d3b9e92f-0758-4730-a6cc-1a95774f3f75.json", "download_hint": "Output truncated. Run: curl -o .ida-mcp/d3b9e92f-0758-4730-a6cc-1a95774f3f75.json http://127.0.0.1:13375/output/d3b9e92f-0758-4730-a6cc-1a95774f3f75.json"}}}, "id": 1}