//
// TCMPEI.efi - Full Decompilation
// Source: IDA Pro MCP port 13382
// Functions: 42
//
#include <Uefi.h>
#include <PiPei.h>
{"addr":"0xffe2d800","code":"char *internal_memcpy(char *dst, char *src, unsigned int count)\n{\n unsigned int count_1; // edx\n char *dst_1; // edi\n char *src_1; // esi\n\n count_1 = count; /*0xffe2d80a*/\n if ( src < dst && &src[count - 1] >= dst ) /*0xffe2d818*/\n {\n src_1 = &src[count - 1]; /*0xffe2d82c*/\n dst_1 = &dst[count - 1]; /*0xffe2d82e*/\n }\n else\n {\n count_1 = count & 3; /*0xffe2d81c*/\n qmemcpy(dst, src, 4 * (count >> 2)); /*0xffe2d825*/\n src_1 = &src[4 * (count >> 2)]; /*0xffe2d825*/\n dst_1 = &dst[4 * (count >> 2)]; /*0xffe2d825*/\n }\n qmemcpy(dst_1, src_1, count_1); /*0xffe2d835*/\n return dst; /*0xffe2d83c*/\n}"}
{"addr":"0xffe2d840","code":"void *internal_memset(void *buf, unsigned int count, char value)\n{\n memset(buf, value, count); /*0xffe2d84d*/\n return buf; /*0xffe2d853*/\n}"}
{"addr":"0xffe2d860","code":"int fn_addr(int a1, int a2, int a3, int a4)\n{\n do /*0xffe2d879*/\n {\n *(_DWORD *)(a1 + 8 *a2 - 8) = a3; /*0xffe2d871*/\n *(_DWORD *)(a1 + 8 *a2-- - 4) = a4; /*0xffe2d875*/\n }\n while ( a2 ); /*0xffe2d879*/\n return a1; /*0xffe2d87d*/\n}"}
{"addr":"0xffe2d880","code":"void *sub_FFE2D880(void *buf, unsigned int count, int value)\n{\n memset32(buf, value, count); /*0xffe2d88d*/\n return buf; /*0xffe2d893*/\n}"}
{"addr":"0xffe2d940","code":"EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)\n{\n void *v2; // ecx\n void *v3; // ecx\n int v4; // eax\n\n if ( *(char *)(sub_FFE2E6B0(v2) + 1024068) >= 0 ) /*0xffe2d950*/\n {\n sub_FFE2E6BC(); /*0xffe2d952*/\n v4 = sub_FFE2E6B0(v3); /*0xffe2d957*/\n *(_BYTE *)(v4 + 1024068) |= 0x80u; /*0xffe2d962*/\n }\n if ( *(_WORD *)(dword_FFE2ECDC + 3840) == 6990 ) /*0xffe2d97d*/\n return (*(int ( **)(EFI_SYSTEM_TABLE *, void *))(LODWORD(SystemTable->Hdr.Signature) + 24))( /*0xffe2d991*/\n SystemTable,\n &unk_FFE2ECD0);\n else\n return -1610612735; /*0xffe2d97f*/\n}","refs":[{"addr":"0xffe2e6bc","name":"sub_FFE2E6BC"},{"addr":"0xffe2e6b0","name":"sub_FFE2E6B0"},{"addr":"0xffe2ecd0","name":"unk_FFE2ECD0"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"}]}
{"addr":"0xffe2d997","code":"int sub_FFE2D997(int this, __int16 n2)\n{\n int v2; // eax\n __int16 v4; // [esp+0h] [ebp-1Ch] BYREF\n int n201326592; // [esp+2h] [ebp-1Ah]\n int v6; // [esp+6h] [ebp-16h]\n __int16 v7; // [esp+Ah] [ebp-12h]\n _WORD v8[8]; // [esp+Ch] [ebp-10h] BYREF\n\n v4 = -16128; /*0xffe2d9a6*/\n n201326592 = 201326592; /*0xffe2d9b5*/\n v6 = -1719664640; /*0xffe2d9c3*/\n v7 = __ROL2__(n2, 8); /*0xffe2d9ca*/\n v2 = sub_FFE2E406(dword_FFE2ECDC, (int)&v4, 0xCu, (int)v8, 10); /*0xffe2d9ce*/\n return sub_FFE2DD46(v2, v8); /*0xffe2d9e1*/\n}","refs":[{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"}]}
{"addr":"0xffe2d9e5","code":"int sub_FFE2D9E5()\n{\n int v0; // eax\n _WORD v2[6]; // [esp+0h] [ebp-1Ch] BYREF\n __int16 v3; // [esp+Ch] [ebp-10h] BYREF\n int n167772160; // [esp+Eh] [ebp-Eh]\n int n1400897536; // [esp+12h] [ebp-Ah]\n\n n167772160 = 167772160; /*0xffe2d9f0*/\n v3 = -16128; /*0xffe2d9f7*/\n n1400897536 = 1400897536; /*0xffe2da06*/\n v0 = sub_FFE2E406(dword_FFE2ECDC, (int)&v3, 0xAu, (int)v2, 10); /*0xffe2da14*/\n return sub_FFE2DD46(v0, v2); /*0xffe2da27*/\n}","refs":[{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"}]}
{"addr":"0xffe2da2b","code":"int sub_FFE2DA2B()\n{\n int v0; // eax\n _WORD v2[6]; // [esp+0h] [ebp-1Ch] BYREF\n __int16 v3; // [esp+Ch] [ebp-10h] BYREF\n int n167772160; // [esp+Eh] [ebp-Eh]\n int n1887436800; // [esp+12h] [ebp-Ah]\n\n n167772160 = 167772160; /*0xffe2da36*/\n v3 = -16128; /*0xffe2da3d*/\n n1887436800 = 1887436800; /*0xffe2da4c*/\n v0 = sub_FFE2E406(dword_FFE2ECDC, (int)&v3, 0xAu, (int)v2, 10); /*0xffe2da5a*/\n return sub_FFE2DD46(v0, v2); /*0xffe2da6d*/\n}","refs":[{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"}]}
{"addr":"0xffe2da71","code":"int sub_FFE2DA71(int this, char a2)\n{\n int v2; // eax\n __int16 v4; // [esp+0h] [ebp-1Ch] BYREF\n int n184549376; // [esp+2h] [ebp-1Ah]\n int n1920991232; // [esp+6h] [ebp-16h]\n char v7; // [esp+Ah] [ebp-12h]\n _WORD v8[8]; // [esp+Ch] [ebp-10h] BYREF\n\n n184549376 = 184549376; /*0xffe2da7c*/\n v4 = -16128; /*0xffe2da83*/\n n1920991232 = 1920991232; /*0xffe2da92*/\n v7 = a2; /*0xffe2daa0*/\n v2 = sub_FFE2E406(dword_FFE2ECDC, (int)&v4, 0xBu, (int)v8, 10); /*0xffe2daa3*/\n return sub_FFE2DD46(v2, v8); /*0xffe2dab6*/\n}","refs":[{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"}]}
{"addr":"0xffe2daba","code":"int __usercall sub_FFE2DABA@<eax>(unsigned int n4@<edx>, unsigned int n0x108, int n17, int a4)\n{\n int n17_1; // esi\n int v5; // eax\n _BYTE *v6; // edx\n _WORD v8[7]; // [esp+8h] [ebp-40h] BYREF\n _BYTE v9[22]; // [esp+16h] [ebp-32h] BYREF\n __int16 v10; // [esp+2Ch] [ebp-1Ch] BYREF\n int n369098752; // [esp+2Eh] [ebp-1Ah]\n int n1702887424; // [esp+32h] [ebp-16h]\n unsigned __int32 v13; // [esp+36h] [ebp-12h]\n int n0x4000000; // [esp+3Ah] [ebp-Eh]\n unsigned __int32 v15; // [esp+3Eh] [ebp-Ah]\n\n n17_1 = n17; /*0xffe2dac2*/\n v10 = -16128; /*0xffe2daca*/\n v15 = _byteswap_ulong(n0x108); /*0xffe2dad4*/\n n369098752 = 369098752; /*0xffe2dade*/\n n1702887424 = 1702887424; /*0xffe2daeb*/\n v13 = _byteswap_ulong(n4); /*0xffe2dafb*/\n n0x4000000 = 0x4000000; /*0xffe2dafe*/\n v5 = sub_FFE2E406(dword_FFE2ECDC, (int)&v10, 0x16u, (int)v8, n17 + 14); /*0xffe2db05*/\n v6 = (_BYTE *)(n17 + a4); /*0xffe2db17*/\n do /*0xffe2db23*/\n {\n --v6; /*0xffe2db1a*/\n *v6 = v9[(_DWORD)v6 - a4]; /*0xffe2db1e*/\n --n17_1; /*0xffe2db20*/\n }\n while ( n17_1 ); /*0xffe2db23*/\n return sub_FFE2DD46(v5, v8); /*0xffe2db32*/\n}","refs":[{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"}]}
{"addr":"0xffe2db38","code":"int __thiscall sub_FFE2DB38(void *this)\n{\n int v1; // eax\n int v2; // esi\n int v3; // eax\n\n v1 = sub_FFE2D997((int)this, 1); /*0xffe2db3c*/\n v2 = v1; /*0xffe2db41*/\n if ( v1 ) /*0xffe2db45*/\n {\n sub_FFE2E4D2(0x80000000, \"Tcm StartUp Clear error, returned %r\\n\", v1); /*0xffe2db4d*/\n }\n else\n {\n v3 = sub_FFE2D9E5(); /*0xffe2db4f*/\n v2 = v3; /*0xffe2db54*/\n if ( v3 ) /*0xffe2db58*/\n sub_FFE2E4D2(0x80000000, \"Tcm ContinueSelfTest error, returned %r\\n\", v3); /*0xffe2db65*/\n }\n return v2; /*0xffe2db6f*/\n}","refs":[{"addr":"0xffe2d997","name":"sub_FFE2D997"},{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e778","name":"aTcmStartupClea","string":"Tcm StartUp Clear error, returned %r\n"},{"addr":"0xffe2d9e5","name":"sub_FFE2D9E5"},{"addr":"0xffe2e7a0","name":"aTcmContinuesel","string":"Tcm ContinueSelfTest error, returned %r\n"}]}
{"addr":"0xffe2db71","code":"int __thiscall sub_FFE2DB71(void *this)\n{\n int v1; // eax\n int v2; // esi\n int v3; // eax\n\n v1 = sub_FFE2D997((int)this, 2); /*0xffe2db75*/\n v2 = v1; /*0xffe2db7a*/\n if ( v1 ) /*0xffe2db7e*/\n {\n sub_FFE2E4D2(0x80000000, \"Tcm Startup state error, returned %r\\n\", v1); /*0xffe2db86*/\n }\n else\n {\n v3 = sub_FFE2D9E5(); /*0xffe2db88*/\n v2 = v3; /*0xffe2db8d*/\n if ( v3 ) /*0xffe2db91*/\n sub_FFE2E4D2(0x80000000, \"Tcm ContinueSelfTest error, returned %r\\n\", v3); /*0xffe2db9e*/\n }\n return v2; /*0xffe2dba8*/\n}","refs":[{"addr":"0xffe2d997","name":"sub_FFE2D997"},{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e7cc","name":"aTcmStartupStat","string":"Tcm Startup state error, returned %r\n"},{"addr":"0xffe2d9e5","name":"sub_FFE2D9E5"},{"addr":"0xffe2e7a0","name":"aTcmContinuesel","string":"Tcm ContinueSelfTest error, returned %r\n"}]}
{"addr":"0xffe2dbaa","code":"int sub_FFE2DBAA()\n{\n int v0; // eax\n int v1; // eax\n int v2; // esi\n int v3; // eax\n int v5; // [esp-4h] [ebp-20h]\n _WORD v6[6]; // [esp+4h] [ebp-18h] BYREF\n __int16 v7; // [esp+10h] [ebp-Ch] BYREF\n int n167772160; // [esp+12h] [ebp-Ah]\n int n1870659584; // [esp+16h] [ebp-6h]\n\n n167772160 = 167772160; /*0xffe2dbb6*/\n v7 = -16128; /*0xffe2dbbd*/\n n1870659584 = 1870659584; /*0xffe2dbcc*/\n v0 = sub_FFE2E406(dword_FFE2ECDC, (int)&v7, 0xAu, (int)v6, 10); /*0xffe2dbda*/\n v1 = sub_FFE2DD46(v0, v6); /*0xffe2dbe7*/\n v2 = v1; /*0xffe2dbec*/\n if ( v1 ) /*0xffe2dbf1*/\n {\n sub_FFE2E4D2(0x80000000, \"Tcm Physical enable error, returned %r\\n\", v1); /*0xffe2dbf9*/\n }\n else\n {\n v3 = sub_FFE2DA71(v5, 0); /*0xffe2dbfd*/\n v2 = v3; /*0xffe2dc02*/\n if ( v3 ) /*0xffe2dc06*/\n sub_FFE2E4D2(0x80000000, \"Tcm Set activate error, returned %r\\n\", v3); /*0xffe2dc13*/\n }\n return v2; /*0xffe2dc1d*/\n}","refs":[{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"},{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e7f4","name":"aTcmPhysicalEna","string":"Tcm Physical enable error, returned %r\n"},{"addr":"0xffe2da71","name":"sub_FFE2DA71"},{"addr":"0xffe2e81c","name":"aTcmSetActivate","string":"Tcm Set activate error, returned %r\n"}]}
{"addr":"0xffe2dc22","code":"int __thiscall sub_FFE2DC22(void *this)\n{\n int v1; // eax\n int v2; // esi\n int v3; // eax\n\n v1 = sub_FFE2DA71((int)this, 1); /*0xffe2dc25*/\n v2 = v1; /*0xffe2dc2a*/\n if ( v1 ) /*0xffe2dc2e*/\n {\n sub_FFE2E4D2(0x80000000, \"Tcm Set deactivate error, returned %r\\n\", v1); /*0xffe2dc36*/\n }\n else\n {\n v3 = sub_FFE2DA2B(); /*0xffe2dc38*/\n v2 = v3; /*0xffe2dc3d*/\n if ( v3 ) /*0xffe2dc41*/\n sub_FFE2E4D2(0x80000000, \"Tcm Physical disable error, returned %r\\n\", v3); /*0xffe2dc4e*/\n }\n return v2; /*0xffe2dc58*/\n}","refs":[{"addr":"0xffe2da71","name":"sub_FFE2DA71"},{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e844","name":"aTcmSetDeactiva","string":"Tcm Set deactivate error, returned %r\n"},{"addr":"0xffe2da2b","name":"sub_FFE2DA2B"},{"addr":"0xffe2e86c","name":"aTcmPhysicalDis","string":"Tcm Physical disable error, returned %r\n"}]}
{"addr":"0xffe2dc5a","code":"int sub_FFE2DC5A()\n{\n int v0; // eax\n int v1; // eax\n int v2; // esi\n _WORD v4[6]; // [esp+4h] [ebp-18h] BYREF\n __int16 v5; // [esp+10h] [ebp-Ch] BYREF\n int n167772160; // [esp+12h] [ebp-Ah]\n int n1568669696; // [esp+16h] [ebp-6h]\n\n n167772160 = 167772160; /*0xffe2dc66*/\n v5 = -16128; /*0xffe2dc6d*/\n n1568669696 = 1568669696; /*0xffe2dc7c*/\n v0 = sub_FFE2E406(dword_FFE2ECDC, (int)&v5, 0xAu, (int)v4, 10); /*0xffe2dc8a*/\n v1 = sub_FFE2DD46(v0, v4); /*0xffe2dc97*/\n v2 = v1; /*0xffe2dc9c*/\n if ( v1 ) /*0xffe2dca1*/\n sub_FFE2E4D2(0x80000000, \"Tcm Force clear error, returned %r\\n\", v1); /*0xffe2dcae*/\n return v2; /*0xffe2dcb8*/\n}","refs":[{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2ecdc","name":"dword_FFE2ECDC"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"},{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e898","name":"aTcmForceClearE","string":"Tcm Force clear error, returned %r\n"}]}
{"addr":"0xffe2dcbd","code":"int sub_FFE2DCBD(bool *a1, bool *a2, bool *a3)\n{\n int v3; // eax\n int v4; // esi\n bool v6; // zf\n int v7; // eax\n _BYTE v8[23]; // [esp+4h] [ebp-18h] BYREF\n char v9; // [esp+1Bh] [ebp-1h] BYREF\n\n v3 = sub_FFE2DABA(4u, 0x108u, 17, (int)v8); /*0xffe2dcd2*/\n v4 = v3; /*0xffe2dcd7*/\n if ( v3 ) /*0xffe2dcde*/\n {\n sub_FFE2E4D2(0x80000000, \"Tcm Get Pflag error, returned %r\\n\", v3); /*0xffe2dceb*/\n return v4; /*0xffe2dcf5*/\n }\n v6 = v8[4] == 0; /*0xffe2dd01*/\n *a1 = v8[2] == 0; /*0xffe2dd05*/\n *a2 = v6; /*0xffe2dd0d*/\n v7 = sub_FFE2DABA(5u, 0x111u, 1, (int)&v9); /*0xffe2dd1d*/\n v4 = v7; /*0xffe2dd22*/\n if ( v7 ) /*0xffe2dd29*/\n {\n sub_FFE2E4D2(0x80000000, \"Tcm Get Vflag error, returned %r\\n\", v7); /*0xffe2dd31*/\n return v4; /*0xffe2dd31*/\n }\n *a3 = v9 != 0; /*0xffe2dd3d*/\n return 0; /*0xffe2dd41*/\n}","refs":[{"addr":"0xffe2daba","name":"sub_FFE2DABA"},{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e8bc","name":"aTcmGetPflagErr","string":"Tcm Get Pflag error, returned %r\n"},{"addr":"0xffe2e8e0","name":"aTcmGetVflagErr","string":"Tcm Get Vflag error, returned %r\n"}]}
{"addr":"0xffe2dd46","code":"int sub_FFE2DD46(int a1, _WORD *a2)\n{\n if ( !a1 && *a2 != 0xC400 ) /*0xffe2dd52*/\n {\n sub_FFE2E4D2(0x80000000, \"Tcm no response.\\n\"); /*0xffe2dd5e*/\n return -2147483632; /*0xffe2dd65*/\n }\n return a1; /*0xffe2dd6c*/\n}","refs":[{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e904","name":"aTcmNoResponse","string":"Tcm no response.\n"}]}
{"addr":"0xffe2dd6d","code":"int sub_FFE2DD6D(_DWORD *dst, _DWORD *a2, int *this)\n{\n int n2043430169; // ebp\n int v4; // ecx\n int v5; // edi\n int v6; // ebx\n int v7; // esi\n int n16; // eax\n int v9; // edx\n int v10; // ecx\n int v11; // edx\n int v12; // ecx\n _DWORD *v13; // edi\n int v14; // edi\n int v15; // eax\n int v16; // edx\n _DWORD *v17; // ecx\n int v18; // ecx\n int v19; // edx\n int v20; // edx\n int v22; // [esp+10h] [ebp-2Ch]\n int v23; // [esp+14h] [ebp-28h]\n int v24; // [esp+18h] [ebp-24h]\n int v27; // [esp+24h] [ebp-18h]\n int n16_1; // [esp+28h] [ebp-14h]\n int v29; // [esp+2Ch] [ebp-10h]\n int v30; // [esp+2Ch] [ebp-10h]\n int v31; // [esp+30h] [ebp-Ch]\n int v32; // [esp+34h] [ebp-8h]\n\n n2043430169 = 2043430169; /*0xffe2dd77*/\n v4 = *this; /*0xffe2dd87*/\n v5 = *(this + 2); /*0xffe2dd89*/\n v6 = *(this + 4); /*0xffe2dd8c*/\n v31 = *(this + 3); /*0xffe2dd9d*/\n v23 = *(this + 5); /*0xffe2dda4*/\n v24 = *(this + 6); /*0xffe2ddab*/\n v7 = *(this + 1); /*0xffe2ddb2*/\n v32 = *(this + 7); /*0xffe2ddb6*/\n n16 = 0; /*0xffe2ddba*/\n v22 = *this; /*0xffe2ddbc*/\n v27 = v5; /*0xffe2ddc0*/\n n16_1 = 0; /*0xffe2ddc4*/\n while ( 1 )\n {\n if ( n16 )\n n2043430169 = n16 == 16 ? -1651869049 : __ROL4__(n2043430169, 1);\n else\n n2043430169 = 2043430169; /*0xffe2ddd2*/\n v9 = __ROL4__(v4, 12); /*0xffe2dde9*/\n v10 = __ROL4__(n2043430169 + v9 + v6, 7); /*0xffe2ddf1*/\n v11 = v10 ^ v9; /*0xffe2ddf4*/\n v29 = v10; /*0xffe2ddf6*/\n if ( n16 > 15 ) /*0xffe2ddfd*/\n {\n v12 = v5 & v7 | v22 & (v5 | v7); /*0xffe2de15*/\n n16 = n16_1; /*0xffe2de17*/\n }\n else\n {\n v12 = v5 ^ v7 ^ v22; /*0xffe2de05*/\n }\n v13 = a2++; /*0xffe2de1b*/\n v14 = v31 + v11 + v12 + *v13; /*0xffe2de2c*/\n if ( n16 > 15 ) /*0xffe2de33*/\n {\n v16 = v23 & v6 | v24 & ~v6; /*0xffe2de4d*/\n v15 = v24; /*0xffe2de4f*/\n }\n else\n {\n v15 = v24; /*0xffe2de39*/\n v16 = v24 ^ v23 ^ v6; /*0xffe2de3d*/\n }\n v17 = dst++; /*0xffe2de53*/\n v18 = v32 + v29 + v16 + *v17; /*0xffe2de68*/\n v32 = v15; /*0xffe2de6c*/\n v24 = __ROR4__(v23, 13); /*0xffe2de77*/\n v23 = v6; /*0xffe2de7d*/\n v31 = v27; /*0xffe2de8b*/\n v19 = v7; /*0xffe2de93*/\n v7 = v22; /*0xffe2de95*/\n v6 = v18 ^ __ROL4__(v18, 9) ^ __ROR4__(v18, 15); /*0xffe2de99*/\n v20 = __ROL4__(v19, 9); /*0xffe2de9b*/\n v4 = v14; /*0xffe2de9e*/\n n16 = n16_1 + 1; /*0xffe2dea0*/\n v27 = v20; /*0xffe2dea1*/\n v30 = v22; /*0xffe2dea5*/\n v22 = v14; /*0xffe2dea9*/\n n16_1 = n16; /*0xffe2dead*/\n if ( n16 > 63 ) /*0xffe2deb4*/\n break; /*0xffe2deb4*/\n v5 = v20; /*0xffe2ddca*/\n }\n *this ^= v14; /*0xffe2dec9*/\n *(this + 1) ^= v30; /*0xffe2decf*/\n *(this + 5) ^= v23; /*0xffe2ded6*/\n *(this + 2) ^= v20; /*0xffe2ded9*/\n *(this + 4) ^= v6; /*0xffe2dedc*/\n *(this + 3) ^= v31; /*0xffe2dedf*/\n *(this + 6) ^= v24; /*0xffe2dee6*/\n *(this + 7) ^= v32; /*0xffe2deed*/\n return v24; /*0xffe2dec8*/\n}"}
{"addr":"0xffe2def7","code":"char sub_FFE2DEF7(int this, unsigned int n0x40, int thisa)\n{\n unsigned int v3; // edx\n char *v4; // esi\n char *v5; // edi\n char v6; // cl\n char result; // al\n char v8; // cl\n\n v3 = n0x40 >> 2; /*0xffe2def7*/\n if ( v3 ) /*0xffe2defc*/\n {\n v4 = (char *)(thisa + 1); /*0xffe2df04*/\n v5 = (char *)(this + 3); /*0xffe2df05*/\n do /*0xffe2df25*/\n {\n v6 = *(v4 - 1); /*0xffe2df0a*/\n *(v4 - 1) = *v5; /*0xffe2df0d*/\n result = *(v5 - 1); /*0xffe2df10*/\n *v5 = v6; /*0xffe2df13*/\n v5 += 4; /*0xffe2df15*/\n v8 = *v4; /*0xffe2df18*/\n *v4 = result; /*0xffe2df1a*/\n v4 += 4; /*0xffe2df1c*/\n *(v4 - 3) = v8; /*0xffe2df1f*/\n --v3; /*0xffe2df22*/\n }\n while ( v3 ); /*0xffe2df25*/\n }\n return result; /*0xffe2df29*/\n}"}
{"addr":"0xffe2df2a","code":"int __thiscall sub_FFE2DF2A(int *this)\n{\n int *dst_1; // esi\n int n64; // ebx\n _DWORD *dst_2; // esi\n int n52; // edi\n int v6; // ecx\n int v7; // edx\n int v8; // ecx\n int v9; // eax\n _DWORD dst[68]; // [esp+10h] [ebp-210h] BYREF\n _DWORD v13[64]; // [esp+120h] [ebp-100h] BYREF\n\n dst_1 = this + 10; /*0xffe2df36*/\n n64 = 64; /*0xffe2df3c*/\n sub_FFE2DEF7((int)(this + 10), 0x40u, (int)(this + 10)); /*0xffe2df41*/\n qmemcpy(dst, dst_1, 0x40u); /*0xffe2df4e*/\n dst_2 = dst; /*0xffe2df52*/\n n52 = 52; /*0xffe2df56*/\n do /*0xffe2df84*/\n {\n v6 = dst_2[3]; /*0xffe2df5a*/\n v7 = *dst_2 ^ dst_2[7] ^ __ROL4__(dst_2[13], 15); /*0xffe2df63*/\n ++dst_2; /*0xffe2df65*/\n dst_2[15] = v7 ^ dst_2[9] ^ __ROR4__(v7, 9) ^ __ROL4__(v7, 15) ^ __ROL4__(v6, 7); /*0xffe2df7e*/\n --n52; /*0xffe2df81*/\n }\n while ( n52 ); /*0xffe2df84*/\n v8 = 0; /*0xffe2df86*/\n do /*0xffe2df9d*/\n {\n v9 = dst[v8 + 4]; /*0xffe2df88*/\n ++v8; /*0xffe2df8c*/\n dst[v8 + 67] = dst[v8 - 1] ^ v9; /*0xffe2df93*/\n --n64; /*0xffe2df9a*/\n }\n while ( n64 ); /*0xffe2df9d*/\n return sub_FFE2DD6D(dst, v13, this); /*0xffe2dfb1*/\n}","refs":[{"addr":"0xffe2def7","name":"sub_FFE2DEF7"},{"addr":"0xffe2dd6d","name":"sub_FFE2DD6D"}]}
{"addr":"0xffe2dfbc","code":"char __thiscall sub_FFE2DFBC(int this)\n{\n int v2; // edx\n unsigned int n0x40; // eax\n\n v2 = *(_DWORD *)(this + 36); /*0xffe2dfc2*/\n *(_DWORD *)(this + 32) += 8 *v2; /*0xffe2dfca*/\n *(_BYTE *)(v2 + this + 40) = 0x80; /*0xffe2dfcd*/\n n0x40 = ++*(_DWORD *)(this + 36); /*0xffe2dfd5*/\n if ( n0x40 > 0x38 ) /*0xffe2dfdb*/\n {\n while ( n0x40 < 0x40 ) /*0xffe2dfec*/\n {\n *(_BYTE *)(this + n0x40 + 40) = 0; /*0xffe2dfdf*/\n n0x40 = ++*(_DWORD *)(this + 36); /*0xffe2dfe6*/\n }\n sub_FFE2DF2A((int *)this); /*0xffe2dfee*/\n *(_DWORD *)(this + 36) = 0; /*0xffe2dff3*/\n }\n while ( *(_DWORD *)(this + 36) < 0x38u ) /*0xffe2e006*/\n *(_BYTE *)(this + (*(_DWORD *)(this + 36))++ + 40) = 0; /*0xffe2dffb*/\n *(_DWORD *)(this + 96) = 0; /*0xffe2e008*/\n *(_BYTE *)(this + 103) = *(_BYTE *)(this + 32); /*0xffe2e010*/\n *(_BYTE *)(this + 102) = BYTE1(*(_DWORD *)(this + 32)); /*0xffe2e019*/\n *(_BYTE *)(this + 101) = *(_BYTE *)(this + 34); /*0xffe2e01f*/\n *(_BYTE *)(this + 100) = *(_BYTE *)(this + 35); /*0xffe2e025*/\n sub_FFE2DF2A((int *)this); /*0xffe2e028*/\n return sub_FFE2DEF7(this, 0x20u, this); /*0xffe2e039*/\n}","refs":[{"addr":"0xffe2df2a","name":"sub_FFE2DF2A"},{"addr":"0xffe2def7","name":"sub_FFE2DEF7"}]}
{"addr":"0xffe2e03c","code":"char sub_FFE2E03C(_BYTE *a1, int a2)\n{\n int n64; // esi\n int v6[8]; // [esp+10h] [ebp-68h] BYREF\n int v7; // [esp+30h] [ebp-48h]\n int n64_1; // [esp+34h] [ebp-44h]\n _BYTE v9[64]; // [esp+38h] [ebp-40h]\n\n v7 = 0; /*0xffe2e045*/\n v6[0] = 1937774191; /*0xffe2e04f*/\n v6[1] = 1226093241; /*0xffe2e059*/\n v6[2] = 388252375; /*0xffe2e061*/\n v6[3] = -628488704; /*0xffe2e069*/\n v6[4] = -1452330820; /*0xffe2e071*/\n v6[5] = 372324522; /*0xffe2e079*/\n v6[6] = -477237683; /*0xffe2e081*/\n v6[7] = -1325724082; /*0xffe2e089*/\nLABEL_4:\n n64 = 0; /*0xffe2e0ba*/\n n64_1 = 0; /*0xffe2e0bc*/\n while ( a2 ) /*0xffe2e0c2*/\n {\n --a2; /*0xffe2e095*/\n v9[n64] = *a1++; /*0xffe2e096*/\n n64 = n64_1 + 1; /*0xffe2e09f*/\n n64_1 = n64; /*0xffe2e0a0*/\n if ( n64 == 64 ) /*0xffe2e0a7*/\n {\n sub_FFE2DF2A(v6); /*0xffe2e0ad*/\n v7 += 512; /*0xffe2e0b2*/\n goto LABEL_4; /*0xffe2e0b2*/\n }\n }\n return sub_FFE2DFBC((int)v6); /*0xffe2e0cd*/\n}","refs":[{"addr":"0xffe2df2a","name":"sub_FFE2DF2A"},{"addr":"0xffe2dfbc","name":"sub_FFE2DFBC"}]}
{"addr":"0xffe2e0d4","code":"int sub_FFE2E0D4(int a1, _BYTE *a2, int a3, char *src, __int16 a5)\n{\n int v5; // eax\n __int16 v7; // [esp+0h] [ebp-38h] BYREF\n int n738197504; // [esp+2h] [ebp-36h]\n int n343932928; // [esp+6h] [ebp-32h]\n __int16 v10; // [esp+Ah] [ebp-2Eh]\n char dst[32]; // [esp+Ch] [ebp-2Ch] BYREF\n _WORD v12[6]; // [esp+2Ch] [ebp-Ch] BYREF\n\n sub_FFE2E03C(a2, a3); /*0xffe2e0e1*/\n n738197504 = 738197504; /*0xffe2e0f1*/\n v7 = -16128; /*0xffe2e0f8*/\n n343932928 = 343932928; /*0xffe2e102*/\n v10 = a5; /*0xffe2e109*/\n sub_FFE2E432(dst, src, 0x20u); /*0xffe2e10d*/\n v5 = sub_FFE2E406(a1, (int)&v7, 0x2Cu, (int)v12, 10); /*0xffe2e121*/\n return sub_FFE2DD46(v5, v12); /*0xffe2e134*/\n}","refs":[{"addr":"0xffe2e03c","name":"sub_FFE2E03C"},{"addr":"0xffe2e432","name":"sub_FFE2E432"},{"addr":"0xffe2e406","name":"sub_FFE2E406"},{"addr":"0xffe2dd46","name":"sub_FFE2DD46"}]}
{"addr":"0xffe2e138","code":"int __thiscall sub_FFE2E138(void *this)\n{\n unsigned __int64 v1; // rtt\n __int64 v3; // [esp+0h] [ebp-8h]\n\n v3 = sub_FFE2E614(); /*0xffe2e149*/\n LODWORD(v1) = v3; /*0xffe2e162*/\n HIDWORD(v1) = HIDWORD(v3) % 0xF4240; /*0xffe2e162*/\n return sub_FFE2E51A(v1 / 0xF4240); /*0xffe2e16c*/\n}","refs":[{"addr":"0xffe2e614","name":"sub_FFE2E614"},{"addr":"0xffe2e51a","name":"sub_FFE2E51A"}]}
{"addr":"0xffe2e170","code":"int sub_FFE2E170(_BYTE *a1, unsigned __int8 n0x40, unsigned __int8 n8)\n{\n int v5; // esi\n\n v5 = 0; /*0xffe2e177*/\n while ( (n0x40 & *a1) != n0x40 || (*a1 & n8) != 0 ) /*0xffe2e187*/\n {\n sub_FFE2E138(a1); /*0xffe2e189*/\n if ( (unsigned int)++v5 >= 0xC350 ) /*0xffe2e195*/\n return 1; /*0xffe2e19d*/\n }\n return 0; /*0xffe2e19a*/\n}","refs":[{"addr":"0xffe2e138","name":"sub_FFE2E138"}]}
{"addr":"0xffe2e1a2","code":"int sub_FFE2E1A2(unsigned __int8 a1, _WORD *p_i)\n{\n int v4; // esi\n int v5; // edi\n unsigned __int8 v6; // dl\n bool v7; // zf\n void *v8; // ecx\n\n if ( !p_i ) /*0xffe2e1a7*/\n return 2; /*0xffe2e1ab*/\n v4 = 0; /*0xffe2e1b3*/\n v5 = a1 << 12; /*0xffe2e1b5*/\n while ( 1 ) /*0xffe2e1b8*/\n {\n v6 = *(_BYTE *)(v5 - 19660775); /*0xffe2e1b8*/\n v8 = (void *)(*(unsigned __int8 *)(v5 - 19660774) << 8); /*0xffe2e1cc*/\n v7 = v6 + (_WORD)v8 == 0; /*0xffe2e1d2*/\n LOWORD(v8) = v6 + (_WORD)v8; /*0xffe2e1d2*/\n *p_i = (_WORD)v8; /*0xffe2e1d5*/\n if ( !v7 ) /*0xffe2e1d8*/\n break; /*0xffe2e1d8*/\n sub_FFE2E138(v8); /*0xffe2e1da*/\n if ( (unsigned int)++v4 >= 0xC350 ) /*0xffe2e1e6*/\n return 1; /*0xffe2e1eb*/\n }\n return 0; /*0xffe2e1ac*/\n}","refs":[{"addr":"0xffe2e138","name":"sub_FFE2E138"}]}
{"addr":"0xffe2e1f3","code":"int sub_FFE2E1F3(unsigned __int8 a1)\n{\n _BYTE *v2; // [esp-4h] [ebp-4h]\n\n v2 = (_BYTE *)((a1 << 12) - 19660776); /*0xffe2e201*/\n *v2 = 64; /*0xffe2e204*/\n return sub_FFE2E170(v2, 0x40u, 0); /*0xffe2e20e*/\n}","refs":[{"addr":"0xffe2e170","name":"sub_FFE2E170"}]}
{"addr":"0xffe2e20f","code":"int sub_FFE2E20F(unsigned __int8 a1, int a2, unsigned int a3, int a4, unsigned int *a5)\n{\n int result; // eax\n int v6; // ebp\n _BYTE *v7; // ecx\n char v8; // al\n unsigned __int8 v9; // bl\n unsigned int v10; // esi\n int i; // ecx\n char v12; // al\n int n4_1; // esi\n unsigned int n0xA; // edi\n int i_2; // ebx\n unsigned int n0xA_1; // ebp\n int n4; // [esp-14h] [ebp-2Ch]\n int i_1; // [esp+4h] [ebp-14h] BYREF\n int v20; // [esp+8h] [ebp-10h]\n unsigned int dst_; // [esp+Ch] [ebp-Ch] BYREF\n int v22; // [esp+10h] [ebp-8h]\n _BYTE *v23; // [esp+14h] [ebp-4h]\n\n v20 = a2; /*0xffe2e217*/\n if ( MEMORY[0xFED40000] == 0xFF ) /*0xffe2e223*/\n return 3; /*0xffe2e228*/\n v6 = a1 << 12; /*0xffe2e231*/\n v22 = v6; /*0xffe2e234*/\n v7 = (_BYTE *)(v6 - 19660800); /*0xffe2e238*/\n v8 = *(_BYTE *)(v6 - 19660800); /*0xffe2e23e*/\n v23 = (_BYTE *)(v6 - 19660800); /*0xffe2e240*/\n if ( v8 == -1 ) /*0xffe2e246*/\n return 6; /*0xffe2e24b*/\n *v7 = 2; /*0xffe2e255*/\n result = sub_FFE2E170(v7, 0xA0u, 0); /*0xffe2e258*/\n if ( !result ) /*0xffe2e261*/\n {\n v9 = a1; /*0xffe2e268*/\n result = sub_FFE2E1F3(a1); /*0xffe2e26e*/\n if ( !result ) /*0xffe2e275*/\n {\n v10 = 0; /*0xffe2e281*/\n if ( a3 ) /*0xffe2e285*/\n {\n while ( !sub_FFE2E1A2(a1, &i_1) ) /*0xffe2e294*/\n {\n for ( i = i_1; (_WORD)i; i_1 = i ) /*0xffe2e29a*/\n {\n if ( v10 >= a3 ) /*0xffe2e2a2*/\n goto LABEL_14; /*0xffe2e2a2*/\n v12 = *(_BYTE *)(v10 + v20); /*0xffe2e2a8*/\n ++v10; /*0xffe2e2ab*/\n i += 0xFFFF; /*0xffe2e2ac*/\n *(_BYTE *)(v6 - 19660764) = v12; /*0xffe2e2b2*/\n }\n if ( v10 >= a3 ) /*0xffe2e2c3*/\n goto LABEL_14; /*0xffe2e2c3*/\n }\n goto LABEL_36; /*0xffe2e294*/\n }\nLABEL_14:\n if ( sub_FFE2E170((_BYTE *)(v6 - 19660776), 0x80u, 8u) ) /*0xffe2e2d2*/\n {\n n4 = 4; /*0xffe2e2dd*/\n }\n else\n {\n *(_BYTE *)(v6 - 19660776) = 32; /*0xffe2e2ea*/\n if ( sub_FFE2E170((_BYTE *)(v6 - 19660776), 0x90u, 0) ) /*0xffe2e2ef*/\n goto LABEL_36; /*0xffe2e2ef*/\n n0xA = 0; /*0xffe2e2fe*/\n i_1 = 0; /*0xffe2e300*/\n while ( 2 ) /*0xffe2e315*/\n {\n n4_1 = sub_FFE2E1A2(v9, &i_1); /*0xffe2e315*/\n if ( n4_1 ) /*0xffe2e319*/\n {\nLABEL_36:\n n4_1 = 1; /*0xffe2e3e9*/\n goto LABEL_37; /*0xffe2e3eb*/\n }\n LOWORD(i_2) = i_1; /*0xffe2e31f*/\n while ( (_WORD)i_2 ) /*0xffe2e32a*/\n {\n i_2 = i_1; /*0xffe2e332*/\n *(_BYTE *)(n0xA + a4) = *(_BYTE *)(v6 - 19660764); /*0xffe2e336*/\n if ( ++n0xA == 10 ) /*0xffe2e33d*/\n goto LABEL_26; /*0xffe2e33d*/\n i_2 += 0xFFFF; /*0xffe2e33f*/\n i_1 = i_2; /*0xffe2e345*/\n }\n if ( n0xA < 0xA ) /*0xffe2e34e*/\n {\n v9 = a1; /*0xffe2e306*/\n continue; /*0xffe2e306*/\n }\n break;\n }\nLABEL_26:\n sub_FFE2E432((char *)&dst_, (char *)(a4 + 2), 4u); /*0xffe2e350*/\n n0xA_1 = (((dst_ << 16) | dst_ & 0xFF00) << 8) | ((HIWORD(dst_) | dst_ & 0xFF0000) >> 8); /*0xffe2e384*/\n if ( *a5 >= n0xA_1 ) /*0xffe2e38c*/\n {\n *a5 = n0xA_1; /*0xffe2e395*/\n if ( n0xA < n0xA_1 ) /*0xffe2e399*/\n {\n while ( !(_WORD)i_2 ) /*0xffe2e39e*/\n {\nLABEL_32:\n n4_1 = sub_FFE2E1A2(a1, &i_1); /*0xffe2e3c8*/\n if ( n4_1 ) /*0xffe2e3d9*/\n goto LABEL_36; /*0xffe2e3d9*/\n if ( n0xA >= n0xA_1 ) /*0xffe2e3dd*/\n goto LABEL_37; /*0xffe2e3dd*/\n LOWORD(i_2) = i_1; /*0xffe2e3df*/\n }\n while ( 1 ) /*0xffe2e3ae*/\n {\n *(_BYTE *)(n0xA + a4) = *(_BYTE *)(v22 - 19660764); /*0xffe2e3ae*/\n if ( ++n0xA == n0xA_1 ) /*0xffe2e3b4*/\n break; /*0xffe2e3b4*/\n i_1 += 0xFFFF; /*0xffe2e3bf*/\n if ( !(_WORD)i_1 ) /*0xffe2e3c6*/\n goto LABEL_32; /*0xffe2e3c6*/\n }\n n4_1 = 0; /*0xffe2e3e5*/\n }\n goto LABEL_37; /*0xffe2e3e7*/\n }\n n4 = 5; /*0xffe2e38e*/\n }\n n4_1 = n4; /*0xffe2e2df*/\nLABEL_37:\n sub_FFE2E1F3(a1); /*0xffe2e3ec*/\n *v23 = 32; /*0xffe2e3fa*/\n return n4_1; /*0xffe2e3fd*/\n }\n }\n return result; /*0xffe2e402*/\n}","refs":[{"addr":"0xffe2e170","name":"sub_FFE2E170"},{"addr":"0xffe2e1f3","name":"sub_FFE2E1F3"},{"addr":"0xffe2e1a2","name":"sub_FFE2E1A2"},{"addr":"0xffe2e432","name":"sub_FFE2E432"}]}
{"addr":"0xffe2e406","code":"int sub_FFE2E406(int a1, int a2, unsigned int a3, int a4, int a5)\n{\n return sub_FFE2E20F((unsigned int)(a1 + 19660800) >> 12, a2, a3, a4, (unsigned int *)&a5); /*0xffe2e430*/\n}","refs":[{"addr":"0xffe2e20f","name":"sub_FFE2E20F"}]}
{"addr":"0xffe2e432","code":"char *sub_FFE2E432(char *dst, char *src, unsigned int n32)\n{\n int v5; // eax\n int v6; // eax\n\n if ( n32 - 1 > -1 - (int)dst ) /*0xffe2e448*/\n {\n v5 = sub_FFE2E4A1(); /*0xffe2e44a*/\n if ( v5 ) /*0xffe2e451*/\n (*(void ( **)(const char *, int, const char *))(v5 + 4))( /*0xffe2e45f*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 56,\n \"(Length - 1) <= (0xFFFFFFFF - (UINTN)DestinationBuffer)\");\n }\n if ( n32 - 1 > -1 - (int)src ) /*0xffe2e469*/\n {\n v6 = sub_FFE2E4A1(); /*0xffe2e46b*/\n if ( v6 ) /*0xffe2e472*/\n (*(void ( **)(const char *, int, const char *))(v6 + 4))( /*0xffe2e480*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 57,\n \"(Length - 1) <= (0xFFFFFFFF - (UINTN)SourceBuffer)\");\n }\n if ( dst == src ) /*0xffe2e488*/\n return dst; /*0xffe2e48a*/\n else\n return internal_memcpy(dst, src, n32); /*0xffe2e494*/\n}","refs":[{"addr":"0xffe2e4a1","name":"sub_FFE2E4A1"},{"addr":"0xffe2e950","name":"aEHsMdepkgLibra","string":"e:\\hs\\MdePkg\\Library\\BaseMemoryLibRepStr\\CopyMemWrapper.c"},{"addr":"0xffe2e918","name":"aLength10xfffff","string":"(Length - 1) <= (0xFFFFFFFF - (UINTN)DestinationBuffer)"},{"addr":"0xffe2e98c","name":"aLength10xfffff_0","string":"(Length - 1) <= (0xFFFFFFFF - (UINTN)SourceBuffer)"},{"addr":"0xffe2d800","name":"internal_memcpy"}]}
{"addr":"0xffe2e4a1","code":"int sub_FFE2E4A1()\n{\n int v0; // eax\n _BYTE v2[4]; // [esp+0h] [ebp-8h] BYREF\n int v3; // [esp+4h] [ebp-4h] BYREF\n\n v0 = sub_FFE2E65B(); /*0xffe2e4a6*/\n if ( (*(int ( **)(int, void *, _DWORD, _BYTE *, int *))(*(_DWORD *)v0 + 32))(v0, &unk_FFE2EC80, 0, v2, &v3) >= 0 ) /*0xffe2e4c5*/\n return v3; /*0xffe2e4cb*/\n else\n return 0; /*0xffe2e4c7*/\n}","refs":[{"addr":"0xffe2e65b","name":"sub_FFE2E65B"},{"addr":"0xffe2ec80","name":"unk_FFE2EC80"}]}
{"addr":"0xffe2e4d2","code":"int sub_FFE2E4D2(int a1, const char *a2, ...)\n{\n int result; // eax\n int ( **v3)(int, const char *, char *); // esi\n va_list va; // [esp+10h] [ebp+Ch] BYREF\n\n va_start(va, a2);\n result = sub_FFE2E4A1(); /*0xffe2e4d3*/\n v3 = (int ( **)(int, const char *, char *))result; /*0xffe2e4d8*/\n if ( result ) /*0xffe2e4dc*/\n {\n result = sub_FFE2E569(); /*0xffe2e4de*/\n if ( (result & a1) != 0 ) /*0xffe2e4e9*/\n return (*v3)(a1, a2, (char *)va); /*0xffe2e4f5*/\n }\n return result; /*0xffe2e4fa*/\n}","refs":[{"addr":"0xffe2e4a1","name":"sub_FFE2E4A1"},{"addr":"0xffe2e569","name":"sub_FFE2E569"}]}
{"addr":"0xffe2e4fc","code":"int sub_FFE2E4FC(\n int e:__hs__MdePkg__Library__PeiServicesTablePointerLibIdt__PeiServ,\n int n48,\n int PeiServices____((void__)_0))\n{\n int result; // eax\n\n result = sub_FFE2E4A1(); /*0xffe2e502*/\n if ( result ) /*0xffe2e509*/\n return (*(int ( **)(int, int, int))(result + 4))( /*0xffe2e511*/\n e:__hs__MdePkg__Library__PeiServicesTablePointerLibIdt__PeiServ,\n n48,\n PeiServices____((void__)_0));\n return result; /*0xffe2e517*/\n}","refs":[{"addr":"0xffe2e4a1","name":"sub_FFE2E4A1"}]}
{"addr":"0xffe2e51a","code":"unsigned int sub_FFE2E51A(unsigned int a1)\n{\n unsigned int v1; // esi\n unsigned int n0x400000; // edi\n unsigned __int32 v3; // ebx\n unsigned int result; // eax\n\n v1 = a1 >> 22; /*0xffe2e527*/\n n0x400000 = a1 & 0x3FFFFF; /*0xffe2e52a*/\n do /*0xffe2e562*/\n {\n v3 = n0x400000 + (sub_FFE2E5B8(0x508u) & 0xFFFFFF); /*0xffe2e53f*/\n n0x400000 = 0x400000; /*0xffe2e541*/\n while ( ((v3 - sub_FFE2E5B8(0x508u)) & 0x800000) == 0 ) /*0xffe2e55b*/\n _mm_pause(); /*0xffe2e548*/\n result = v1--; /*0xffe2e55d*/\n }\n while ( result ); /*0xffe2e562*/\n return result; /*0xffe2e564*/\n}","refs":[{"addr":"0xffe2e5b8","name":"sub_FFE2E5B8"}]}
{"addr":"0xffe2e569","code":"int sub_FFE2E569()\n{\n unsigned __int8 v0; // al\n char n3; // al\n char n3_1; // cl\n\n v0 = __inbyte(0x70u); /*0xffe2e56f*/\n __outbyte(0x70u, v0 & 0x80 | 0x4A); /*0xffe2e574*/\n n3 = __inbyte(0x71u); /*0xffe2e57b*/\n n3_1 = n3; /*0xffe2e57c*/\n if ( (unsigned __int8)n3 <= 3u ) /*0xffe2e581*/\n {\nLABEL_4:\n if ( !n3_1 ) /*0xffe2e59c*/\n return 0; /*0xffe2e59c*/\n goto LABEL_5; /*0xffe2e59c*/\n }\n n3_1 = n3; /*0xffe2e583*/\n if ( !n3 ) /*0xffe2e58b*/\n {\n n3_1 = MEMORY[0xFDAF0490] & 2 | 1; /*0xffe2e597*/\n goto LABEL_4; /*0xffe2e597*/\n }\nLABEL_5:\n if ( n3_1 != -1 )\n return n3_1 != 1 ? -2147483578 : -2147483644;\n return 0; /*0xffe2e5b4*/\n}","refs":[{"addr":"0xffe2ece0","name":"n3"}]}
{"addr":"0xffe2e5b8","code":"unsigned __int32 __thiscall sub_FFE2E5B8(unsigned __int16 n1288)\n{\n int v2; // eax\n\n if ( (n1288 & 3) != 0 ) /*0xffe2e5be*/\n {\n v2 = sub_FFE2E4A1(); /*0xffe2e5c0*/\n if ( v2 ) /*0xffe2e5c7*/\n (*(void ( **)(const char *, int, const char *))(v2 + 4))( /*0xffe2e5d8*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseIoLibIntrinsic\\\\IoLibMsc.c\",\n 193,\n \"(Port & 3) == 0\");\n }\n return __indword(n1288); /*0xffe2e5e2*/\n}","refs":[{"addr":"0xffe2e4a1","name":"sub_FFE2E4A1"},{"addr":"0xffe2e9c0","name":"aEHsMdepkgLibra_0","string":"e:\\hs\\MdePkg\\Library\\BaseIoLibIntrinsic\\IoLibMsc.c"},{"addr":"0xffe2e9f4","name":"aPort30","string":"(Port & 3) == 0"}]}
{"addr":"0xffe2e614","code":"__int64 sub_FFE2E614()\n{\n return 107386350; /*0xffe2e63a*/\n}"}
{"addr":"0xffe2e65b","code":"int sub_FFE2E65B()\n{\n int v0; // esi\n _BYTE v2[2]; // [esp+4h] [ebp-8h] BYREF\n int v3; // [esp+6h] [ebp-6h]\n\n sub_FFE2E68D(v2); /*0xffe2e664*/\n v0 = *(_DWORD *)(v3 - 4); /*0xffe2e66c*/\n if ( !v0 ) /*0xffe2e671*/\n sub_FFE2E4FC( /*0xffe2e680*/\n (int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiServicesTablePointerLibIdt\\\\PeiServicesTablePointer.c\",\n 48,\n (int)\"PeiServices != ((void *) 0)\");\n return v0; /*0xffe2e688*/\n}","refs":[{"addr":"0xffe2e68d","name":"sub_FFE2E68D"},{"addr":"0xffe2e4fc","name":"sub_FFE2E4FC"},{"addr":"0xffe2ea68","name":"aEHsMdepkgLibra_1","string":"e:\\hs\\MdePkg\\Library\\PeiServicesTablePointerLibIdt\\PeiServicesTablePointer.c"},{"addr":"0xffe2ea48","name":"aPeiservicesVoi","string":"PeiServices != ((void *) 0)"}]}
{"addr":"0xffe2e68d","code":"void *__thiscall sub_FFE2E68D(void *this)\n{\n void *this_1; // eax\n\n if ( !this ) /*0xffe2e693*/\n sub_FFE2E4FC((int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\X86ReadIdtr.c\", 37, (int)\"Idtr != ((void *) 0)\"); /*0xffe2e6a2*/\n this_1 = this; /*0xffe2e6a8*/\n __sidt(this); /*0xffe2e6ab*/\n return this_1; /*0xffe2e6af*/\n}","refs":[{"addr":"0xffe2e4fc","name":"sub_FFE2E4FC"},{"addr":"0xffe2ead0","name":"aEHsMdepkgLibra_2","string":"e:\\hs\\MdePkg\\Library\\BaseLib\\X86ReadIdtr.c"},{"addr":"0xffe2eab8","name":"aIdtrVoid0","string":"Idtr != ((void *) 0)"}]}
{"addr":"0xffe2e6b0","code":"int __thiscall sub_FFE2E6B0(void *this)\n{\n int ( **v1)(int); // eax\n\n v1 = (int ( **)(int))sub_FFE2E6CD(this); /*0xffe2e6b0*/\n return v1[4](5); /*0xffe2e6bb*/\n}","refs":[{"addr":"0xffe2e6cd","name":"sub_FFE2E6CD"}]}
{"addr":"0xffe2e6bc","code":"int __thiscall sub_FFE2E6BC(void *this)\n{\n int v1; // ebx\n int v2; // eax\n\n v1 = sub_FFE2E6B0(this) + 1024064; /*0xffe2e5e5*/\n if ( (v1 & 1) != 0 ) /*0xffe2e5ea*/\n {\n v2 = sub_FFE2E4A1(); /*0xffe2e5ec*/\n if ( v2 ) /*0xffe2e5f3*/\n (*(void ( **)(const char *, int, const char *))(v2 + 4))( /*0xffe2e604*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseIoLibIntrinsic\\\\IoLib.c\",\n 183,\n \"(Address & 1) == 0\");\n }\n *(_WORD *)v1 = 1280; /*0xffe2e60f*/\n return 1280; /*0xffe2e613*/\n}","refs":[{"addr":"0xffe2e6b0","name":"sub_FFE2E6B0"},{"addr":"0xffe2e4a1","name":"sub_FFE2E4A1"},{"addr":"0xffe2ea04","name":"aEHsMdepkgLibra_3","string":"e:\\hs\\MdePkg\\Library\\BaseIoLibIntrinsic\\IoLib.c"},{"addr":"0xffe2ea34","name":"aAddress10","string":"(Address & 1) == 0"}]}
{"addr":"0xffe2e6cd","code":"void *__thiscall sub_FFE2E6CD(void *this)\n{\n int v1; // eax\n int v2; // eax\n int v3; // eax\n void *this_1; // [esp+0h] [ebp-4h]\n\n this_1 = this; /*0xffe2e6d0*/\n v1 = sub_FFE2E65B(); /*0xffe2e6d1*/\n v2 = (*(int (__stdcall **)(int))(*(_DWORD *)v1 + 32))(v1); /*0xffe2e6e6*/\n if ( v2 < 0 ) /*0xffe2e6ee*/\n {\n sub_FFE2E4D2(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v2); /*0xffe2e6fb*/\n v3 = sub_FFE2E4A1(); /*0xffe2e703*/\n if ( v3 ) /*0xffe2e70a*/\n (*(void ( **)(const char *, int, const char *))(v3 + 4))( /*0xffe2e718*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiPcdLib\\\\PeiPcdLib.c\",\n 49,\n \"!EFI_ERROR (Status)\");\n }\n return this_1; /*0xffe2e723*/\n}","refs":[{"addr":"0xffe2e65b","name":"sub_FFE2E65B"},{"addr":"0xffe2e4d2","name":"sub_FFE2E4D2"},{"addr":"0xffe2e740","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffe2e4a1","name":"sub_FFE2E4A1"},{"addr":"0xffe2eafc","name":"aEHsMdepkgLibra_4","string":"e:\\hs\\MdePkg\\Library\\PeiPcdLib\\PeiPcdLib.c"},{"addr":"0xffe2e764","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"}]}