Newer
Older
AMI-Aptio-BIOS-Reversed / AmiCpuPeiPreMem / all_decompilations.txt
@Ajax Dong Ajax Dong 2 days ago 14 KB Init
=== DECOMPILE 0xffe2f356 ===
{"addr":"0xffe2f356","code":"int __thiscall sub_FFE2F356(void *this)\n{\n  int v1; // eax\n  int v2; // eax\n  int v3; // eax\n  int v5; // [esp+0h] [ebp-4h]\n\n  v1 = sub_FFE2F553(this); /*0xffe2f35a*/\n  v2 = (*(int (__stdcall **)(int))(*(_DWORD *)v1 + 32))(v1); /*0xffe2f36f*/\n  if ( v2 < 0 ) /*0xffe2f377*/\n  {\n    sub_FFE2F43E(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v2); /*0xffe2f384*/\n    v3 = sub_FFE2F40D(); /*0xffe2f38c*/\n    if ( v3 ) /*0xffe2f393*/\n      (*(void (__cdecl **)(const char *, int, const char *))(v3 + 4))( /*0xffe2f3a1*/\n        \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiPcdLib\\\\PeiPcdLib.c\",\n        49,\n        \"!EFI_ERROR (Status)\");\n  }\n  return v5; /*0xffe2f3ac*/\n}","refs":[{"addr":"0xffe2f553","name":"sub_FFE2F553"},{"addr":"0xffe2f43e","name":"sub_FFE2F43E"},{"addr":"0xffe2f5fc","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffe2f40d","name":"sub_FFE2F40D"},{"addr":"0xffe2f634","name":"aEHsMdepkgLibra","string":"e:\\hs\\MdePkg\\Library\\PeiPcdLib\\PeiPcdLib.c"},{"addr":"0xffe2f620","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"}]}

=== DECOMPILE 0xffe2f40d ===
{"addr":"0xffe2f40d","code":"int sub_FFE2F40D()\n{\n  int v0; // eax\n  void *v2; // [esp+0h] [ebp-8h] BYREF\n  int v3; // [esp+4h] [ebp-4h] BYREF\n\n  v0 = sub_FFE2F553(v2); /*0xffe2f412*/\n  if ( (*(int (__cdecl **)(int, void *, _DWORD, void **, int *))(*(_DWORD *)v0 + 32))(v0, &unk_FFE2F8BC, 0, &v2, &v3) >= 0 ) /*0xffe2f431*/\n    return v3; /*0xffe2f437*/\n  else\n    return 0; /*0xffe2f433*/\n}","refs":[{"addr":"0xffe2f553","name":"sub_FFE2F553"},{"addr":"0xffe2f8bc","name":"unk_FFE2F8BC"}]}

=== DECOMPILE 0xffe2f4cd ===
{"addr":"0xffe2f4cd","code":"__int64 __thiscall sub_FFE2F4CD(void *this)\n{\n  int v2; // eax\n\n  if ( !this ) /*0xffe2f4d2*/\n  {\n    v2 = sub_FFE2F40D(); /*0xffe2f4d4*/\n    if ( v2 ) /*0xffe2f4db*/\n      (*(void (__cdecl **)(const char *, int, const char *))(v2 + 4))( /*0xffe2f4ec*/\n        \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n        192,\n        \"Buffer != ((void *) 0)\");\n  }\n  return *(_QWORD *)this; /*0xffe2f4f7*/\n}","refs":[{"addr":"0xffe2f40d","name":"sub_FFE2F40D"},{"addr":"0xffe2f678","name":"aEHsMdepkgLibra_0","string":"e:\\hs\\MdePkg\\Library\\BaseLib\\Unaligned.c"},{"addr":"0xffe2f660","name":"aBufferVoid0","string":"Buffer != ((void *) 0)"}]}

