Newer
Older
AMI-Aptio-BIOS-Reversed / TrEEPei / export_batch_2.json
@Ajax Dong Ajax Dong 2 days ago 41 KB Init
{"jsonrpc": "2.0", "result": {"structuredContent": {"format": "json", "functions": [{"addr": "0xffe14375", "name": "Sha1FinalInternal", "prototype": "int __fastcall(_DWORD *, _BYTE *)", "size": "0x18f", "comments": {"0xffe143ba": {"regular": "src"}, "0xffe143bd": {"regular": "_DWORD *"}, "0xffe14403": {"regular": "src"}, "0xffe14433": {"regular": "_DWORD *"}}, "asm": "Sha1FinalInternal (.text @ 0xffe14375):\nffe14375  push esi\nffe14376  mov esi, ecx\nffe14378  push edi\nffe14379  mov edi, edx\nffe1437b  mov ecx, [esi+28h]\nffe1437e  cmp ecx, 40h\nffe14381  jb loc_FFE1438B\nffe14383  or eax, 0FFFFFFFFh\nffe14386  jmp loc_FFE14501\nffe1438b  push ebx\nffe1438c  mov eax, ecx\nffe1438e  shl eax, 3\nffe14391  add [esi], eax\nffe14393  push 0\nffe14395  pop ebx\nffe14396  adc [esi+4], ebx\nffe14399  mov byte ptr [ecx+esi+2Ch], 80h\nffe1439e  inc dword ptr [esi+28h]\nffe143a1  mov eax, [esi+28h]\nffe143a4  cmp eax, 38h\nffe143a7  jbe loc_FFE143D3\nffe143a9  jmp loc_FFE143B5\nffe143ab  mov [esi+eax+2Ch], bl\nffe143af  inc dword ptr [esi+28h]\nffe143b2  mov eax, [esi+28h]\nffe143b5  cmp eax, 40h\nffe143b8  jb loc_FFE143AB\nffe143ba  lea edx, [esi+2Ch]\nffe143bd  mov ecx, esi\nffe143bf  call Sha256Transform\nffe143c4  mov [esi+28h], ebx\nffe143c7  jmp loc_FFE143D3\nffe143c9  mov eax, [esi+28h]\nffe143cc  mov [esi+eax+2Ch], bl\nffe143d0  inc dword ptr [esi+28h]\nffe143d3  cmp dword ptr [esi+28h... [3787 chars total]", "code": "int __fastcall Sha1FinalInternal(_DWORD *a1, _BYTE *a2)\n{\n  unsigned int n0x40; // ecx\n  bool v6; // cf\n  unsigned int n0x40_1; // eax\n\n  n0x40 = a1[10]; /*0xffe1437b*/\n  if ( n0x40 >= 0x40 ) /*0xffe14381*/\n    return -1; /*0xffe14383*/\n  v6 = __CFADD__(8 * n0x40, *a1); /*0xffe14391*/\n  *a1 += 8 * n0x40; /*0xffe14391*/\n  a1[1] += v6; /*0xffe14396*/\n  *((_BYTE *)a1 + n0x40 + 44) = 0x80; /*0xffe14399*/\n  n0x40_1 = ++a1[10]; /*0xffe143a1*/\n  if ( n0x40_1 > 0x38 ) /*0xffe143a7*/\n  {\n    while ( n0x40_1 < 0x40 ) /*0xffe143b8*/\n    {\n      *((_BYTE *)a1 + n0x40_1 + 44) = 0; /*0xffe143ab*/\n      n0x40_1 = ++a1[10]; /*0xffe143b2*/\n    }\n    Sha256Transform(a1, (unsigned __int8 *)a1 + 44); /*0xffe143bf*/\n    a1[10] = 0; /*0xffe143c4*/\n  }\n  while ( a1[10] < 0x38u ) /*0xffe143d7*/\n    *((_BYTE *)a1 + a1[10]++ + 44) = 0; /*0xffe143cc*/\n  *((_BYTE *)a1 + 100) = *((_BYTE *)a1 + 7); /*0xffe143de*/\n  *((_BYTE *)a1 + 101) = *((_BYTE *)a1 + 6); /*0xffe143e4*/\n  *((_BYTE *)a1 + 102) = sub_FFE16354(0x28u... [2914 chars total]", "xrefs": {"to": [{"addr": "0xffe0f0dd", "type": "code"}, {"addr": "0xffe1564e", "type": "code"}], "from": [{"addr": "0xffe14376", "type": "code"}]}}, {"addr": "0xffe14504", "name": "Tpm20HashAllSha256", "prototype": "int __thiscall(_DWORD *this)", "size": "0x83", "comments": {}, "asm": "Tpm20HashAllSha256 (.text @ 0xffe14504):\nffe14504  test ecx, ecx\nffe14506  jnz loc_FFE1450C\nffe14508  or eax, 0FFFFFFFFh\nffe1450b  retn\nffe1450c  xor eax, eax\nffe1450e  mov [ecx+48h], eax\nffe14511  mov [ecx], eax\nffe14513  mov [ecx+4], eax\nffe14516  mov dword ptr [ecx+8], 0C1059ED8h\nffe1451d  mov dword ptr [ecx+0Ch], 0CBBB9D5Dh\nffe14524  mov dword ptr [ecx+10h], 367CD507h\nffe1452b  mov dword ptr [ecx+14h], 629A292Ah\nffe14532  mov dword ptr [ecx+18h], 3070DD17h\nffe14539  mov dword ptr [ecx+1Ch], 9159015Ah\nffe14540  mov dword ptr [ecx+20h], 0F70E5939h\nffe14547  mov dword ptr [ecx+24h], 152FECD8h\nffe1454e  mov dword ptr [ecx+28h], 0FFC00B31h\nffe14555  mov dword ptr [ecx+2Ch], 67332667h\nffe1455c  mov dword ptr [ecx+30h], 68581511h\nffe14563  mov dword ptr [ecx+34h], 8EB44A87h\nffe1456a  mov dword ptr [ecx+38h], 64F98FA7h\nffe14571  mov dword ptr [ecx+3Ch], 0DB0C2E0Dh\nffe14578  mov dword ptr [ecx+40h], 0BEFA4FA4h\nffe1457f  mov dword ptr [ecx+44h], 47B5481Dh\nffe14586  retn", "code": "int __thiscall Tpm20HashAllSha256(_DWORD *this)\n{\n  if ( !this ) /*0xffe14506*/\n    return -1; /*0xffe14508*/\n  *(this + 18) = 0; /*0xffe1450e*/\n  *this = 0; /*0xffe14511*/\n  *(this + 1) = 0; /*0xffe14513*/\n  *(this + 2) = -1056596264; /*0xffe14516*/\n  *(this + 3) = -876896931; /*0xffe1451d*/\n  *(this + 4) = 914150663; /*0xffe14524*/\n  *(this + 5) = 1654270250; /*0xffe1452b*/\n  *(this + 6) = 812702999; /*0xffe14532*/\n  *(this + 7) = -1856437926; /*0xffe14539*/\n  *(this + 8) = -150054599; /*0xffe14540*/\n  *(this + 9) = 355462360; /*0xffe14547*/\n  *(this + 10) = -4191439; /*0xffe1454e*/\n  *(this + 11) = 1731405415; /*0xffe14555*/\n  *(this + 12) = 1750603025; /*0xffe1455c*/\n  *(this + 13) = -1900787065; /*0xffe14563*/\n  *(this + 14) = 1694076839; /*0xffe1456a*/\n  *(this + 15) = -619958771; /*0xffe14571*/\n  *(this + 16) = -1090891868; /*0xffe14578*/\n  *(this + 17) = 1203062813; /*0xffe1457f*/\n  return 0; /*0xffe1450b*/\n}", "xrefs": {"to": [{"addr": "0xffe0ef25", "type": "code"}, {"addr": "0xffe145d1", "type": "code"}], "from": [{"addr": "0xffe14506", "type": "code"}]}}, {"addr": "0xffe14587", "name": "Sha256FinalInternal", "prototype": "int __fastcall(int, char *dst)", "size": "0x3b", "comments": {}, "asm": "Sha256FinalInternal (.text @ 0xffe14587):\nffe14587  push ebp\nffe14588  mov ebp, esp\nffe1458a  sub esp, 44h\nffe1458d  push esi\nffe1458e  mov esi, edx\nffe14590  test ecx, ecx\nffe14592  jnz loc_FFE14599\nffe14594  or eax, 0FFFFFFFFh\nffe14597  jmp loc_FFE145BD\nffe14599  test esi, esi\nffe1459b  jz loc_FFE14594\nffe1459d  cmp dword ptr [ecx+48h], 80h\nffe145a4  jnb loc_FFE14594\nffe145a6  lea edx, [ebp+var_40]\nffe145a9  call Sha384FinalInternal\nffe145ae  push 30h\nffe145b0  lea edx, [ebp+var_40]\nffe145b3  mov ecx, esi\nffe145b5  call CopyMemChecked\nffe145ba  pop ecx\nffe145bb  xor eax, eax\nffe145bd  pop esi\nffe145be  mov esp, ebp\nffe145c0  pop ebp\nffe145c1  retn", "code": "int __fastcall Sha256FinalInternal(int a1, char *dst)\n{\n  char src[64]; // [esp+8h] [ebp-40h] BYREF\n\n  if ( !a1 || !dst || *(_DWORD *)(a1 + 72) >= 0x80u ) /*0xffe145a4*/\n    return -1; /*0xffe14594*/\n  sub_FFE154A9(); /*0xffe145a9*/\n  CopyMemChecked(dst, src, 0x30u); /*0xffe145b5*/\n  return 0; /*0xffe145bd*/\n}", "xrefs": {"to": [{"addr": "0xffe0f0f1", "type": "code"}, {"addr": "0xffe145e9", "type": "code"}], "from": [{"addr": "0xffe14588", "type": "code"}]}}, {"addr": "0xffe145c2", "name": "Sha256HashAll", "prototype": "int __cdecl(unsigned int *p_i, char *dst)", "size": "0x30", "comments": {"0xffe145d9": {"regular": "src"}, "0xffe145db": {"regular": "i"}, "0xffe145e2": {"regular": "dst"}, "0xffe145e6": {"regular": "int"}}, "asm": "Sha256HashAll (.text @ 0xffe145c2):\nffe145c2  push ebp\nffe145c3  mov ebp, esp\nffe145c5  and esp, 0FFFFFFF8h\nffe145c8  sub esp, 0D0h\nffe145ce  lea ecx, [esp+0D0h+var_D0]\nffe145d1  call Tpm20HashAllSha256\nffe145d6  mov eax, [ebp+p_i]\nffe145d9  mov edx, [edx]\nffe145db  push dword ptr [eax]\nffe145dd  call Sha384UpdateInternal\nffe145e2  mov edx, [ebp+dst]\nffe145e5  pop ecx\nffe145e6  lea ecx, [esp+0D0h+var_D0]\nffe145e9  call Sha256FinalInternal\nffe145ee  mov esp, ebp\nffe145f0  pop ebp\nffe145f1  retn", "code": "int __cdecl Sha256HashAll(unsigned int *p_i, char *dst)\n{\n  char **p_src; // edx\n  char *v3; // ecx\n  int v5[52]; // [esp+0h] [ebp-D0h] BYREF\n\n  Tpm20HashAllSha256(v5); /*0xffe145d1*/\n  sub_FFE153F4(v3, *p_src, *p_i); /*0xffe145dd*/\n  return Sha256FinalInternal((int)v5, dst); /*0xffe145ee*/\n}", "xrefs": {"to": [{"addr": "0xffe15682", "type": "code"}, {"addr": "0xffe156b5", "type": "code"}], "from": [{"addr": "0xffe145c3", "type": "code"}]}}, {"addr": "0xffe145f2", "name": "Sha256RoundConstants", "prototype": "int __fastcall(int, int src)", "size": "0xd7f", "comments": {}, "asm": "Sha256RoundConstants (.text @ 0xffe145f2):\nffe145f2  sub esp, 314h\nffe145f8  push ebx\nffe145f9  push ebp\nffe145fa  push esi\nffe145fb  push edi\nffe145fc  add ecx, 8\nffe145ff  lea esi, [esp+324h+var_2CC]\nffe14603  push 8\nffe14605  mov ebp, edx\nffe14607  mov [esp+328h+var_288], ecx\nffe1460e  mov edi, ecx\nffe14610  pop ebx\nffe14611  push 8\nffe14613  mov edx, edi\nffe14615  mov ecx, esi\nffe14617  call CopyMemChecked\nffe1461c  add edi, 8\nffe1461f  add esi, 8\nffe14622  pop ecx\nffe14623  sub ebx, 1\nffe14626  jnz loc_FFE14611\nffe14628  lea edi, [ebp+2]\nffe1462b  movzx eax, byte ptr [edi-2]\nffe1462f  cdq ,\nffe14630  mov ecx, eax\nffe14632  mov esi, edx\nffe14634  movzx eax, byte ptr [edi-1]\nffe14638  shld esi, ecx, 8\nffe1463c  cdq ,\nffe1463d  shl ecx, 8\nffe14640  or esi, edx\nffe14642  or ecx, eax\nffe14644  movzx eax, byte ptr [edi]\nffe14647  shld esi, ecx, 8\nffe1464b  cdq ,\nffe1464c  lea edi, [edi+8]\nffe1464f  shl ecx, 8\nffe14652  or esi, edx\nffe14654  or ecx, eax\nffe14656  movzx eax, byte ptr [edi... [35565 chars total]", "code": "int __fastcall Sha256RoundConstants(int a1, int src)\n{\n  char *dst; // esi\n  char *src_1; // edi\n  int n8; // ebx\n  unsigned __int8 *v6; // edi\n  __int64 v7; // rt0\n  __int64 v8; // rax\n  unsigned __int64 v9; // rt0\n  int v10; // ecx\n  _BYTE *v11; // edx\n  __int64 v12; // rcx\n  unsigned int v13; // edi\n  unsigned int v14; // ebp\n  unsigned __int64 v15; // rt0\n  int v16; // edi\n  bool v17; // zf\n  int n8_1; // ebp\n  unsigned int v19; // ecx\n  unsigned int v20; // edx\n  unsigned __int64 v21; // kr28_8\n  unsigned __int64 v22; // kr58_8\n  unsigned __int64 v23; // kr88_8\n  unsigned __int64 v24; // kr90_8\n  unsigned __int64 v25; // krB0_8\n  unsigned __int64 v26; // kr00_8\n  unsigned __int64 v27; // krD0_8\n  unsigned int v28; // eax\n  unsigned __int64 v29; // kr100_8\n  unsigned int v30; // eax\n  unsigned __int64 v31; // kr130_8\n  unsigned __int64 v32; // kr08_8\n  unsigned int v33; // eax\n  unsigned __int64 v34; // kr160_8\n  unsigned __int64 v35; // kr20_8\n  unsigned __int64 v36; // kr170_8\n  ... [14483 chars total]", "xrefs": {"to": [{"addr": "0xffe1542f", "type": "code"}, {"addr": "0xffe15483", "type": "code"}, {"addr": "0xffe15504", "type": "code"}, {"addr": "0xffe1556c", "type": "code"}], "from": [{"addr": "0xffe145f8", "type": "code"}]}}, {"addr": "0xffe15371", "name": "Tpm20HashAllSha384", "prototype": "int __thiscall(_DWORD *this)", "size": "0x83", "comments": {}, "asm": "Tpm20HashAllSha384 (.text @ 0xffe15371):\nffe15371  test ecx, ecx\nffe15373  jnz loc_FFE15379\nffe15375  or eax, 0FFFFFFFFh\nffe15378  retn\nffe15379  xor eax, eax\nffe1537b  mov [ecx+48h], eax\nffe1537e  mov [ecx], eax\nffe15380  mov [ecx+4], eax\nffe15383  mov dword ptr [ecx+8], 0F3BCC908h\nffe1538a  mov dword ptr [ecx+0Ch], 6A09E667h\nffe15391  mov dword ptr [ecx+10h], 84CAA73Bh\nffe15398  mov dword ptr [ecx+14h], 0BB67AE85h\nffe1539f  mov dword ptr [ecx+18h], 0FE94F82Bh\nffe153a6  mov dword ptr [ecx+1Ch], 3C6EF372h\nffe153ad  mov dword ptr [ecx+20h], 5F1D36F1h\nffe153b4  mov dword ptr [ecx+24h], 0A54FF53Ah\nffe153bb  mov dword ptr [ecx+28h], 0ADE682D1h\nffe153c2  mov dword ptr [ecx+2Ch], 510E527Fh\nffe153c9  mov dword ptr [ecx+30h], 2B3E6C1Fh\nffe153d0  mov dword ptr [ecx+34h], 9B05688Ch\nffe153d7  mov dword ptr [ecx+38h], 0FB41BD6Bh\nffe153de  mov dword ptr [ecx+3Ch], 1F83D9ABh\nffe153e5  mov dword ptr [ecx+40h], 137E2179h\nffe153ec  mov dword ptr [ecx+44h], 5BE0CD19h\nffe153f3  retn", "code": "int __thiscall Tpm20HashAllSha384(_DWORD *this)\n{\n  if ( !this ) /*0xffe15373*/\n    return -1; /*0xffe15375*/\n  *(this + 18) = 0; /*0xffe1537b*/\n  *this = 0; /*0xffe1537e*/\n  *(this + 1) = 0; /*0xffe15380*/\n  *(this + 2) = -205731576; /*0xffe15383*/\n  *(this + 3) = 1779033703; /*0xffe1538a*/\n  *(this + 4) = -2067093701; /*0xffe15391*/\n  *(this + 5) = -1150833019; /*0xffe15398*/\n  *(this + 6) = -23791573; /*0xffe1539f*/\n  *(this + 7) = 1013904242; /*0xffe153a6*/\n  *(this + 8) = 1595750129; /*0xffe153ad*/\n  *(this + 9) = -1521486534; /*0xffe153b4*/\n  *(this + 10) = -1377402159; /*0xffe153bb*/\n  *(this + 11) = 1359893119; /*0xffe153c2*/\n  *(this + 12) = 725511199; /*0xffe153c9*/\n  *(this + 13) = -1694144372; /*0xffe153d0*/\n  *(this + 14) = -79577749; /*0xffe153d7*/\n  *(this + 15) = 528734635; /*0xffe153de*/\n  *(this + 16) = 327033209; /*0xffe153e5*/\n  *(this + 17) = 1541459225; /*0xffe153ec*/\n  return 0; /*0xffe15378*/\n}", "xrefs": {"to": [{"addr": "0xffe0ef3e", "type": "code"}], "from": [{"addr": "0xffe15373", "type": "code"}]}}, {"addr": "0xffe153f4", "name": "Sha384UpdateInternal", "prototype": "int __fastcall(char *, char *src, unsigned int i)", "size": "0xb5", "comments": {"0xffe1542d": {"regular": "int"}, "0xffe1547e": {"regular": "src"}, "0xffe15481": {"regular": "int"}, "0xffe15492": {"regular": "src"}}, "asm": "Sha384UpdateInternal (.text @ 0xffe153f4):\nffe153f4  push ebp\nffe153f5  mov ebp, esp\nffe153f7  and esp, 0FFFFFFF8h\nffe153fa  push ecx\nffe153fb  push ebx\nffe153fc  push esi\nffe153fd  mov esi, ecx\nffe153ff  mov [esp+0Ch+src], edx\nffe15403  push edi\nffe15404  test esi, esi\nffe15406  jnz loc_FFE15410\nffe15408  or eax, 0FFFFFFFFh\nffe1540b  jmp loc_FFE154A2\nffe15410  test edx, edx\nffe15412  jz loc_FFE15408\nffe15414  mov ebx, 80h\nffe15419  cmp [esi+48h], ebx\nffe1541c  ja loc_FFE15408\nffe1541e  mov edi, [ebp+i]\nffe15421  jmp loc_FFE1549C\nffe15423  cmp dword ptr [esi+48h], 0\nffe15427  jnz loc_FFE1544F\nffe15429  cmp edi, ebx\nffe1542b  jb loc_FFE1544F\nffe1542d  mov ecx, esi\nffe1542f  call Sha256RoundConstants\nffe15434  test eax, eax\nffe15436  jnz loc_FFE154A2\nffe15438  add dword ptr [esi], 400h\nffe1543e  mov edx, [esp+10h+src]\nffe15442  adc [esi+4], eax\nffe15445  add edx, ebx\nffe15447  mov [esp+10h+src], edx\nffe1544b  sub edi, ebx\nffe1544d  jmp loc_FFE1549C\nffe1544f  sub ebx, [esi+48h]\nffe15452  ... [1855 chars total]", "code": "int __fastcall Sha384UpdateInternal(char *a1, char *src, unsigned int i)\n{\n  int result; // eax\n  bool v6; // cf\n  unsigned int i_1; // ebx\n  char *srca; // [esp+Ch] [ebp-4h]\n\n  srca = src; /*0xffe153ff*/\n  if ( !a1 || !src || *((_DWORD *)a1 + 18) > 0x80u ) /*0xffe1541c*/\n    return -1; /*0xffe15408*/\n  while ( i ) /*0xffe1549e*/\n  {\n    if ( *((_DWORD *)a1 + 18) || i < 0x80 ) /*0xffe1542b*/\n    {\n      i_1 = 128 - *((_DWORD *)a1 + 18); /*0xffe1544f*/\n      if ( i < i_1 ) /*0xffe15454*/\n        i_1 = i; /*0xffe15456*/\n      CopyMemChecked(&a1[*((_DWORD *)a1 + 18) + 76], src, i_1); /*0xffe1545f*/\n      i -= i_1; /*0xffe15468*/\n      *((_DWORD *)a1 + 18) += i_1; /*0xffe1546a*/\n      src = &srca[i_1]; /*0xffe1546d*/\n      srca += i_1; /*0xffe15474*/\n      if ( *((_DWORD *)a1 + 18) == 128 ) /*0xffe1547c*/\n      {\n        result = Sha256RoundConstants((int)a1, (int)(a1 + 76)); /*0xffe15483*/\n        if ( result ) /*0xffe1548a*/\n          return result; /*0xffe1548a*/\n        v6 = __CFADD__(... [1682 chars total]", "xrefs": {"to": [{"addr": "0xffe0eff7", "type": "code"}, {"addr": "0xffe145dd", "type": "code"}], "from": [{"addr": "0xffe153f5", "type": "code"}]}}, {"addr": "0xffe154a9", "name": "Sha384FinalInternal", "prototype": "int __fastcall(int, int)", "size": "0x111", "comments": {"0xffe154ff": {"regular": "src"}, "0xffe15502": {"regular": "int"}, "0xffe15523": {"regular": "src"}, "0xffe1552c": {"regular": "int"}}, "asm": "Sha384FinalInternal (.text @ 0xffe154a9):\nffe154a9  push ebp\nffe154aa  mov ebp, esp\nffe154ac  and esp, 0FFFFFFF8h\nffe154af  push ebx\nffe154b0  push ebp\nffe154b1  push esi\nffe154b2  mov esi, ecx\nffe154b4  push edi\nffe154b5  mov edi, edx\nffe154b7  test esi, esi\nffe154b9  jnz loc_FFE154C3\nffe154bb  or eax, 0FFFFFFFFh\nffe154be  jmp loc_FFE155B2\nffe154c3  test edi, edi\nffe154c5  jz loc_FFE154BB\nffe154c7  mov ecx, [esi+48h]\nffe154ca  mov ebx, 80h\nffe154cf  cmp ecx, ebx\nffe154d1  jnb loc_FFE154BB\nffe154d3  push 8\nffe154d5  mov eax, ecx\nffe154d7  pop ebp\nffe154d8  mul , ebp\nffe154da  add [esi], eax\nffe154dc  adc [esi+4], edx\nffe154df  mov [ecx+esi+4Ch], bl\nffe154e3  inc dword ptr [esi+48h]\nffe154e6  mov eax, [esi+48h]\nffe154e9  cmp eax, 70h\nffe154ec  jbe loc_FFE1551A\nffe154ee  jmp loc_FFE154FB\nffe154f0  mov byte ptr [esi+eax+4Ch], 0\nffe154f5  inc dword ptr [esi+48h]\nffe154f8  mov eax, [esi+48h]\nffe154fb  cmp eax, ebx\nffe154fd  jb loc_FFE154F0\nffe154ff  lea edx, [esi+4Ch]\nffe15502  mov ecx, esi... [2524 chars total]", "code": "int __fastcall Sha384FinalInternal(int a1, int a2)\n{\n  unsigned int n0x80; // ecx\n  unsigned int n0x80_1; // eax\n  _BYTE *v7; // ecx\n  _BYTE *v8; // esi\n  int n8; // edx\n  char v10; // al\n\n  if ( !a1 ) /*0xffe154b9*/\n    return -1; /*0xffe154b9*/\n  if ( !a2 ) /*0xffe154c5*/\n    return -1; /*0xffe154c5*/\n  n0x80 = *(_DWORD *)(a1 + 72); /*0xffe154c7*/\n  if ( n0x80 >= 0x80 ) /*0xffe154d1*/\n    return -1; /*0xffe154bb*/\n  *(_QWORD *)a1 += 8LL * n0x80; /*0xffe154da*/\n  *(_BYTE *)(n0x80 + a1 + 76) = 0x80; /*0xffe154df*/\n  n0x80_1 = ++*(_DWORD *)(a1 + 72); /*0xffe154e6*/\n  if ( n0x80_1 > 0x70 ) /*0xffe154ec*/\n  {\n    while ( n0x80_1 < 0x80 ) /*0xffe154fd*/\n    {\n      *(_BYTE *)(a1 + n0x80_1 + 76) = 0; /*0xffe154f0*/\n      n0x80_1 = ++*(_DWORD *)(a1 + 72); /*0xffe154f8*/\n    }\n    Sha256RoundConstants(a1, a1 + 76); /*0xffe15504*/\n    *(_DWORD *)(a1 + 72) = 0; /*0xffe15509*/\n  }\n  while ( *(_DWORD *)(a1 + 72) < 0x78u ) /*0xffe1551e*/\n  {\n    *(_BYTE *)(*(_DWORD *)(a1 + 72) + a1 + 76) = 0; /*0x... [2190 chars total]", "xrefs": {"to": [{"addr": "0xffe0f105", "type": "code"}, {"addr": "0xffe145a9", "type": "code"}], "from": [{"addr": "0xffe154aa", "type": "code"}]}}, {"addr": "0xffe155ba", "name": "Tpm20GetHashFromDigest", "prototype": "void __usercall(_BYTE *@<edx>, unsigned int, int)", "size": "0x37", "comments": {}, "asm": "Tpm20GetHashFromDigest (.text @ 0xffe155ba):\nffe155ba  mov ecx, [esp+arg_0]\nffe155be  push esi\nffe155bf  mov esi, [esp+4+arg_4]\nffe155c3  cmp ecx, edx\nffe155c5  jnb loc_FFE155DE\nffe155c7  dec edx\nffe155c8  dec ecx\nffe155c9  add edx, esi\nffe155cb  add ecx, esi\nffe155cd  test esi, esi\nffe155cf  jz loc_FFE155EF\nffe155d1  mov al, [ecx]\nffe155d3  mov [edx], al\nffe155d5  dec edx\nffe155d6  dec ecx\nffe155d7  sub esi, 1\nffe155da  jnz loc_FFE155D1\nffe155dc  pop esi\nffe155dd  retn\nffe155de  test esi, esi\nffe155e0  jz loc_FFE155EF\nffe155e2  sub ecx, edx\nffe155e4  mov al, [ecx+edx]\nffe155e7  mov [edx], al\nffe155e9  inc edx\nffe155ea  sub esi, 1\nffe155ed  jnz loc_FFE155E4\nffe155ef  pop esi\nffe155f0  retn", "code": "void __usercall Tpm20GetHashFromDigest(_BYTE *a1@<edx>, unsigned int a2, int a3)\n{\n  int v3; // esi\n  _BYTE *v4; // edx\n  _BYTE *v5; // ecx\n  unsigned int v6; // ecx\n\n  v3 = a3; /*0xffe155bf*/\n  if ( a2 >= (unsigned int)a1 ) /*0xffe155c5*/\n  {\n    if ( a3 ) /*0xffe155e0*/\n    {\n      v6 = a2 - (_DWORD)a1; /*0xffe155e2*/\n      do /*0xffe155ed*/\n      {\n        *a1 = a1[v6]; /*0xffe155e7*/\n        ++a1; /*0xffe155e9*/\n        --v3; /*0xffe155ea*/\n      }\n      while ( v3 ); /*0xffe155ed*/\n    }\n  }\n  else\n  {\n    v4 = &a1[a3 - 1]; /*0xffe155c9*/\n    v5 = (_BYTE *)(a3 + a2 - 1); /*0xffe155cb*/\n    if ( a3 ) /*0xffe155cf*/\n    {\n      do /*0xffe155da*/\n      {\n        *v4-- = *v5--; /*0xffe155d3*/\n        --v3; /*0xffe155d7*/\n      }\n      while ( v3 ); /*0xffe155da*/\n    }\n  }\n}", "xrefs": {"to": [{"addr": "0xffe0e88a", "type": "code"}, {"addr": "0xffe0f8c4", "type": "code"}, {"addr": "0xffe1561b", "type": "code"}, {"addr": "0xffe1565d", "type": "code"}, {"addr": "0xffe15690", "type": "code"}, {"addr": "0xffe156c3", "type": "code"}], "from": [{"addr": "0xffe155be", "type": "code"}]}}, {"addr": "0xffe155f1", "name": "Tpm20CopyDigest", "prototype": "int __cdecl(unsigned int i, _BYTE *)", "size": "0x38", "comments": {"0xffe155ff": {"regular": "i"}, "0xffe15607": {"regular": "buf"}, "0xffe1560a": {"regular": "dst"}}, "asm": "Tpm20CopyDigest (.text @ 0xffe155f1):\nffe155f1  push ebp\nffe155f2  mov ebp, esp\nffe155f4  sub esp, 70h\nffe155f7  lea ecx, [ebp+buf]\nffe155fa  call Sha1Init\nffe155ff  push [ebp+i]\nffe15602  call Sha1Update\nffe15607  lea edx, [ebp+buf]\nffe1560a  lea ecx, [ebp+dst]\nffe1560d  call Sha1Final\nffe15612  mov edx, [ebp+arg_4]\nffe15615  lea eax, [ebp+dst]\nffe15618  push 14h\nffe1561a  push eax\nffe1561b  call Tpm20GetHashFromDigest\nffe15620  add esp, 0Ch\nffe15623  xor eax, eax\nffe15625  mov esp, ebp\nffe15627  pop ebp\nffe15628  retn", "code": "int __cdecl Tpm20CopyDigest(unsigned int i, _BYTE *a2)\n{\n  char *src; // edx\n  int buf_1; // ecx\n  _DWORD buf[23]; // [esp+0h] [ebp-70h] BYREF\n  char dst[20]; // [esp+5Ch] [ebp-14h] BYREF\n\n  Sha1Init(buf); /*0xffe155fa*/\n  Sha1Update(buf_1, src, i); /*0xffe15602*/\n  Sha1Final(dst, buf); /*0xffe1560d*/\n  Tpm20GetHashFromDigest(a2, (unsigned int)dst, 20); /*0xffe1561b*/\n  return 0; /*0xffe15625*/\n}", "xrefs": {"to": [{"addr": "0xffe0e2c4", "type": "code"}, {"addr": "0xffe0fb3f", "type": "code"}], "from": [{"addr": "0xffe155f2", "type": "code"}]}}]}, "content": [{"type": "text", "text": "{\"format\":\"json\",\"functions\":[{\"addr\":\"0xffe14375\",\"name\":\"Sha1FinalInternal\",\"prototype\":\"int __fastcall(_DWORD *, _BYTE *)\",\"size\":\"0x18f\",\"comments\":{\"0xffe143ba\":{\"regular\":\"src\"},\"0xffe143bd\":{\"regular\":\"_DWORD *\"},\"0xffe14403\":{\"regular\":\"src\"},\"0xffe14433\":{\"regular\":\"_DWORD *\"}},\"asm\":\"Sha1FinalInternal (.text @ 0xffe14375):\\nffe14375  push esi\\nffe14376  mov esi, ecx\\nffe14378  push edi\\nffe14379  mov edi, edx\\nffe1437b  mov ecx, [esi+28h]\\nffe1437e  cmp ecx, 40h\\nffe14381  jb loc_FFE1438B\\nffe14383  or eax, 0FFFFFFFFh\\nffe14386  jmp loc_FFE14501\\nffe1438b  push ebx\\nffe1438c  mov eax, ecx\\nffe1438e  shl eax, 3\\nffe14391  add [esi], eax\\nffe14393  push 0\\nffe14395  pop ebx\\nffe14396  adc [esi+4], ebx\\nffe14399  mov byte ptr [ecx+esi+2Ch], 80h\\nffe1439e  inc dword ptr [esi+28h]\\nffe143a1  mov eax, [esi+28h]\\nffe143a4  cmp eax, 38h\\nffe143a7  jbe loc_FFE143D3\\nffe143a9  jmp loc_FFE143B5\\nffe143ab  mov [esi+eax+2Ch], bl\\nffe143af  inc dword ptr [esi+28h]\\nffe143b2  mov eax, [esi+28h]\\nffe143b5  cmp eax, 40h\\nffe143b8  jb loc_FFE143AB\\nffe143ba  lea edx, [esi+2Ch]\\nffe143bd  mov ecx, esi\\nffe143bf  call Sha256Transform\\nffe143c4  mov [esi+28h], ebx\\nffe143c7  jmp loc_FFE143D3\\nffe143c9  mov eax, [esi+28h]\\nffe143cc  mov [esi+eax+2Ch], bl\\nffe143d0  inc dword ptr [esi+28h]\\nffe143d3  cmp dword ptr [esi+28h... [3787 chars total]\",\"code\":\"int __fastcall Sha1FinalInternal(_DWORD *a1, _BYTE *a2)\\n{\\n  unsigned int n0x40; // ecx\\n  bool v6; // cf\\n  unsigned int n0x40_1; // eax\\n\\n  n0x40 = a1[10]; /*0xffe1437b*/\\n  if ( n0x40 >= 0x40 ) /*0xffe14381*/\\n    return -1; /*0xffe14383*/\\n  v6 = __CFADD__(8 * n0x40, *a1); /*0xffe14391*/\\n  *a1 += 8 * n0x40; /*0xffe14391*/\\n  a1[1] += v6; /*0xffe14396*/\\n  *((_BYTE *)a1 + n0x40 + 44) = 0x80; /*0xffe14399*/\\n  n0x40_1 = ++a1[10]; /*0xffe143a1*/\\n  if ( n0x40_1 > 0x38 ) /*0xffe143a7*/\\n  {\\n    while ( n0x40_1 < 0x40 ) /*0xffe143b8*/\\n    {\\n      *((_BYTE *)a1 + n0x40_1 + 44) = 0; /*0xffe143ab*/\\n      n0x40_1 = ++a1[10]; /*0xffe143b2*/\\n    }\\n    Sha256Transform(a1, (unsigned __int8 *)a1 + 44); /*0xffe143bf*/\\n    a1[10] = 0; /*0xffe143c4*/\\n  }\\n  while ( a1[10] < 0x38u ) /*0xffe143d7*/\\n    *((_BYTE *)a1 + a1[10]++ + 44) = 0; /*0xffe143cc*/\\n  *((_BYTE *)a1 + 100) = *((_BYTE *)a1 + 7); /*0xffe143de*/\\n  *((_BYTE *)a1 + 101) = *((_BYTE *)a1 + 6); /*0xffe143e4*/\\n  *((_BYTE *)a1 + 102) = sub_FFE16354(0x28u... [2914 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0f0dd\",\"type\":\"code\"},{\"addr\":\"0xffe1564e\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe14376\",\"type\":\"code\"}]}},{\"addr\":\"0xffe14504\",\"name\":\"Tpm20HashAllSha256\",\"prototype\":\"int __thiscall(_DWORD *this)\",\"size\":\"0x83\",\"comments\":{},\"asm\":\"Tpm20HashAllSha256 (.text @ 0xffe14504):\\nffe14504  test ecx, ecx\\nffe14506  jnz loc_FFE1450C\\nffe14508  or eax, 0FFFFFFFFh\\nffe1450b  retn\\nffe1450c  xor eax, eax\\nffe1450e  mov [ecx+48h], eax\\nffe14511  mov [ecx], eax\\nffe14513  mov [ecx+4], eax\\nffe14516  mov dword ptr [ecx+8], 0C1059ED8h\\nffe1451d  mov dword ptr [ecx+0Ch], 0CBBB9D5Dh\\nffe14524  mov dword ptr [ecx+10h], 367CD507h\\nffe1452b  mov dword ptr [ecx+14h], 629A292Ah\\nffe14532  mov dword ptr [ecx+18h], 3070DD17h\\nffe14539  mov dword ptr [ecx+1Ch], 9159015Ah\\nffe14540  mov dword ptr [ecx+20h], 0F70E5939h\\nffe14547  mov dword ptr [ecx+24h], 152FECD8h\\nffe1454e  mov dword ptr [ecx+28h], 0FFC00B31h\\nffe14555  mov dword ptr [ecx+2Ch], 67332667h\\nffe1455c  mov dword ptr [ecx+30h], 68581511h\\nffe14563  mov dword ptr [ecx+34h], 8EB44A87h\\nffe1456a  mov dword ptr [ecx+38h], 64F98FA7h\\nffe14571  mov dword ptr [ecx+3Ch], 0DB0C2E0Dh\\nffe14578  mov dword ptr [ecx+40h], 0BEFA4FA4h\\nffe1457f  mov dword ptr [ecx+44h], 47B5481Dh\\nffe14586  retn\",\"code\":\"int __thiscall Tpm20HashAllSha256(_DWORD *this)\\n{\\n  if ( !this ) /*0xffe14506*/\\n    return -1; /*0xffe14508*/\\n  *(this + 18) = 0; /*0xffe1450e*/\\n  *this = 0; /*0xffe14511*/\\n  *(this + 1) = 0; /*0xffe14513*/\\n  *(this + 2) = -1056596264; /*0xffe14516*/\\n  *(this + 3) = -876896931; /*0xffe1451d*/\\n  *(this + 4) = 914150663; /*0xffe14524*/\\n  *(this + 5) = 1654270250; /*0xffe1452b*/\\n  *(this + 6) = 812702999; /*0xffe14532*/\\n  *(this + 7) = -1856437926; /*0xffe14539*/\\n  *(this + 8) = -150054599; /*0xffe14540*/\\n  *(this + 9) = 355462360; /*0xffe14547*/\\n  *(this + 10) = -4191439; /*0xffe1454e*/\\n  *(this + 11) = 1731405415; /*0xffe14555*/\\n  *(this + 12) = 1750603025; /*0xffe1455c*/\\n  *(this + 13) = -1900787065; /*0xffe14563*/\\n  *(this + 14) = 1694076839; /*0xffe1456a*/\\n  *(this + 15) = -619958771; /*0xffe14571*/\\n  *(this + 16) = -1090891868; /*0xffe14578*/\\n  *(this + 17) = 1203062813; /*0xffe1457f*/\\n  return 0; /*0xffe1450b*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0ef25\",\"type\":\"code\"},{\"addr\":\"0xffe145d1\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe14506\",\"type\":\"code\"}]}},{\"addr\":\"0xffe14587\",\"name\":\"Sha256FinalInternal\",\"prototype\":\"int __fastcall(int, char *dst)\",\"size\":\"0x3b\",\"comments\":{},\"asm\":\"Sha256FinalInternal (.text @ 0xffe14587):\\nffe14587  push ebp\\nffe14588  mov ebp, esp\\nffe1458a  sub esp, 44h\\nffe1458d  push esi\\nffe1458e  mov esi, edx\\nffe14590  test ecx, ecx\\nffe14592  jnz loc_FFE14599\\nffe14594  or eax, 0FFFFFFFFh\\nffe14597  jmp loc_FFE145BD\\nffe14599  test esi, esi\\nffe1459b  jz loc_FFE14594\\nffe1459d  cmp dword ptr [ecx+48h], 80h\\nffe145a4  jnb loc_FFE14594\\nffe145a6  lea edx, [ebp+var_40]\\nffe145a9  call Sha384FinalInternal\\nffe145ae  push 30h\\nffe145b0  lea edx, [ebp+var_40]\\nffe145b3  mov ecx, esi\\nffe145b5  call CopyMemChecked\\nffe145ba  pop ecx\\nffe145bb  xor eax, eax\\nffe145bd  pop esi\\nffe145be  mov esp, ebp\\nffe145c0  pop ebp\\nffe145c1  retn\",\"code\":\"int __fastcall Sha256FinalInternal(int a1, char *dst)\\n{\\n  char src[64]; // [esp+8h] [ebp-40h] BYREF\\n\\n  if ( !a1 || !dst || *(_DWORD *)(a1 + 72) >= 0x80u ) /*0xffe145a4*/\\n    return -1; /*0xffe14594*/\\n  sub_FFE154A9(); /*0xffe145a9*/\\n  CopyMemChecked(dst, src, 0x30u); /*0xffe145b5*/\\n  return 0; /*0xffe145bd*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0f0f1\",\"type\":\"code\"},{\"addr\":\"0xffe145e9\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe14588\",\"type\":\"code\"}]}},{\"addr\":\"0xffe145c2\",\"name\":\"Sha256HashAll\",\"prototype\":\"int __cdecl(unsigned int *p_i, char *dst)\",\"size\":\"0x30\",\"comments\":{\"0xffe145d9\":{\"regular\":\"src\"},\"0xffe145db\":{\"regular\":\"i\"},\"0xffe145e2\":{\"regular\":\"dst\"},\"0xffe145e6\":{\"regular\":\"int\"}},\"asm\":\"Sha256HashAll (.text @ 0xffe145c2):\\nffe145c2  push ebp\\nffe145c3  mov ebp, esp\\nffe145c5  and esp, 0FFFFFFF8h\\nffe145c8  sub esp, 0D0h\\nffe145ce  lea ecx, [esp+0D0h+var_D0]\\nffe145d1  call Tpm20HashAllSha256\\nffe145d6  mov eax, [ebp+p_i]\\nffe145d9  mov edx, [edx]\\nffe145db  push dword ptr [eax]\\nffe145dd  call Sha384UpdateInternal\\nffe145e2  mov edx, [ebp+dst]\\nffe145e5  pop ecx\\nffe145e6  lea ecx, [esp+0D0h+var_D0]\\nffe145e9  call Sha256FinalInternal\\nffe145ee  mov esp, ebp\\nffe145f0  pop ebp\\nffe145f1  retn\",\"code\":\"int __cdecl Sha256HashAll(unsigned int *p_i, char *dst)\\n{\\n  char **p_src; // edx\\n  char *v3; // ecx\\n  int v5[52]; // [esp+0h] [ebp-D0h] BYREF\\n\\n  Tpm20HashAllSha256(v5); /*0xffe145d1*/\\n  sub_FFE153F4(v3, *p_src, *p_i); /*0xffe145dd*/\\n  return Sha256FinalInternal((int)v5, dst); /*0xffe145ee*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe15682\",\"type\":\"code\"},{\"addr\":\"0xffe156b5\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe145c3\",\"type\":\"code\"}]}},{\"addr\":\"0xffe145f2\",\"name\":\"Sha256RoundConstants\",\"prototype\":\"int __fastcall(int, int src)\",\"size\":\"0xd7f\",\"comments\":{},\"asm\":\"Sha256RoundConstants (.text @ 0xffe145f2):\\nffe145f2  sub esp, 314h\\nffe145f8  push ebx\\nffe145f9  push ebp\\nffe145fa  push esi\\nffe145fb  push edi\\nffe145fc  add ecx, 8\\nffe145ff  lea esi, [esp+324h+var_2CC]\\nffe14603  push 8\\nffe14605  mov ebp, edx\\nffe14607  mov [esp+328h+var_288], ecx\\nffe1460e  mov edi, ecx\\nffe14610  pop ebx\\nffe14611  push 8\\nffe14613  mov edx, edi\\nffe14615  mov ecx, esi\\nffe14617  call CopyMemChecked\\nffe1461c  add edi, 8\\nffe1461f  add esi, 8\\nffe14622  pop ecx\\nffe14623  sub ebx, 1\\nffe14626  jnz loc_FFE14611\\nffe14628  lea edi, [ebp+2]\\nffe1462b  movzx eax, byte ptr [edi-2]\\nffe1462f  cdq ,\\nffe14630  mov ecx, eax\\nffe14632  mov esi, edx\\nffe14634  movzx eax, byte ptr [edi-1]\\nffe14638  shld esi, ecx, 8\\nffe1463c  cdq ,\\nffe1463d  shl ecx, 8\\nffe14640  or esi, edx\\nffe14642  or ecx, eax\\nffe14644  movzx eax, byte ptr [edi]\\nffe14647  shld esi, ecx, 8\\nffe1464b  cdq ,\\nffe1464c  lea edi, [edi+8]\\nffe1464f  shl ecx, 8\\nffe14652  or esi, edx\\nffe14654  or ecx, eax\\nffe14656  movzx eax, byte ptr [edi... [35565 chars total]\",\"code\":\"int __fastcall Sha256RoundConstants(int a1, int src)\\n{\\n  char *dst; // esi\\n  char *src_1; // edi\\n  int n8; // ebx\\n  unsigned __int8 *v6; // edi\\n  __int64 v7; // rt0\\n  __int64 v8; // rax\\n  unsigned __int64 v9; // rt0\\n  int v10; // ecx\\n  _BYTE *v11; // edx\\n  __int64 v12; // rcx\\n  unsigned int v13; // edi\\n  unsigned int v14; // ebp\\n  unsigned __int64 v15; // rt0\\n  int v16; // edi\\n  bool v17; // zf\\n  int n8_1; // ebp\\n  unsigned int v19; // ecx\\n  unsigned int v20; // edx\\n  unsigned __int64 v21; // kr28_8\\n  unsigned __int64 v22; // kr58_8\\n  unsigned __int64 v23; // kr88_8\\n  unsigned __int64 v24; // kr90_8\\n  unsigned __int64 v25; // krB0_8\\n  unsigned __int64 v26; // kr00_8\\n  unsigned __int64 v27; // krD0_8\\n  unsigned int v28; // eax\\n  unsigned __int64 v29; // kr100_8\\n  unsigned int v30; // eax\\n  unsigned __int64 v31; // kr130_8\\n  unsigned __int64 v32; // kr08_8\\n  unsigned int v33; // eax\\n  unsigned __int64 v34; // kr160_8\\n  unsigned __int64 v35; // kr20_8\\n  unsigned __int64 v36; // kr170_8\\n  ... [14483 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe1542f\",\"type\":\"code\"},{\"addr\":\"0xffe15483\",\"type\":\"code\"},{\"addr\":\"0xffe15504\",\"type\":\"code\"},{\"addr\":\"0xffe1556c\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe145f8\",\"type\":\"code\"}]}},{\"addr\":\"0xffe15371\",\"name\":\"Tpm20HashAllSha384\",\"prototype\":\"int __thiscall(_DWORD *this)\",\"size\":\"0x83\",\"comments\":{},\"asm\":\"Tpm20HashAllSha384 (.text @ 0xffe15371):\\nffe15371  test ecx, ecx\\nffe15373  jnz loc_FFE15379\\nffe15375  or eax, 0FFFFFFFFh\\nffe15378  retn\\nffe15379  xor eax, eax\\nffe1537b  mov [ecx+48h], eax\\nffe1537e  mov [ecx], eax\\nffe15380  mov [ecx+4], eax\\nffe15383  mov dword ptr [ecx+8], 0F3BCC908h\\nffe1538a  mov dword ptr [ecx+0Ch], 6A09E667h\\nffe15391  mov dword ptr [ecx+10h], 84CAA73Bh\\nffe15398  mov dword ptr [ecx+14h], 0BB67AE85h\\nffe1539f  mov dword ptr [ecx+18h], 0FE94F82Bh\\nffe153a6  mov dword ptr [ecx+1Ch], 3C6EF372h\\nffe153ad  mov dword ptr [ecx+20h], 5F1D36F1h\\nffe153b4  mov dword ptr [ecx+24h], 0A54FF53Ah\\nffe153bb  mov dword ptr [ecx+28h], 0ADE682D1h\\nffe153c2  mov dword ptr [ecx+2Ch], 510E527Fh\\nffe153c9  mov dword ptr [ecx+30h], 2B3E6C1Fh\\nffe153d0  mov dword ptr [ecx+34h], 9B05688Ch\\nffe153d7  mov dword ptr [ecx+38h], 0FB41BD6Bh\\nffe153de  mov dword ptr [ecx+3Ch], 1F83D9ABh\\nffe153e5  mov dword ptr [ecx+40h], 137E2179h\\nffe153ec  mov dword ptr [ecx+44h], 5BE0CD19h\\nffe153f3  retn\",\"code\":\"int __thiscall Tpm20HashAllSha384(_DWORD *this)\\n{\\n  if ( !this ) /*0xffe15373*/\\n    return -1; /*0xffe15375*/\\n  *(this + 18) = 0; /*0xffe1537b*/\\n  *this = 0; /*0xffe1537e*/\\n  *(this + 1) = 0; /*0xffe15380*/\\n  *(this + 2) = -205731576; /*0xffe15383*/\\n  *(this + 3) = 1779033703; /*0xffe1538a*/\\n  *(this + 4) = -2067093701; /*0xffe15391*/\\n  *(this + 5) = -1150833019; /*0xffe15398*/\\n  *(this + 6) = -23791573; /*0xffe1539f*/\\n  *(this + 7) = 1013904242; /*0xffe153a6*/\\n  *(this + 8) = 1595750129; /*0xffe153ad*/\\n  *(this + 9) = -1521486534; /*0xffe153b4*/\\n  *(this + 10) = -1377402159; /*0xffe153bb*/\\n  *(this + 11) = 1359893119; /*0xffe153c2*/\\n  *(this + 12) = 725511199; /*0xffe153c9*/\\n  *(this + 13) = -1694144372; /*0xffe153d0*/\\n  *(this + 14) = -79577749; /*0xffe153d7*/\\n  *(this + 15) = 528734635; /*0xffe153de*/\\n  *(this + 16) = 327033209; /*0xffe153e5*/\\n  *(this + 17) = 1541459225; /*0xffe153ec*/\\n  return 0; /*0xffe15378*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0ef3e\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe15373\",\"type\":\"code\"}]}},{\"addr\":\"0xffe153f4\",\"name\":\"Sha384UpdateInternal\",\"prototype\":\"int __fastcall(char *, char *src, unsigned int i)\",\"size\":\"0xb5\",\"comments\":{\"0xffe1542d\":{\"regular\":\"int\"},\"0xffe1547e\":{\"regular\":\"src\"},\"0xffe15481\":{\"regular\":\"int\"},\"0xffe15492\":{\"regular\":\"src\"}},\"asm\":\"Sha384UpdateInternal (.text @ 0xffe153f4):\\nffe153f4  push ebp\\nffe153f5  mov ebp, esp\\nffe153f7  and esp, 0FFFFFFF8h\\nffe153fa  push ecx\\nffe153fb  push ebx\\nffe153fc  push esi\\nffe153fd  mov esi, ecx\\nffe153ff  mov [esp+0Ch+src], edx\\nffe15403  push edi\\nffe15404  test esi, esi\\nffe15406  jnz loc_FFE15410\\nffe15408  or eax, 0FFFFFFFFh\\nffe1540b  jmp loc_FFE154A2\\nffe15410  test edx, edx\\nffe15412  jz loc_FFE15408\\nffe15414  mov ebx, 80h\\nffe15419  cmp [esi+48h], ebx\\nffe1541c  ja loc_FFE15408\\nffe1541e  mov edi, [ebp+i]\\nffe15421  jmp loc_FFE1549C\\nffe15423  cmp dword ptr [esi+48h], 0\\nffe15427  jnz loc_FFE1544F\\nffe15429  cmp edi, ebx\\nffe1542b  jb loc_FFE1544F\\nffe1542d  mov ecx, esi\\nffe1542f  call Sha256RoundConstants\\nffe15434  test eax, eax\\nffe15436  jnz loc_FFE154A2\\nffe15438  add dword ptr [esi], 400h\\nffe1543e  mov edx, [esp+10h+src]\\nffe15442  adc [esi+4], eax\\nffe15445  add edx, ebx\\nffe15447  mov [esp+10h+src], edx\\nffe1544b  sub edi, ebx\\nffe1544d  jmp loc_FFE1549C\\nffe1544f  sub ebx, [esi+48h]\\nffe15452  ... [1855 chars total]\",\"code\":\"int __fastcall Sha384UpdateInternal(char *a1, char *src, unsigned int i)\\n{\\n  int result; // eax\\n  bool v6; // cf\\n  unsigned int i_1; // ebx\\n  char *srca; // [esp+Ch] [ebp-4h]\\n\\n  srca = src; /*0xffe153ff*/\\n  if ( !a1 || !src || *((_DWORD *)a1 + 18) > 0x80u ) /*0xffe1541c*/\\n    return -1; /*0xffe15408*/\\n  while ( i ) /*0xffe1549e*/\\n  {\\n    if ( *((_DWORD *)a1 + 18) || i < 0x80 ) /*0xffe1542b*/\\n    {\\n      i_1 = 128 - *((_DWORD *)a1 + 18); /*0xffe1544f*/\\n      if ( i < i_1 ) /*0xffe15454*/\\n        i_1 = i; /*0xffe15456*/\\n      CopyMemChecked(&a1[*((_DWORD *)a1 + 18) + 76], src, i_1); /*0xffe1545f*/\\n      i -= i_1; /*0xffe15468*/\\n      *((_DWORD *)a1 + 18) += i_1; /*0xffe1546a*/\\n      src = &srca[i_1]; /*0xffe1546d*/\\n      srca += i_1; /*0xffe15474*/\\n      if ( *((_DWORD *)a1 + 18) == 128 ) /*0xffe1547c*/\\n      {\\n        result = Sha256RoundConstants((int)a1, (int)(a1 + 76)); /*0xffe15483*/\\n        if ( result ) /*0xffe1548a*/\\n          return result; /*0xffe1548a*/\\n        v6 = __CFADD__(... [1682 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0eff7\",\"type\":\"code\"},{\"addr\":\"0xffe145dd\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe153f5\",\"type\":\"code\"}]}},{\"addr\":\"0xffe154a9\",\"name\":\"Sha384FinalInternal\",\"prototype\":\"int __fastcall(int, int)\",\"size\":\"0x111\",\"comments\":{\"0xffe154ff\":{\"regular\":\"src\"},\"0xffe15502\":{\"regular\":\"int\"},\"0xffe15523\":{\"regular\":\"src\"},\"0xffe1552c\":{\"regular\":\"int\"}},\"asm\":\"Sha384FinalInternal (.text @ 0xffe154a9):\\nffe154a9  push ebp\\nffe154aa  mov ebp, esp\\nffe154ac  and esp, 0FFFFFFF8h\\nffe154af  push ebx\\nffe154b0  push ebp\\nffe154b1  push esi\\nffe154b2  mov esi, ecx\\nffe154b4  push edi\\nffe154b5  mov edi, edx\\nffe154b7  test esi, esi\\nffe154b9  jnz loc_FFE154C3\\nffe154bb  or eax, 0FFFFFFFFh\\nffe154be  jmp loc_FFE155B2\\nffe154c3  test edi, edi\\nffe154c5  jz loc_FFE154BB\\nffe154c7  mov ecx, [esi+48h]\\nffe154ca  mov ebx, 80h\\nffe154cf  cmp ecx, ebx\\nffe154d1  jnb loc_FFE154BB\\nffe154d3  push 8\\nffe154d5  mov eax, ecx\\nffe154d7  pop ebp\\nffe154d8  mul , ebp\\nffe154da  add [esi], eax\\nffe154dc  adc [esi+4], edx\\nffe154df  mov [ecx+esi+4Ch], bl\\nffe154e3  inc dword ptr [esi+48h]\\nffe154e6  mov eax, [esi+48h]\\nffe154e9  cmp eax, 70h\\nffe154ec  jbe loc_FFE1551A\\nffe154ee  jmp loc_FFE154FB\\nffe154f0  mov byte ptr [esi+eax+4Ch], 0\\nffe154f5  inc dword ptr [esi+48h]\\nffe154f8  mov eax, [esi+48h]\\nffe154fb  cmp eax, ebx\\nffe154fd  jb loc_FFE154F0\\nffe154ff  lea edx, [esi+4Ch]\\nffe15502  mov ecx, esi... [2524 chars total]\",\"code\":\"int __fastcall Sha384FinalInternal(int a1, int a2)\\n{\\n  unsigned int n0x80; // ecx\\n  unsigned int n0x80_1; // eax\\n  _BYTE *v7; // ecx\\n  _BYTE *v8; // esi\\n  int n8; // edx\\n  char v10; // al\\n\\n  if ( !a1 ) /*0xffe154b9*/\\n    return -1; /*0xffe154b9*/\\n  if ( !a2 ) /*0xffe154c5*/\\n    return -1; /*0xffe154c5*/\\n  n0x80 = *(_DWORD *)(a1 + 72); /*0xffe154c7*/\\n  if ( n0x80 >= 0x80 ) /*0xffe154d1*/\\n    return -1; /*0xffe154bb*/\\n  *(_QWORD *)a1 += 8LL * n0x80; /*0xffe154da*/\\n  *(_BYTE *)(n0x80 + a1 + 76) = 0x80; /*0xffe154df*/\\n  n0x80_1 = ++*(_DWORD *)(a1 + 72); /*0xffe154e6*/\\n  if ( n0x80_1 > 0x70 ) /*0xffe154ec*/\\n  {\\n    while ( n0x80_1 < 0x80 ) /*0xffe154fd*/\\n    {\\n      *(_BYTE *)(a1 + n0x80_1 + 76) = 0; /*0xffe154f0*/\\n      n0x80_1 = ++*(_DWORD *)(a1 + 72); /*0xffe154f8*/\\n    }\\n    Sha256RoundConstants(a1, a1 + 76); /*0xffe15504*/\\n    *(_DWORD *)(a1 + 72) = 0; /*0xffe15509*/\\n  }\\n  while ( *(_DWORD *)(a1 + 72) < 0x78u ) /*0xffe1551e*/\\n  {\\n    *(_BYTE *)(*(_DWORD *)(a1 + 72) + a1 + 76) = 0; /*0x... [2190 chars total]\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0f105\",\"type\":\"code\"},{\"addr\":\"0xffe145a9\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe154aa\",\"type\":\"code\"}]}},{\"addr\":\"0xffe155ba\",\"name\":\"Tpm20GetHashFromDigest\",\"prototype\":\"void __usercall(_BYTE *@<edx>, unsigned int, int)\",\"size\":\"0x37\",\"comments\":{},\"asm\":\"Tpm20GetHashFromDigest (.text @ 0xffe155ba):\\nffe155ba  mov ecx, [esp+arg_0]\\nffe155be  push esi\\nffe155bf  mov esi, [esp+4+arg_4]\\nffe155c3  cmp ecx, edx\\nffe155c5  jnb loc_FFE155DE\\nffe155c7  dec edx\\nffe155c8  dec ecx\\nffe155c9  add edx, esi\\nffe155cb  add ecx, esi\\nffe155cd  test esi, esi\\nffe155cf  jz loc_FFE155EF\\nffe155d1  mov al, [ecx]\\nffe155d3  mov [edx], al\\nffe155d5  dec edx\\nffe155d6  dec ecx\\nffe155d7  sub esi, 1\\nffe155da  jnz loc_FFE155D1\\nffe155dc  pop esi\\nffe155dd  retn\\nffe155de  test esi, esi\\nffe155e0  jz loc_FFE155EF\\nffe155e2  sub ecx, edx\\nffe155e4  mov al, [ecx+edx]\\nffe155e7  mov [edx], al\\nffe155e9  inc edx\\nffe155ea  sub esi, 1\\nffe155ed  jnz loc_FFE155E4\\nffe155ef  pop esi\\nffe155f0  retn\",\"code\":\"void __usercall Tpm20GetHashFromDigest(_BYTE *a1@<edx>, unsigned int a2, int a3)\\n{\\n  int v3; // esi\\n  _BYTE *v4; // edx\\n  _BYTE *v5; // ecx\\n  unsigned int v6; // ecx\\n\\n  v3 = a3; /*0xffe155bf*/\\n  if ( a2 >= (unsigned int)a1 ) /*0xffe155c5*/\\n  {\\n    if ( a3 ) /*0xffe155e0*/\\n    {\\n      v6 = a2 - (_DWORD)a1; /*0xffe155e2*/\\n      do /*0xffe155ed*/\\n      {\\n        *a1 = a1[v6]; /*0xffe155e7*/\\n        ++a1; /*0xffe155e9*/\\n        --v3; /*0xffe155ea*/\\n      }\\n      while ( v3 ); /*0xffe155ed*/\\n    }\\n  }\\n  else\\n  {\\n    v4 = &a1[a3 - 1]; /*0xffe155c9*/\\n    v5 = (_BYTE *)(a3 + a2 - 1); /*0xffe155cb*/\\n    if ( a3 ) /*0xffe155cf*/\\n    {\\n      do /*0xffe155da*/\\n      {\\n        *v4-- = *v5--; /*0xffe155d3*/\\n        --v3; /*0xffe155d7*/\\n      }\\n      while ( v3 ); /*0xffe155da*/\\n    }\\n  }\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e88a\",\"type\":\"code\"},{\"addr\":\"0xffe0f8c4\",\"type\":\"code\"},{\"addr\":\"0xffe1561b\",\"type\":\"code\"},{\"addr\":\"0xffe1565d\",\"type\":\"code\"},{\"addr\":\"0xffe15690\",\"type\":\"code\"},{\"addr\":\"0xffe156c3\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe155be\",\"type\":\"code\"}]}},{\"addr\":\"0xffe155f1\",\"name\":\"Tpm20CopyDigest\",\"prototype\":\"int __cdecl(unsigned int i, _BYTE *)\",\"size\":\"0x38\",\"comments\":{\"0xffe155ff\":{\"regular\":\"i\"},\"0xffe15607\":{\"regular\":\"buf\"},\"0xffe1560a\":{\"regular\":\"dst\"}},\"asm\":\"Tpm20CopyDigest (.text @ 0xffe155f1):\\nffe155f1  push ebp\\nffe155f2  mov ebp, esp\\nffe155f4  sub esp, 70h\\nffe155f7  lea ecx, [ebp+buf]\\nffe155fa  call Sha1Init\\nffe155ff  push [ebp+i]\\nffe15602  call Sha1Update\\nffe15607  lea edx, [ebp+buf]\\nffe1560a  lea ecx, [ebp+dst]\\nffe1560d  call Sha1Final\\nffe15612  mov edx, [ebp+arg_4]\\nffe15615  lea eax, [ebp+dst]\\nffe15618  push 14h\\nffe1561a  push eax\\nffe1561b  call Tpm20GetHashFromDigest\\nffe15620  add esp, 0Ch\\nffe15623  xor eax, eax\\nffe15625  mov esp, ebp\\nffe15627  pop ebp\\nffe15628  retn\",\"code\":\"int __cdecl Tpm20CopyDigest(unsigned int i, _BYTE *a2)\\n{\\n  char *src; // edx\\n  int buf_1; // ecx\\n  _DWORD buf[23]; // [esp+0h] [ebp-70h] BYREF\\n  char dst[20]; // [esp+5Ch] [ebp-14h] BYREF\\n\\n  Sha1Init(buf); /*0xffe155fa*/\\n  Sha1Update(buf_1, src, i); /*0xffe15602*/\\n  Sha1Final(dst, buf); /*0xffe1560d*/\\n  Tpm20GetHashFromDigest(a2, (unsigned int)dst, 20); /*0xffe1561b*/\\n  return 0; /*0xffe15625*/\\n}\",\"xrefs\":{\"to\":[{\"addr\":\"0xffe0e2c4\",\"type\":\"code\"},{\"addr\":\"0xffe0fb3f\",\"type\":\"code\"}],\"from\":[{\"addr\":\"0xffe155f2\",\"type\":\"code\"}]}}]}"}, {"type": "text", "text": "Output truncated. Run: curl -o .ida-mcp/f2225352-6edc-4364-a17e-941ed58ebe2d.json http://127.0.0.1:13375/output/f2225352-6edc-4364-a17e-941ed58ebe2d.json"}], "isError": false, "_meta": {"ida_mcp": {"output_truncated": true, "total_chars": 117105, "output_id": "f2225352-6edc-4364-a17e-941ed58ebe2d", "download_url": "http://127.0.0.1:13375/output/f2225352-6edc-4364-a17e-941ed58ebe2d.json", "download_hint": "Output truncated. Run: curl -o .ida-mcp/f2225352-6edc-4364-a17e-941ed58ebe2d.json http://127.0.0.1:13375/output/f2225352-6edc-4364-a17e-941ed58ebe2d.json"}}}, "id": 1}