=== DECOMPILE 0xffe2f03c ===
{"addr":"0xffe2f03c","code":"char *__cdecl sub_FFE2F03C(char *dst, char *src, unsigned int count_1)\n{\n  unsigned int count; // edx\n  char *dst_1; // edi\n  char *src_1; // esi\n\n  count = count_1; /*0xffe2f046*/\n  if ( src < dst && &src[count_1 - 1] >= dst ) /*0xffe2f054*/\n  {\n    src_1 = &src[count_1 - 1]; /*0xffe2f068*/\n    dst_1 = &dst[count_1 - 1]; /*0xffe2f06a*/\n  }\n  else\n  {\n    count = count_1 & 3; /*0xffe2f058*/\n    qmemcpy(dst, src, 4 * (count_1 >> 2)); /*0xffe2f061*/\n    src_1 = &src[4 * (count_1 >> 2)]; /*0xffe2f061*/\n    dst_1 = &dst[4 * (count_1 >> 2)]; /*0xffe2f061*/\n  }\n  qmemcpy(dst_1, src_1, count); /*0xffe2f071*/\n  return dst; /*0xffe2f078*/\n}"}

=== DECOMPILE 0xffe2f0f6 ===
{"addr":"0xffe2f0f6","code":"int __fastcall sub_FFE2F0F6(int a1, unsigned int *a2, int *a3)\n{\n  unsigned int v5; // ecx\n  bool v6; // zf\n  unsigned int v7; // ebx\n  int v8; // eax\n  unsigned int v9; // ebx\n  int n0x14_2; // edi\n  unsigned __int64 v12; // rax\n  int v13; // edi\n  int v14; // esi\n  __int64 v15; // rax\n  int v16; // eax\n  unsigned int v17; // edi\n  unsigned int v18; // ebx\n  int v19; // edx\n  int n2048; // esi\n  unsigned int n0x14; // eax\n  int v22; // edi\n  char v23; // dl\n  unsigned int v24; // esi\n  int *v25; // eax\n  unsigned __int8 v26; // [esp+13h] [ebp-1Dh]\n  int v27; // [esp+14h] [ebp-1Ch] BYREF\n  unsigned int v28; // [esp+18h] [ebp-18h]\n  unsigned int n0x14_1; // [esp+1Ch] [ebp-14h]\n  _DWORD v30[4]; // [esp+20h] [ebp-10h] BYREF\n\n  v30[0] = 386434418; /*0xffe2f0fe*/\n  v30[1] = 1156527999; /*0xffe2f109*/\n  v30[2] = -1615835505; /*0xffe2f111*/\n  v30[3] = 1889552127; /*0xffe2f11c*/\n  v5 = *(_DWORD *)(a1 + 32) + a1 - 1; /*0xffe2f124*/\n  v6 = *(_DWORD *)(a1 + 40) == 1213613663; /*0xffe2f127*/\n  v28 = v5; /*0xffe2f12e*/\n  if ( !v6 ) /*0xffe2f132*/\n    return -2147483634; /*0xffe2f132*/\n  v7 = a1 + *(unsigned __int16 *)(a1 + 48); /*0xffe2f138*/\n  if ( v5 <= v7 ) /*0xffe2f13c*/\n    return -2147483634; /*0xffe2f13c*/\n  v8 = *(unsigned __int16 *)(a1 + 52); /*0xffe2f13e*/\n  if ( (_WORD)v8 ) /*0xffe2f145*/\n    v7 = a1 + v8 + *(_DWORD *)(a1 + v8 + 16); /*0xffe2f14c*/\n  v9 = (v7 + 7) & 0xFFFFFFF8; /*0xffe2f151*/\n  if ( v9 >= v5 ) /*0xffe2f156*/\n    return -2147483634; /*0xffe2f156*/\n  while ( 1 ) /*0xffe2f15f*/\n  {\n    n0x14_2 = *(_DWORD *)(v9 + 20) & 0xFFFFFF; /*0xffe2f15f*/\n    n0x14_1 = n0x14_2; /*0xffe2f167*/\n    if ( (unsigned __int8)sub_FFE2F3AE(v9, v30) ) /*0xffe2f16b*/\n      break; /*0xffe2f16b*/\n    if ( n0x14_2 + v9 > v9 ) /*0xffe2f179*/\n    {\n      v9 = (n0x14_2 + v9 + 7) & 0xFFFFFFF8; /*0xffe2f17e*/\n      if ( v9 < v28 ) /*0xffe2f185*/\n        continue; /*0xffe2f185*/\n    }\n    return -2147483634; /*0xffe2f185*/\n  }\n  if ( a1 != -15663104 ) /*0xffe2f19a*/\n  {\n    *a2 = v9 + 24; /*0xffe2f2ae*/\n    v25 = a3; /*0xffe2f2b1*/\n    *a3 = n0x14_2; /*0xffe2f2b5*/\n    goto LABEL_30; /*0xffe2f2b5*/\n  }\n  v12 = __readmsr(0x17u); /*0xffe2f1a5*/\n  v13 = HIDWORD(v12); /*0xffe2f1a9*/\n  v14 = v12; /*0xffe2f1ab*/\n  v15 = sub_FFE2F4F9(23, 23); /*0xffe2f1ad*/\n  v16 = sub_FFE2F52C(v14 & ~(_DWORD)v15, v13 & ~HIDWORD(v15)); /*0xffe2f1bc*/\n  v17 = v9 + n0x14_1; /*0xffe2f1ce*/\n  v26 = 1 << v16; /*0xffe2f1d0*/\n  v28 = v9 + n0x14_1; /*0xffe2f1d8*/\n  sub_FFE2F486(v16, &v27); /*0xffe2f1dc*/\n  v18 = v9 + 24; /*0xffe2f1e1*/\n  if ( *(_DWORD *)v18 != 1 ) /*0xffe2f1ea*/\n    return -2147483634; /*0xffe2f193*/\n  while ( 1 ) /*0xffe2f1ee*/\n  {\n    v19 = *(_DWORD *)(v18 + 28); /*0xffe2f1ee*/\n    if ( v19 ) /*0xffe2f1f3*/\n      n2048 = *(_DWORD *)(v18 + 32); /*0xffe2f1f5*/\n    else\n      n2048 = 2048; /*0xffe2f1fa*/\n    if ( *(_DWORD *)(v18 + 12) == v27 && (v26 & *(_BYTE *)(v18 + 24)) != 0 ) /*0xffe2f20f*/\n    {\n      *a2 = v18; /*0xffe2f28c*/\n      a2[1] = 0; /*0xffe2f28f*/\n      *a3 = n2048; /*0xffe2f292*/\n      a3[1] = 0; /*0xffe2f294*/\n      return 0; /*0xffe2f299*/\n    }\n    if ( *(_DWORD *)(v18 + 32) > (unsigned int)(v19 + 48) ) /*0xffe2f217*/\n      break; /*0xffe2f217*/\nLABEL_24:\n    v24 = (n2048 + 15) & 0xFFFFFFF0; /*0xffe2f258*/\n    if ( v18 + (unsigned __int64)v24 < v17 ) /*0xffe2f272*/\n    {\n      v18 += v24; /*0xffe2f278*/\n      if ( *(_DWORD *)v18 == 1 ) /*0xffe2f27d*/\n        continue; /*0xffe2f27d*/\n    }\n    return -2147483634; /*0xffe2f27d*/\n  }\n  n0x14 = *(_DWORD *)(v19 + v18 + 48); /*0xffe2f219*/\n  v22 = v19 + v18 + 68; /*0xffe2f220*/\n  n0x14_1 = n0x14; /*0xffe2f222*/\n  if ( n0x14 >= 0x14 ) /*0xffe2f229*/\n    return -2147483634; /*0xffe2f229*/\n  v23 = 0; /*0xffe2f22f*/\n  if ( !n0x14 ) /*0xffe2f233*/\n  {\nLABEL_23:\n    v17 = v28; /*0xffe2f254*/\n    goto LABEL_24; /*0xffe2f254*/\n  }\n  while ( *(_DWORD *)v22 != v27 || (v26 & *(_BYTE *)(v22 + 4)) == 0 ) /*0xffe2f244*/\n  {\n    v22 += 12; /*0xffe2f246*/\n    if ( (unsigned __int8)++v23 >= n0x14_1 ) /*0xffe2f252*/\n      goto LABEL_23; /*0xffe2f252*/\n  }\n  v25 = a3; /*0xffe2f29e*/\n  *a2 = v18; /*0xffe2f2a2*/\n  *a3 = n2048; /*0xffe2f2a5*/\nLABEL_30:\n  v25[1] = 0; /*0xffe2f2b7*/\n  a2[1] = 0; /*0xffe2f2bc*/\n  return 0; /*0xffe2f18c*/\n}","refs":[{"addr":"0xffe2f3ae","name":"sub_FFE2F3AE"},{"addr":"0xffe2f4f9","name":"sub_FFE2F4F9"},{"addr":"0xffe2f52c","name":"sub_FFE2F52C"},{"addr":"0xffe2f486","name":"sub_FFE2F486"}]}

=== DECOMPILE 0xffe2f468 ===
{"addr":"0xffe2f468","code":"int __fastcall sub_FFE2F468(int a1, int a2, int a3)\n{\n  int result; // eax\n\n  result = sub_FFE2F40D(); /*0xffe2f46e*/\n  if ( result ) /*0xffe2f475*/\n    return (*(int (__cdecl **)(int, int, int))(result + 4))(a1, a2, a3); /*0xffe2f47d*/\n  return result; /*0xffe2f483*/\n}","refs":[{"addr":"0xffe2f40d","name":"sub_FFE2F40D"}]}

=== DECOMPILE 0xffe2f553 ===
{"addr":"0xffe2f553","code":"int __cdecl sub_FFE2F553()\n{\n  int v0; // esi\n  _BYTE v2[2]; // [esp+4h] [ebp-8h] BYREF\n  int v3; // [esp+6h] [ebp-6h]\n\n  sub_FFE2F5D4(v2); /*0xffe2f55c*/\n  v0 = *(_DWORD *)(v3 - 4); /*0xffe2f564*/\n  if ( !v0 ) /*0xffe2f569*/\n    sub_FFE2F468( /*0xffe2f578*/\n      (int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiServicesTablePointerLibIdt\\\\PeiServicesTablePointer.c\",\n      48,\n      (int)\"PeiServices != ((void *) 0)\");\n  return v0; /*0xffe2f580*/\n}","refs":[{"addr":"0xffe2f5d4","name":"sub_FFE2F5D4"},{"addr":"0xffe2f468","name":"sub_FFE2F468"},{"addr":"0xffe2f6c4","name":"aEHsMdepkgLibra_1","string":"e:\\hs\\MdePkg\\Library\\PeiServicesTablePointerLibIdt\\PeiServicesTablePointer.c"},{"addr":"0xffe2f6a4","name":"aPeiservicesVoi","string":"PeiServices != ((void *) 0)"}]}

=== DECOMPILE 0xffe2f2c4 ===
{"addr":"0xffe2f2c4","code":"int __thiscall ModuleEntryPoint_0(void *this)\n{\n  int v1; // eax\n  int v2; // eax\n  int v3; // eax\n  void *v4; // ecx\n  int v5; // eax\n  int v6; // eax\n  void *v7; // ecx\n  int v8; // eax\n  void *v10; // [esp-4h] [ebp-14h]\n  void *v11; // [esp-4h] [ebp-14h]\n  void *v12; // [esp-4h] [ebp-14h]\n  __int64 v13; // [esp+0h] [ebp-10h] BYREF\n  __int64 v14; // [esp+8h] [ebp-8h] BYREF\n\n  v1 = sub_FFE2F356(this); /*0xffe2f2cd*/\n  v13 = ((__int64 (__cdecl *)(int))*(_DWORD *)(v1 + 16))(113); /*0xffe2f2d8*/\n  v2 = sub_FFE2F356(v10); /*0xffe2f2df*/\n  v14 = ((__int64 (__cdecl *)(int))*(_DWORD *)(v2 + 16))(114); /*0xffe2f2e9*/\n  if ( !v14 ) /*0xffe2f2f4*/\n  {\n    v3 = sub_FFE2F0F6(-15663104, (unsigned int *)&v13, (int *)&v14); /*0xffe2f304*/\n    v4 = v11; /*0xffe2f309*/\n    if ( v3 >= 0 || (v5 = sub_FFE2F0F6(-4194304, (unsigned int *)&v13, (int *)&v14), v4 = v12, v5 >= 0) ) /*0xffe2f324*/\n    {\n      v6 = sub_FFE2F356(v4); /*0xffe2f326*/\n      (*(void (__cdecl **)(int, _DWORD, _DWORD))(v6 + 72))(113, v13, HIDWORD(v13)); /*0xffe2f335*/\n      v8 = sub_FFE2F356(v7); /*0xffe2f33b*/\n      (*(void (__cdecl **)(int, _DWORD, _DWORD))(v8 + 72))(114, v14, HIDWORD(v14)); /*0xffe2f34a*/\n    }\n  }\n  return 0; /*0xffe2f352*/\n}","refs":[{"addr":"0xffe2f356","name":"sub_FFE2F356"},{"addr":"0xffe2f0f6","name":"sub_FFE2F0F6"}]}

=== DECOMPILE 0xffe2f3ae ===
{"addr":"0xffe2f3ae","code":"bool __fastcall sub_FFE2F3AE(int a1, int a2)\n{\n  __int64 v4; // rax\n  int v5; // ebp\n  __int64 v6; // rax\n  int v7; // edi\n  __int64 v8; // kr00_8\n  __int64 v9; // rax\n  int v11; // [esp+10h] [ebp-Ch]\n  int v12; // [esp+14h] [ebp-8h]\n\n  v4 = sub_FFE2F4CD((void *)a1); /*0xffe2f3b9*/\n  v12 = HIDWORD(v4); /*0xffe2f3c0*/\n  v5 = v4; /*0xffe2f3c4*/\n  v6 = sub_FFE2F4CD((void *)a2); /*0xffe2f3c6*/\n  v11 = HIDWORD(v6); /*0xffe2f3ce*/\n  v7 = v6; /*0xffe2f3d2*/\n  v8 = sub_FFE2F4CD((void *)(a1 + 8)); /*0xffe2f3e0*/\n  v9 = sub_FFE2F4CD((void *)(a2 + 8)); /*0xffe2f3e2*/\n  return v5 == v7 && v12 == v11 && v8 == v9; /*0xffe2f405*/\n}","refs":[{"addr":"0xffe2f4cd","name":"sub_FFE2F4CD"}]}

=== DECOMPILE 0xffe2f43e ===
{"addr":"0xffe2f43e","code":"int sub_FFE2F43E(int a1, const char *_nASSERT_EFI_ERROR_(Status___%r)_n, ...)\n{\n  int result; // eax\n  int (__cdecl **v3)(int, const char *, char *); // esi\n  va_list va; // [esp+10h] [ebp+Ch] BYREF\n\n  va_start(va, _nASSERT_EFI_ERROR_(Status___%r)_n);\n  result = sub_FFE2F40D(); /*0xffe2f43f*/\n  v3 = (int (__cdecl **)(int, const char *, char *))result; /*0xffe2f444*/\n  if ( result ) /*0xffe2f448*/\n  {\n    result = sub_FFE2F585(); /*0xffe2f44a*/\n    if ( (result & a1) != 0 ) /*0xffe2f455*/\n      return (*v3)(a1, _nASSERT_EFI_ERROR_(Status___%r)_n, (char *)va); /*0xffe2f461*/\n  }\n  return result; /*0xffe2f466*/\n}","refs":[{"addr":"0xffe2f40d","name":"sub_FFE2F40D"},{"addr":"0xffe2f585","name":"sub_FFE2F585"}]}

=== DECOMPILE 0xffe2f486 ===
{"addr":"0xffe2f486","code":"int __fastcall sub_FFE2F486(int a1, _DWORD *a2)\n{\n  _EAX = 1; /*0xffe2f4a2*/\n  __asm { cpuid } /*0xffe2f4a5*/\n  if ( a2 ) /*0xffe2f4ab*/\n    *a2 = _EAX; /*0xffe2f4ad*/\n  return 1; /*0xffe2f4c8*/\n}"}

=== DECOMPILE 0xffe2f4f9 ===
{"addr":"0xffe2f4f9","code":"__int64 __cdecl sub_FFE2F4F9()\n{\n  return 0xFFE0000000000000uLL; /*0xffe2f528*/\n}"}

=== DECOMPILE 0xffe2f52c ===
{"addr":"0xffe2f52c","code":"unsigned __int64 __cdecl sub_FFE2F52C(int a1, unsigned int a2)\n{\n  return (unsigned __int64)a2 >> 18; /*0xffe2f54f*/\n}"}

=== DECOMPILE 0xffe2f585 ===
{"addr":"0xffe2f585","code":"int sub_FFE2F585()\n{\n  unsigned __int8 v0; // al\n  char n3; // al\n  char n3_1; // cl\n\n  v0 = __inbyte(0x70u); /*0xffe2f58b*/\n  __outbyte(0x70u, v0 & 0x80 | 0x4A); /*0xffe2f590*/\n  n3 = __inbyte(0x71u); /*0xffe2f597*/\n  n3_1 = n3; /*0xffe2f598*/\n  if ( (unsigned __int8)n3 <= 3u ) /*0xffe2f59d*/\n  {\nLABEL_4:\n    if ( !n3_1 ) /*0xffe2f5b8*/\n      return 0; /*0xffe2f5b8*/\n    goto LABEL_5; /*0xffe2f5b8*/\n  }\n  n3_1 = n3; /*0xffe2f59f*/\n  if ( !n3 ) /*0xffe2f5a7*/\n  {\n    n3_1 = MEMORY[0xFDAF0490] & 2 | 1; /*0xffe2f5b3*/\n    goto LABEL_4; /*0xffe2f5b3*/\n  }\nLABEL_5:\n  if ( n3_1 != -1 )\n    return n3_1 != 1 ? -2147483578 : -2147483644;\n  return 0; /*0xffe2f5d0*/\n}","refs":[{"addr":"0xffe2f8dc","name":"n3"}]}

=== DECOMPILE 0xffe2f5d4 ===
{"addr":"0xffe2f5d4","code":"void *__thiscall sub_FFE2F5D4(void *this)\n{\n  void *this_1; // eax\n\n  if ( !this ) /*0xffe2f5da*/\n    sub_FFE2F468((int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\X86ReadIdtr.c\", 37, (int)\"Idtr != ((void *) 0)\"); /*0xffe2f5e9*/\n  this_1 = this; /*0xffe2f5ef*/\n  __sidt(this); /*0xffe2f5f2*/\n  return this_1; /*0xffe2f5f6*/\n}","refs":[{"addr":"0xffe2f468","name":"sub_FFE2F468"},{"addr":"0xffe2f72c","name":"aEHsMdepkgLibra_2","string":"e:\\hs\\MdePkg\\Library\\BaseLib\\X86ReadIdtr.c"},{"addr":"0xffe2f714","name":"aIdtrVoid0","string":"Idtr != ((void *) 0)"}]}

=== DECOMPILE 0xffe2f0f1 ===
{"addr":"0xffe2f0f1","code":"// attributes: thunk\nEFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)\n{\n  void *v2; // ecx\n\n  return ModuleEntryPoint_0(v2);\n}","refs":[{"addr":"0xffe2f2c4","name":"_ModuleEntryPoint_0"}]}

=== DECOMPILE 0xffe2f07c ===
{"addr":"0xffe2f07c","code":"void *__cdecl sub_FFE2F07C(void *buf, unsigned int count, char value)\n{\n  memset(buf, value, count); /*0xffe2f089*/\n  return buf; /*0xffe2f08f*/\n}"}

=== DECOMPILE 0xffe2f0bc ===
{"addr":"0xffe2f0bc","code":"int __cdecl sub_FFE2F0BC(int a1, int a2, int a3, int a4)\n{\n  do /*0xffe2f0d5*/\n  {\n    *(_DWORD *)(a1 + 8 * a2 - 8) = a3; /*0xffe2f0cd*/\n    *(_DWORD *)(a1 + 8 * a2-- - 4) = a4; /*0xffe2f0d1*/\n  }\n  while ( a2 ); /*0xffe2f0d5*/\n  return a1; /*0xffe2f0d9*/\n}"}

=== DECOMPILE 0xffe2f0dc ===
{"addr":"0xffe2f0dc","code":"void *__cdecl sub_FFE2F0DC(void *buf, unsigned int count, int value)\n{\n  memset32(buf, value, count); /*0xffe2f0e9*/\n  return buf; /*0xffe2f0ef*/\n}"}