
int SHA512_Final(SHA512_State *s,uchar *digest)

{
  int iVar1;
  uint32 *puVar2;
  uchar *puVar3;
  uchar *puVar4;
  uint32 uVar5;
  ulong uVar6;
  int iVar7;
  uint32 *puVar8;
  SHA512_State *s_00;
  uint uVar9;
  uint32 *puVar10;
  undefined *puVar11;
  uint32 len [4];
  uchar c [128];
  
  puVar11 = PTR___stack_chk_guard_00079930;
  iVar1 = s->blkused;
  iVar7 = *(int *)PTR___stack_chk_guard_00079930;
  if (iVar1 < 0x70) {
    iVar1 = 0x70 - iVar1;
  }
  else {
    iVar1 = 0xf0 - iVar1;
  }
  puVar10 = len;
  puVar2 = s->len + 2;
  puVar8 = puVar10;
  uVar5 = s->len[3];
  do {
    uVar9 = *puVar2;
    puVar2 = puVar2 + -1;
    puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d;
    puVar8 = puVar8 + -1;
    uVar5 = uVar9;
  } while (puVar2 != (uint32 *)&s->blkused);
  len[0] = uVar9 << 3;
  (*(code *)PTR___memset_chk_000797ac)(c,0,iVar1,0x80);
  c[0] = 0x80;
  SHA512_Bytes(s,c,iVar1);
  puVar3 = c;
  do {
    uVar5 = puVar10[3];
    puVar4 = puVar3 + 4;
    puVar10 = puVar10 + -1;
    puVar3[3] = (uchar)uVar5;
    *puVar3 = (uchar)(uVar5 >> 0x18);
    puVar3[1] = (uchar)(uVar5 >> 0x10);
    puVar3[2] = (uchar)(uVar5 >> 8);
    puVar3 = puVar4;
  } while (c + 0x10 != puVar4);
  SHA512_Bytes(s,c,0x10);
  puVar3 = digest;
  do {
    uVar6 = s->h[0].hi;
    puVar4 = puVar3 + 8;
    uVar9 = s->h[0].lo;
    s = (SHA512_State *)(s->h + 1);
    puVar3[3] = (uchar)uVar6;
    puVar3[7] = (uchar)uVar9;
    *puVar3 = (uchar)(uVar6 >> 0x18);
    puVar3[1] = (uchar)(uVar6 >> 0x10);
    s_00 = (SHA512_State *)(uVar9 >> 0x10);
    puVar3[2] = (uchar)(uVar6 >> 8);
    puVar3[4] = (uchar)(uVar9 >> 0x18);
    puVar3[5] = (uchar)(uVar9 >> 0x10);
    puVar3[6] = (uchar)(uVar9 >> 8);
    puVar3 = puVar4;
  } while (digest + 0x40 != puVar4);
  if (iVar7 == *(int *)puVar11) {
    return *(int *)puVar11;
  }
  puVar11 = PTR___stack_chk_fail_000797f0;
  (*(code *)PTR___stack_chk_fail_000797f0)();
  SHA512_Final(s_00,puVar4);
  (**(code **)(puVar11 + 0x2e19c))(s_00,0xd4);
                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  iVar1 = (**(code **)(puVar11 + 0x2e198))(s_00);
  return iVar1;
}



int SHA512_Final(uchar *md,SHA512_CTX *c)

{
  int iVar1;
  uint *puVar2;
  undefined1 *puVar3;
  undefined1 *puVar4;
  uint uVar5;
  undefined4 uVar6;
  int *piVar7;
  uchar *md_00;
  uint uVar8;
  SHA512_CTX *pSVar9;
  SHA512_CTX *c_00;
  int *piVar10;
  undefined *puVar11;
  int local_bc [3];
  uint local_b0;
  undefined1 local_ac [128];
  int local_2c;
  
  puVar11 = PTR___stack_chk_guard_00079930;
  iVar1 = *(int *)(md + 0xc0);
  local_2c = *(int *)PTR___stack_chk_guard_00079930;
  if (iVar1 < 0x70) {
    iVar1 = 0x70 - iVar1;
  }
  else {
    iVar1 = 0xf0 - iVar1;
  }
  piVar10 = local_bc;
  puVar2 = (uint *)(md + 0xcc);
  piVar7 = piVar10;
  uVar5 = *(uint *)(md + 0xd0);
  do {
    uVar8 = *puVar2;
    puVar2 = puVar2 + -1;
    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;
    piVar7 = piVar7 + -1;
    uVar5 = uVar8;
  } while (puVar2 != (uint *)(md + 0xc0));
  local_bc[0] = uVar8 << 3;
  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);
  local_ac[0] = 0x80;
  SHA512_Bytes(md,local_ac,iVar1);
  puVar3 = local_ac;
  do {
    iVar1 = piVar10[3];
    puVar4 = puVar3 + 4;
    piVar10 = piVar10 + -1;
    puVar3[3] = (char)iVar1;
    *puVar3 = (char)((uint)iVar1 >> 0x18);
    puVar3[1] = (char)((uint)iVar1 >> 0x10);
    puVar3[2] = (char)((uint)iVar1 >> 8);
    puVar3 = puVar4;
  } while (local_ac + 0x10 != puVar4);
  SHA512_Bytes(md,local_ac,0x10);
  pSVar9 = c;
  do {
    uVar6 = *(undefined4 *)md;
    c_00 = (SHA512_CTX *)(pSVar9->h + 1);
    uVar5 = *(uint *)(md + 4);
    md = md + 8;
    *(char *)((int)pSVar9->h + 3) = (char)uVar6;
    *(char *)((int)pSVar9->h + 7) = (char)uVar5;
    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);
    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);
    md_00 = (uchar *)(uVar5 >> 0x10);
    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);
    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);
    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);
    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);
    pSVar9 = c_00;
  } while ((SHA512_CTX *)&c->Nl != c_00);
  if (local_2c == *(int *)puVar11) {
    return *(int *)puVar11;
  }
  puVar11 = PTR___stack_chk_fail_000797f0;
  (*(code *)PTR___stack_chk_fail_000797f0)();
  SHA512_Final(md_00,c_00);
  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);
                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);
  return iVar1;
}


lui gp,0x3
addiu gp,gp,0x62e8
addu gp,gp,t9
addiu sp,sp,-0xd8
lw v0,0xc0(a0)
sw s3,0xc0(sp)
slti v1,v0,0x70
sw s4,0xc4(sp)
or s4,a0,zero
lw s3,-0x7740(gp)
sw gp,0x10(sp)
sw s0,0xb4(sp)
or s0,a1,zero
sw ra,0xd4(sp)
sw s7,0xd0(sp)
sw s6,0xcc(sp)
sw s5,0xc8(sp)
sw s2,0xbc(sp)
sw s1,0xb8(sp)
lw a0,0x0(s3)
sw a0,0xac(sp)
bne v1,zero,0x0004af44
_li s5,0x70
li s5,0xf0
subu s5,s5,v0
addiu s2,sp,0x1c
lw a2,0xd0(s4)
addiu v0,s4,0xcc
addiu t0,s4,0xc0
or s1,s4,zero
or a0,s2,zero
lw a1,0x0(v0)
sll v1,a2,0x3
addiu a0,a0,-0x4
addiu v0,v0,-0x4
srl a3,a1,0x1d
or a2,a1,zero
or v1,v1,a3
bne v0,t0,0x0004ae04
_sw v1,0x10(a0)
lw t9,-0x78c4(gp)
addiu s6,sp,0x2c
sll a2,a1,0x3
lw s7,-0x7ba0(gp)
li a3,0x80
or a1,zero,zero
sw a2,0x1c(sp)
or a0,s6,zero
jalr t9
_or a2,s5,zero
li v0,-0x80
or a2,s5,zero
sb v0,0x2c(sp)
or a1,s6,zero
or t9,s7,zero
bal 0x00049978
_or a0,s4,zero
addiu a2,sp,0x3c
or v0,s6,zero
lw v1,0xc(s2)
addiu v0,v0,0x4
addiu s2,s2,-0x4
srl a1,v1,0x18
sb v1,-0x1(v0)
srl a0,v1,0x10
srl v1,v1,0x8
sb a1,-0x4(v0)
sb a0,-0x3(v0)
bne a2,v0,0x0004ae74
_sb v1,-0x2(v0)
li a2,0x10
or a1,s6,zero
or t9,s7,zero
bal 0x00049978
_or a0,s4,zero
addiu a3,s0,0x40
lw gp,0x10(sp)
or a1,s0,zero
lw v1,0x0(s1)
addiu a1,a1,0x8
lw v0,0x4(s1)
addiu s1,s1,0x8
srl a2,v1,0x18
sb v1,-0x5(a1)
srl a0,v1,0x10
sb v0,-0x1(a1)
srl v1,v1,0x8
sb a2,-0x8(a1)
sb a0,-0x7(a1)
srl a2,v0,0x18
srl a0,v0,0x10
sb v1,-0x6(a1)
srl v0,v0,0x8
sb a2,-0x4(a1)
sb a0,-0x3(a1)
bne a3,a1,0x0004aec0
_sb v0,-0x2(a1)
lw v1,0xac(sp)
lw v0,0x0(s3)
bne v1,v0,0x0004af4c
_lw ra,0xd4(sp)
lw s7,0xd0(sp)
lw s6,0xcc(sp)
lw s5,0xc8(sp)
lw s4,0xc4(sp)
lw s3,0xc0(sp)
lw s2,0xbc(sp)
lw s1,0xb8(sp)
lw s0,0xb4(sp)
jr ra
_addiu sp,sp,0xd8
b 0x0004adec
_subu s5,s5,v0
lw t9,-0x7880(gp)
jalr t9
_nop
lui gp,0x3
addiu gp,gp,0x6118
addu gp,gp,t9
addiu sp,sp,-0x20
lw t9,-0x7b9c(gp)
sw ra,0x1c(sp)
sw s0,0x18(sp)
sw gp,0x10(sp)
bal 0x0004ad88
_or s0,a0,zero
li a1,0xd4
lw gp,0x10(sp)
lw t9,-0x7f7c(gp)
jalr t9
_or a0,s0,zero
or a0,s0,zero
lw gp,0x10(sp)
lw ra,0x1c(sp)
lw s0,0x18(sp)
lw t9,-0x7f80(gp)
jr t9
_addiu sp,sp,0x20
(translation_unit "int SHA512_Final(uchar *md,SHA512_CTX *c)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}\n\n" (function_definition "int SHA512_Final(uchar *md,SHA512_CTX *c)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}" primitive_type (function_declarator "SHA512_Final(uchar *md,SHA512_CTX *c)" identifier (parameter_list "(uchar *md,SHA512_CTX *c)" ( (parameter_declaration "uchar *md" type_identifier (pointer_declarator "*md" * identifier)) , (parameter_declaration "SHA512_CTX *c" type_identifier (pointer_declarator "*c" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uchar *md_00;" type_identifier (pointer_declarator "*md_00" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "SHA512_CTX *pSVar9;" type_identifier (pointer_declarator "*pSVar9" * identifier) ;) (declaration "SHA512_CTX *c_00;" type_identifier (pointer_declarator "*c_00" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int local_bc [3];" primitive_type (array_declarator "local_bc [3]" identifier [ number_literal ]) ;) (declaration "uint local_b0;" type_identifier identifier ;) (declaration "undefined1 local_ac [128];" type_identifier (array_declarator "local_ac [128]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar11 = PTR___stack_chk_guard_00079930;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00079930" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)(md + 0xc0);" (assignment_expression "iVar1 = *(int *)(md + 0xc0)" identifier = (pointer_expression "*(int *)(md + 0xc0)" * (cast_expression "(int *)(md + 0xc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xc0)" ( (binary_expression "md + 0xc0" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00079930;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00079930" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00079930" * (cast_expression "(int *)PTR___stack_chk_guard_00079930" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }" if (parenthesized_expression "(iVar1 < 0x70)" ( (binary_expression "iVar1 < 0x70" identifier < number_literal) )) (compound_statement "{\n    iVar1 = 0x70 - iVar1;\n  }" { (expression_statement "iVar1 = 0x70 - iVar1;" (assignment_expression "iVar1 = 0x70 - iVar1" identifier = (binary_expression "0x70 - iVar1" number_literal - identifier)) ;) }) (else_clause "else {\n    iVar1 = 0xf0 - iVar1;\n  }" else (compound_statement "{\n    iVar1 = 0xf0 - iVar1;\n  }" { (expression_statement "iVar1 = 0xf0 - iVar1;" (assignment_expression "iVar1 = 0xf0 - iVar1" identifier = (binary_expression "0xf0 - iVar1" number_literal - identifier)) ;) }))) (expression_statement "piVar10 = local_bc;" (assignment_expression "piVar10 = local_bc" identifier = identifier) ;) (expression_statement "puVar2 = (uint *)(md + 0xcc);" (assignment_expression "puVar2 = (uint *)(md + 0xcc)" identifier = (cast_expression "(uint *)(md + 0xcc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xcc)" ( (binary_expression "md + 0xcc" identifier + number_literal) )))) ;) (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" identifier = identifier) ;) (expression_statement "uVar5 = *(uint *)(md + 0xd0);" (assignment_expression "uVar5 = *(uint *)(md + 0xd0)" identifier = (pointer_expression "*(uint *)(md + 0xd0)" * (cast_expression "(uint *)(md + 0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xd0)" ( (binary_expression "md + 0xd0" identifier + number_literal) ))))) ;) (do_statement "do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));" do (compound_statement "{\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  }" { (expression_statement "uVar8 = *puVar2;" (assignment_expression "uVar8 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;" (assignment_expression "piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (binary_expression "uVar5 << 3 | uVar8 >> 0x1d" (binary_expression "uVar5 << 3" identifier << number_literal) | (binary_expression "uVar8 >> 0x1d" identifier >> number_literal))) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar2 != (uint *)(md + 0xc0))" ( (binary_expression "puVar2 != (uint *)(md + 0xc0)" identifier != (cast_expression "(uint *)(md + 0xc0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xc0)" ( (binary_expression "md + 0xc0" identifier + number_literal) )))) )) ;) (expression_statement "local_bc[0] = uVar8 << 3;" (assignment_expression "local_bc[0] = uVar8 << 3" (subscript_expression "local_bc[0]" identifier [ number_literal ]) = (binary_expression "uVar8 << 3" identifier << number_literal)) ;) (expression_statement "(*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);" (call_expression "(*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80)" (parenthesized_expression "(*(code *)PTR___memset_chk_000797ac)" ( (pointer_expression "*(code *)PTR___memset_chk_000797ac" * (cast_expression "(code *)PTR___memset_chk_000797ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_ac,0,iVar1,0x80)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "local_ac[0] = 0x80;" (assignment_expression "local_ac[0] = 0x80" (subscript_expression "local_ac[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "SHA512_Bytes(md,local_ac,iVar1);" (call_expression "SHA512_Bytes(md,local_ac,iVar1)" identifier (argument_list "(md,local_ac,iVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = local_ac;" (assignment_expression "puVar3 = local_ac" identifier = identifier) ;) (do_statement "do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);" do (compound_statement "{\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  }" { (expression_statement "iVar1 = piVar10[3];" (assignment_expression "iVar1 = piVar10[3]" identifier = (subscript_expression "piVar10[3]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = puVar3 + 4;" (assignment_expression "puVar4 = puVar3 + 4" identifier = (binary_expression "puVar3 + 4" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (expression_statement "puVar3[3] = (char)iVar1;" (assignment_expression "puVar3[3] = (char)iVar1" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*puVar3 = (char)((uint)iVar1 >> 0x18);" (assignment_expression "*puVar3 = (char)((uint)iVar1 >> 0x18)" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)((uint)iVar1 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar1 >> 0x18)" ( (binary_expression "(uint)iVar1 >> 0x18" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3[1] = (char)((uint)iVar1 >> 0x10);" (assignment_expression "puVar3[1] = (char)((uint)iVar1 >> 0x10)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (cast_expression "(char)((uint)iVar1 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar1 >> 0x10)" ( (binary_expression "(uint)iVar1 >> 0x10" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3[2] = (char)((uint)iVar1 >> 8);" (assignment_expression "puVar3[2] = (char)((uint)iVar1 >> 8)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = (cast_expression "(char)((uint)iVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar1 >> 8)" ( (binary_expression "(uint)iVar1 >> 8" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "(local_ac + 0x10 != puVar4)" ( (binary_expression "local_ac + 0x10 != puVar4" (binary_expression "local_ac + 0x10" identifier + number_literal) != identifier) )) ;) (expression_statement "SHA512_Bytes(md,local_ac,0x10);" (call_expression "SHA512_Bytes(md,local_ac,0x10)" identifier (argument_list "(md,local_ac,0x10)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pSVar9 = c;" (assignment_expression "pSVar9 = c" identifier = identifier) ;) (do_statement "do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);" do (compound_statement "{\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  }" { (expression_statement "uVar6 = *(undefined4 *)md;" (assignment_expression "uVar6 = *(undefined4 *)md" identifier = (pointer_expression "*(undefined4 *)md" * (cast_expression "(undefined4 *)md" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "c_00 = (SHA512_CTX *)(pSVar9->h + 1);" (assignment_expression "c_00 = (SHA512_CTX *)(pSVar9->h + 1)" identifier = (cast_expression "(SHA512_CTX *)(pSVar9->h + 1)" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pSVar9->h + 1)" ( (binary_expression "pSVar9->h + 1" (field_expression "pSVar9->h" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "uVar5 = *(uint *)(md + 4);" (assignment_expression "uVar5 = *(uint *)(md + 4)" identifier = (pointer_expression "*(uint *)(md + 4)" * (cast_expression "(uint *)(md + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 4)" ( (binary_expression "md + 4" identifier + number_literal) ))))) ;) (expression_statement "md = md + 8;" (assignment_expression "md = md + 8" identifier = (binary_expression "md + 8" identifier + number_literal)) ;) (expression_statement "*(char *)((int)pSVar9->h + 3) = (char)uVar6;" (assignment_expression "*(char *)((int)pSVar9->h + 3) = (char)uVar6" (pointer_expression "*(char *)((int)pSVar9->h + 3)" * (cast_expression "(char *)((int)pSVar9->h + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 3)" ( (binary_expression "(int)pSVar9->h + 3" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)((int)pSVar9->h + 7) = (char)uVar5;" (assignment_expression "*(char *)((int)pSVar9->h + 7) = (char)uVar5" (pointer_expression "*(char *)((int)pSVar9->h + 7)" * (cast_expression "(char *)((int)pSVar9->h + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 7)" ( (binary_expression "(int)pSVar9->h + 7" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);" (assignment_expression "*(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18)" (pointer_expression "*(char *)pSVar9->h" * (cast_expression "(char *)pSVar9->h" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar9->h" identifier -> field_identifier))) = (cast_expression "(char)((uint)uVar6 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x18)" ( (binary_expression "(uint)uVar6 >> 0x18" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);" (assignment_expression "*(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10)" (pointer_expression "*(char *)((int)pSVar9->h + 1)" * (cast_expression "(char *)((int)pSVar9->h + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 1)" ( (binary_expression "(int)pSVar9->h + 1" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x10)" ( (binary_expression "(uint)uVar6 >> 0x10" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "md_00 = (uchar *)(uVar5 >> 0x10);" (assignment_expression "md_00 = (uchar *)(uVar5 >> 0x10)" identifier = (cast_expression "(uchar *)(uVar5 >> 0x10)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 >> 0x10)" ( (binary_expression "uVar5 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);" (assignment_expression "*(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8)" (pointer_expression "*(char *)((int)pSVar9->h + 2)" * (cast_expression "(char *)((int)pSVar9->h + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 2)" ( (binary_expression "(int)pSVar9->h + 2" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 8)" ( (binary_expression "(uint)uVar6 >> 8" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);" (assignment_expression "*(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18)" (pointer_expression "*(char *)((int)pSVar9->h + 4)" * (cast_expression "(char *)((int)pSVar9->h + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 4)" ( (binary_expression "(int)pSVar9->h + 4" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)(uVar5 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);" (assignment_expression "*(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10)" (pointer_expression "*(char *)((int)pSVar9->h + 5)" * (cast_expression "(char *)((int)pSVar9->h + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 5)" ( (binary_expression "(int)pSVar9->h + 5" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)(uVar5 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar5 >> 0x10)" ( (binary_expression "uVar5 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);" (assignment_expression "*(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8)" (pointer_expression "*(char *)((int)pSVar9->h + 6)" * (cast_expression "(char *)((int)pSVar9->h + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 6)" ( (binary_expression "(int)pSVar9->h + 6" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)(uVar5 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar5 >> 8)" ( (binary_expression "uVar5 >> 8" identifier >> number_literal) )))) ;) (expression_statement "pSVar9 = c_00;" (assignment_expression "pSVar9 = c_00" identifier = identifier) ;) }) while (parenthesized_expression "((SHA512_CTX *)&c->Nl != c_00)" ( (binary_expression "(SHA512_CTX *)&c->Nl != c_00" (cast_expression "(SHA512_CTX *)&c->Nl" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&c->Nl" & (field_expression "c->Nl" identifier -> field_identifier))) != identifier) )) ;) (if_statement "if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar11)" ( (binary_expression "local_2c == *(int *)puVar11" identifier == (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar11;\n  }" { (return_statement "return *(int *)puVar11;" return (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar11 = PTR___stack_chk_fail_000797f0;" (assignment_expression "puVar11 = PTR___stack_chk_fail_000797f0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000797f0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000797f0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000797f0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000797f0" * (cast_expression "(code *)PTR___stack_chk_fail_000797f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "SHA512_Final(md_00,c_00);" (call_expression "SHA512_Final(md_00,c_00)" identifier (argument_list "(md_00,c_00)" ( identifier , identifier ))) ;) (expression_statement "(**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);" (call_expression "(**(code **)(puVar11 + 0x2e19c))(md_00,0xd4)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e19c))" ( (pointer_expression "**(code **)(puVar11 + 0x2e19c)" * (pointer_expression "*(code **)(puVar11 + 0x2e19c)" * (cast_expression "(code **)(puVar11 + 0x2e19c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x2e19c)" ( (binary_expression "puVar11 + 0x2e19c" identifier + number_literal) ))))) )) (argument_list "(md_00,0xd4)" ( identifier , number_literal ))) ;) comment comment (expression_statement "iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);" (assignment_expression "iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00)" identifier = (call_expression "(**(code **)(puVar11 + 0x2e198))(md_00)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e198))" ( (pointer_expression "**(code **)(puVar11 + 0x2e198)" * (pointer_expression "*(code **)(puVar11 + 0x2e198)" * (cast_expression "(code **)(puVar11 + 0x2e198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x2e198)" ( (binary_expression "puVar11 + 0x2e198" identifier + number_literal) ))))) )) (argument_list "(md_00)" ( identifier )))) ;) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "int SHA512_Final(SHA512_State *s,uchar *digest)\n\n{\n  int iVar1;\n  uint32 *puVar2;\n  uchar *puVar3;\n  uchar *puVar4;\n  uint32 uVar5;\n  ulong uVar6;\n  int iVar7;\n  uint32 *puVar8;\n  SHA512_State *s_00;\n  uint uVar9;\n  uint32 *puVar10;\n  undefined *puVar11;\n  uint32 len [4];\n  uchar c [128];\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = s->blkused;\n  iVar7 = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  puVar10 = len;\n  puVar2 = s->len + 2;\n  puVar8 = puVar10;\n  uVar5 = s->len[3];\n  do {\n    uVar9 = *puVar2;\n    puVar2 = puVar2 + -1;\n    puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d;\n    puVar8 = puVar8 + -1;\n    uVar5 = uVar9;\n  } while (puVar2 != (uint32 *)&s->blkused);\n  len[0] = uVar9 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(c,0,iVar1,0x80);\n  c[0] = 0x80;\n  SHA512_Bytes(s,c,iVar1);\n  puVar3 = c;\n  do {\n    uVar5 = puVar10[3];\n    puVar4 = puVar3 + 4;\n    puVar10 = puVar10 + -1;\n    puVar3[3] = (uchar)uVar5;\n    *puVar3 = (uchar)(uVar5 >> 0x18);\n    puVar3[1] = (uchar)(uVar5 >> 0x10);\n    puVar3[2] = (uchar)(uVar5 >> 8);\n    puVar3 = puVar4;\n  } while (c + 0x10 != puVar4);\n  SHA512_Bytes(s,c,0x10);\n  puVar3 = digest;\n  do {\n    uVar6 = s->h[0].hi;\n    puVar4 = puVar3 + 8;\n    uVar9 = s->h[0].lo;\n    s = (SHA512_State *)(s->h + 1);\n    puVar3[3] = (uchar)uVar6;\n    puVar3[7] = (uchar)uVar9;\n    *puVar3 = (uchar)(uVar6 >> 0x18);\n    puVar3[1] = (uchar)(uVar6 >> 0x10);\n    s_00 = (SHA512_State *)(uVar9 >> 0x10);\n    puVar3[2] = (uchar)(uVar6 >> 8);\n    puVar3[4] = (uchar)(uVar9 >> 0x18);\n    puVar3[5] = (uchar)(uVar9 >> 0x10);\n    puVar3[6] = (uchar)(uVar9 >> 8);\n    puVar3 = puVar4;\n  } while (digest + 0x40 != puVar4);\n  if (iVar7 == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(s_00,puVar4);\n  (**(code **)(puVar11 + 0x2e19c))(s_00,0xd4);\n                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar1 = (**(code **)(puVar11 + 0x2e198))(s_00);\n  return iVar1;\n}\n\n" (function_definition "int SHA512_Final(SHA512_State *s,uchar *digest)\n\n{\n  int iVar1;\n  uint32 *puVar2;\n  uchar *puVar3;\n  uchar *puVar4;\n  uint32 uVar5;\n  ulong uVar6;\n  int iVar7;\n  uint32 *puVar8;\n  SHA512_State *s_00;\n  uint uVar9;\n  uint32 *puVar10;\n  undefined *puVar11;\n  uint32 len [4];\n  uchar c [128];\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = s->blkused;\n  iVar7 = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  puVar10 = len;\n  puVar2 = s->len + 2;\n  puVar8 = puVar10;\n  uVar5 = s->len[3];\n  do {\n    uVar9 = *puVar2;\n    puVar2 = puVar2 + -1;\n    puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d;\n    puVar8 = puVar8 + -1;\n    uVar5 = uVar9;\n  } while (puVar2 != (uint32 *)&s->blkused);\n  len[0] = uVar9 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(c,0,iVar1,0x80);\n  c[0] = 0x80;\n  SHA512_Bytes(s,c,iVar1);\n  puVar3 = c;\n  do {\n    uVar5 = puVar10[3];\n    puVar4 = puVar3 + 4;\n    puVar10 = puVar10 + -1;\n    puVar3[3] = (uchar)uVar5;\n    *puVar3 = (uchar)(uVar5 >> 0x18);\n    puVar3[1] = (uchar)(uVar5 >> 0x10);\n    puVar3[2] = (uchar)(uVar5 >> 8);\n    puVar3 = puVar4;\n  } while (c + 0x10 != puVar4);\n  SHA512_Bytes(s,c,0x10);\n  puVar3 = digest;\n  do {\n    uVar6 = s->h[0].hi;\n    puVar4 = puVar3 + 8;\n    uVar9 = s->h[0].lo;\n    s = (SHA512_State *)(s->h + 1);\n    puVar3[3] = (uchar)uVar6;\n    puVar3[7] = (uchar)uVar9;\n    *puVar3 = (uchar)(uVar6 >> 0x18);\n    puVar3[1] = (uchar)(uVar6 >> 0x10);\n    s_00 = (SHA512_State *)(uVar9 >> 0x10);\n    puVar3[2] = (uchar)(uVar6 >> 8);\n    puVar3[4] = (uchar)(uVar9 >> 0x18);\n    puVar3[5] = (uchar)(uVar9 >> 0x10);\n    puVar3[6] = (uchar)(uVar9 >> 8);\n    puVar3 = puVar4;\n  } while (digest + 0x40 != puVar4);\n  if (iVar7 == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(s_00,puVar4);\n  (**(code **)(puVar11 + 0x2e19c))(s_00,0xd4);\n                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar1 = (**(code **)(puVar11 + 0x2e198))(s_00);\n  return iVar1;\n}" primitive_type (function_declarator "SHA512_Final(SHA512_State *s,uchar *digest)" identifier (parameter_list "(SHA512_State *s,uchar *digest)" ( (parameter_declaration "SHA512_State *s" type_identifier (pointer_declarator "*s" * identifier)) , (parameter_declaration "uchar *digest" type_identifier (pointer_declarator "*digest" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint32 *puVar2;\n  uchar *puVar3;\n  uchar *puVar4;\n  uint32 uVar5;\n  ulong uVar6;\n  int iVar7;\n  uint32 *puVar8;\n  SHA512_State *s_00;\n  uint uVar9;\n  uint32 *puVar10;\n  undefined *puVar11;\n  uint32 len [4];\n  uchar c [128];\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = s->blkused;\n  iVar7 = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  puVar10 = len;\n  puVar2 = s->len + 2;\n  puVar8 = puVar10;\n  uVar5 = s->len[3];\n  do {\n    uVar9 = *puVar2;\n    puVar2 = puVar2 + -1;\n    puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d;\n    puVar8 = puVar8 + -1;\n    uVar5 = uVar9;\n  } while (puVar2 != (uint32 *)&s->blkused);\n  len[0] = uVar9 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(c,0,iVar1,0x80);\n  c[0] = 0x80;\n  SHA512_Bytes(s,c,iVar1);\n  puVar3 = c;\n  do {\n    uVar5 = puVar10[3];\n    puVar4 = puVar3 + 4;\n    puVar10 = puVar10 + -1;\n    puVar3[3] = (uchar)uVar5;\n    *puVar3 = (uchar)(uVar5 >> 0x18);\n    puVar3[1] = (uchar)(uVar5 >> 0x10);\n    puVar3[2] = (uchar)(uVar5 >> 8);\n    puVar3 = puVar4;\n  } while (c + 0x10 != puVar4);\n  SHA512_Bytes(s,c,0x10);\n  puVar3 = digest;\n  do {\n    uVar6 = s->h[0].hi;\n    puVar4 = puVar3 + 8;\n    uVar9 = s->h[0].lo;\n    s = (SHA512_State *)(s->h + 1);\n    puVar3[3] = (uchar)uVar6;\n    puVar3[7] = (uchar)uVar9;\n    *puVar3 = (uchar)(uVar6 >> 0x18);\n    puVar3[1] = (uchar)(uVar6 >> 0x10);\n    s_00 = (SHA512_State *)(uVar9 >> 0x10);\n    puVar3[2] = (uchar)(uVar6 >> 8);\n    puVar3[4] = (uchar)(uVar9 >> 0x18);\n    puVar3[5] = (uchar)(uVar9 >> 0x10);\n    puVar3[6] = (uchar)(uVar9 >> 8);\n    puVar3 = puVar4;\n  } while (digest + 0x40 != puVar4);\n  if (iVar7 == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(s_00,puVar4);\n  (**(code **)(puVar11 + 0x2e19c))(s_00,0xd4);\n                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  iVar1 = (**(code **)(puVar11 + 0x2e198))(s_00);\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint32 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uchar *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint32 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint32 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "SHA512_State *s_00;" type_identifier (pointer_declarator "*s_00" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint32 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint32 len [4];" type_identifier (array_declarator "len [4]" identifier [ number_literal ]) ;) (declaration "uchar c [128];" type_identifier (array_declarator "c [128]" identifier [ number_literal ]) ;) (expression_statement "puVar11 = PTR___stack_chk_guard_00079930;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00079930" identifier = identifier) ;) (expression_statement "iVar1 = s->blkused;" (assignment_expression "iVar1 = s->blkused" identifier = (field_expression "s->blkused" identifier -> field_identifier)) ;) (expression_statement "iVar7 = *(int *)PTR___stack_chk_guard_00079930;" (assignment_expression "iVar7 = *(int *)PTR___stack_chk_guard_00079930" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00079930" * (cast_expression "(int *)PTR___stack_chk_guard_00079930" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }" if (parenthesized_expression "(iVar1 < 0x70)" ( (binary_expression "iVar1 < 0x70" identifier < number_literal) )) (compound_statement "{\n    iVar1 = 0x70 - iVar1;\n  }" { (expression_statement "iVar1 = 0x70 - iVar1;" (assignment_expression "iVar1 = 0x70 - iVar1" identifier = (binary_expression "0x70 - iVar1" number_literal - identifier)) ;) }) (else_clause "else {\n    iVar1 = 0xf0 - iVar1;\n  }" else (compound_statement "{\n    iVar1 = 0xf0 - iVar1;\n  }" { (expression_statement "iVar1 = 0xf0 - iVar1;" (assignment_expression "iVar1 = 0xf0 - iVar1" identifier = (binary_expression "0xf0 - iVar1" number_literal - identifier)) ;) }))) (expression_statement "puVar10 = len;" (assignment_expression "puVar10 = len" identifier = identifier) ;) (expression_statement "puVar2 = s->len + 2;" (assignment_expression "puVar2 = s->len + 2" identifier = (binary_expression "s->len + 2" (field_expression "s->len" identifier -> field_identifier) + number_literal)) ;) (expression_statement "puVar8 = puVar10;" (assignment_expression "puVar8 = puVar10" identifier = identifier) ;) (expression_statement "uVar5 = s->len[3];" (assignment_expression "uVar5 = s->len[3]" identifier = (subscript_expression "s->len[3]" (field_expression "s->len" identifier -> field_identifier) [ number_literal ])) ;) (do_statement "do {\n    uVar9 = *puVar2;\n    puVar2 = puVar2 + -1;\n    puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d;\n    puVar8 = puVar8 + -1;\n    uVar5 = uVar9;\n  } while (puVar2 != (uint32 *)&s->blkused);" do (compound_statement "{\n    uVar9 = *puVar2;\n    puVar2 = puVar2 + -1;\n    puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d;\n    puVar8 = puVar8 + -1;\n    uVar5 = uVar9;\n  }" { (expression_statement "uVar9 = *puVar2;" (assignment_expression "uVar9 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d;" (assignment_expression "puVar8[3] = uVar5 << 3 | uVar9 >> 0x1d" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = (binary_expression "uVar5 << 3 | uVar9 >> 0x1d" (binary_expression "uVar5 << 3" identifier << number_literal) | (binary_expression "uVar9 >> 0x1d" identifier >> number_literal))) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar9;" (assignment_expression "uVar5 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar2 != (uint32 *)&s->blkused)" ( (binary_expression "puVar2 != (uint32 *)&s->blkused" identifier != (cast_expression "(uint32 *)&s->blkused" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s->blkused" & (field_expression "s->blkused" identifier -> field_identifier)))) )) ;) (expression_statement "len[0] = uVar9 << 3;" (assignment_expression "len[0] = uVar9 << 3" (subscript_expression "len[0]" identifier [ number_literal ]) = (binary_expression "uVar9 << 3" identifier << number_literal)) ;) (expression_statement "(*(code *)PTR___memset_chk_000797ac)(c,0,iVar1,0x80);" (call_expression "(*(code *)PTR___memset_chk_000797ac)(c,0,iVar1,0x80)" (parenthesized_expression "(*(code *)PTR___memset_chk_000797ac)" ( (pointer_expression "*(code *)PTR___memset_chk_000797ac" * (cast_expression "(code *)PTR___memset_chk_000797ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(c,0,iVar1,0x80)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "c[0] = 0x80;" (assignment_expression "c[0] = 0x80" (subscript_expression "c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "SHA512_Bytes(s,c,iVar1);" (call_expression "SHA512_Bytes(s,c,iVar1)" identifier (argument_list "(s,c,iVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = c;" (assignment_expression "puVar3 = c" identifier = identifier) ;) (do_statement "do {\n    uVar5 = puVar10[3];\n    puVar4 = puVar3 + 4;\n    puVar10 = puVar10 + -1;\n    puVar3[3] = (uchar)uVar5;\n    *puVar3 = (uchar)(uVar5 >> 0x18);\n    puVar3[1] = (uchar)(uVar5 >> 0x10);\n    puVar3[2] = (uchar)(uVar5 >> 8);\n    puVar3 = puVar4;\n  } while (c + 0x10 != puVar4);" do (compound_statement "{\n    uVar5 = puVar10[3];\n    puVar4 = puVar3 + 4;\n    puVar10 = puVar10 + -1;\n    puVar3[3] = (uchar)uVar5;\n    *puVar3 = (uchar)(uVar5 >> 0x18);\n    puVar3[1] = (uchar)(uVar5 >> 0x10);\n    puVar3[2] = (uchar)(uVar5 >> 8);\n    puVar3 = puVar4;\n  }" { (expression_statement "uVar5 = puVar10[3];" (assignment_expression "uVar5 = puVar10[3]" identifier = (subscript_expression "puVar10[3]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = puVar3 + 4;" (assignment_expression "puVar4 = puVar3 + 4" identifier = (binary_expression "puVar3 + 4" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (expression_statement "puVar3[3] = (uchar)uVar5;" (assignment_expression "puVar3[3] = (uchar)uVar5" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar5" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "*puVar3 = (uchar)(uVar5 >> 0x18);" (assignment_expression "*puVar3 = (uchar)(uVar5 >> 0x18)" (pointer_expression "*puVar3" * identifier) = (call_expression "(uchar)(uVar5 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "puVar3[1] = (uchar)(uVar5 >> 0x10);" (assignment_expression "puVar3[1] = (uchar)(uVar5 >> 0x10)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar5 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar5 >> 0x10)" ( (binary_expression "uVar5 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "puVar3[2] = (uchar)(uVar5 >> 8);" (assignment_expression "puVar3[2] = (uchar)(uVar5 >> 8)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar5 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar5 >> 8)" ( (binary_expression "uVar5 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "(c + 0x10 != puVar4)" ( (binary_expression "c + 0x10 != puVar4" (binary_expression "c + 0x10" identifier + number_literal) != identifier) )) ;) (expression_statement "SHA512_Bytes(s,c,0x10);" (call_expression "SHA512_Bytes(s,c,0x10)" identifier (argument_list "(s,c,0x10)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar3 = digest;" (assignment_expression "puVar3 = digest" identifier = identifier) ;) (do_statement "do {\n    uVar6 = s->h[0].hi;\n    puVar4 = puVar3 + 8;\n    uVar9 = s->h[0].lo;\n    s = (SHA512_State *)(s->h + 1);\n    puVar3[3] = (uchar)uVar6;\n    puVar3[7] = (uchar)uVar9;\n    *puVar3 = (uchar)(uVar6 >> 0x18);\n    puVar3[1] = (uchar)(uVar6 >> 0x10);\n    s_00 = (SHA512_State *)(uVar9 >> 0x10);\n    puVar3[2] = (uchar)(uVar6 >> 8);\n    puVar3[4] = (uchar)(uVar9 >> 0x18);\n    puVar3[5] = (uchar)(uVar9 >> 0x10);\n    puVar3[6] = (uchar)(uVar9 >> 8);\n    puVar3 = puVar4;\n  } while (digest + 0x40 != puVar4);" do (compound_statement "{\n    uVar6 = s->h[0].hi;\n    puVar4 = puVar3 + 8;\n    uVar9 = s->h[0].lo;\n    s = (SHA512_State *)(s->h + 1);\n    puVar3[3] = (uchar)uVar6;\n    puVar3[7] = (uchar)uVar9;\n    *puVar3 = (uchar)(uVar6 >> 0x18);\n    puVar3[1] = (uchar)(uVar6 >> 0x10);\n    s_00 = (SHA512_State *)(uVar9 >> 0x10);\n    puVar3[2] = (uchar)(uVar6 >> 8);\n    puVar3[4] = (uchar)(uVar9 >> 0x18);\n    puVar3[5] = (uchar)(uVar9 >> 0x10);\n    puVar3[6] = (uchar)(uVar9 >> 8);\n    puVar3 = puVar4;\n  }" { (expression_statement "uVar6 = s->h[0].hi;" (assignment_expression "uVar6 = s->h[0].hi" identifier = (field_expression "s->h[0].hi" (subscript_expression "s->h[0]" (field_expression "s->h" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "puVar4 = puVar3 + 8;" (assignment_expression "puVar4 = puVar3 + 8" identifier = (binary_expression "puVar3 + 8" identifier + number_literal)) ;) (expression_statement "uVar9 = s->h[0].lo;" (assignment_expression "uVar9 = s->h[0].lo" identifier = (field_expression "s->h[0].lo" (subscript_expression "s->h[0]" (field_expression "s->h" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "s = (SHA512_State *)(s->h + 1);" (assignment_expression "s = (SHA512_State *)(s->h + 1)" identifier = (cast_expression "(SHA512_State *)(s->h + 1)" ( (type_descriptor "SHA512_State *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(s->h + 1)" ( (binary_expression "s->h + 1" (field_expression "s->h" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "puVar3[3] = (uchar)uVar6;" (assignment_expression "puVar3[3] = (uchar)uVar6" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar6" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "puVar3[7] = (uchar)uVar9;" (assignment_expression "puVar3[7] = (uchar)uVar9" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar9" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "*puVar3 = (uchar)(uVar6 >> 0x18);" (assignment_expression "*puVar3 = (uchar)(uVar6 >> 0x18)" (pointer_expression "*puVar3" * identifier) = (call_expression "(uchar)(uVar6 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar6 >> 0x18)" ( (binary_expression "uVar6 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "puVar3[1] = (uchar)(uVar6 >> 0x10);" (assignment_expression "puVar3[1] = (uchar)(uVar6 >> 0x10)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar6 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar6 >> 0x10)" ( (binary_expression "uVar6 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "s_00 = (SHA512_State *)(uVar9 >> 0x10);" (assignment_expression "s_00 = (SHA512_State *)(uVar9 >> 0x10)" identifier = (cast_expression "(SHA512_State *)(uVar9 >> 0x10)" ( (type_descriptor "SHA512_State *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 >> 0x10)" ( (binary_expression "uVar9 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "puVar3[2] = (uchar)(uVar6 >> 8);" (assignment_expression "puVar3[2] = (uchar)(uVar6 >> 8)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar6 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar6 >> 8)" ( (binary_expression "uVar6 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar3[4] = (uchar)(uVar9 >> 0x18);" (assignment_expression "puVar3[4] = (uchar)(uVar9 >> 0x18)" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar9 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar9 >> 0x18)" ( (binary_expression "uVar9 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "puVar3[5] = (uchar)(uVar9 >> 0x10);" (assignment_expression "puVar3[5] = (uchar)(uVar9 >> 0x10)" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar9 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar9 >> 0x10)" ( (binary_expression "uVar9 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "puVar3[6] = (uchar)(uVar9 >> 8);" (assignment_expression "puVar3[6] = (uchar)(uVar9 >> 8)" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar9 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar9 >> 8)" ( (binary_expression "uVar9 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "(digest + 0x40 != puVar4)" ( (binary_expression "digest + 0x40 != puVar4" (binary_expression "digest + 0x40" identifier + number_literal) != identifier) )) ;) (if_statement "if (iVar7 == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }" if (parenthesized_expression "(iVar7 == *(int *)puVar11)" ( (binary_expression "iVar7 == *(int *)puVar11" identifier == (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar11;\n  }" { (return_statement "return *(int *)puVar11;" return (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar11 = PTR___stack_chk_fail_000797f0;" (assignment_expression "puVar11 = PTR___stack_chk_fail_000797f0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000797f0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000797f0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000797f0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000797f0" * (cast_expression "(code *)PTR___stack_chk_fail_000797f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "SHA512_Final(s_00,puVar4);" (call_expression "SHA512_Final(s_00,puVar4)" identifier (argument_list "(s_00,puVar4)" ( identifier , identifier ))) ;) (expression_statement "(**(code **)(puVar11 + 0x2e19c))(s_00,0xd4);" (call_expression "(**(code **)(puVar11 + 0x2e19c))(s_00,0xd4)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e19c))" ( (pointer_expression "**(code **)(puVar11 + 0x2e19c)" * (pointer_expression "*(code **)(puVar11 + 0x2e19c)" * (cast_expression "(code **)(puVar11 + 0x2e19c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x2e19c)" ( (binary_expression "puVar11 + 0x2e19c" identifier + number_literal) ))))) )) (argument_list "(s_00,0xd4)" ( identifier , number_literal ))) ;) comment comment (expression_statement "iVar1 = (**(code **)(puVar11 + 0x2e198))(s_00);" (assignment_expression "iVar1 = (**(code **)(puVar11 + 0x2e198))(s_00)" identifier = (call_expression "(**(code **)(puVar11 + 0x2e198))(s_00)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e198))" ( (pointer_expression "**(code **)(puVar11 + 0x2e198)" * (pointer_expression "*(code **)(puVar11 + 0x2e198)" * (cast_expression "(code **)(puVar11 + 0x2e198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x2e198)" ( (binary_expression "puVar11 + 0x2e198" identifier + number_literal) ))))) )) (argument_list "(s_00)" ( identifier )))) ;) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "int SHA512_Final(uchar *md,SHA512_CTX *c)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    \n                    \n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}\n\n" (function_definition "int SHA512_Final(uchar *md,SHA512_CTX *c)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    \n                    \n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}" primitive_type (function_declarator "SHA512_Final(uchar *md,SHA512_CTX *c)" identifier (parameter_list "(uchar *md,SHA512_CTX *c)" ( (parameter_declaration "uchar *md" type_identifier (pointer_declarator "*md" * identifier)) , (parameter_declaration "SHA512_CTX *c" type_identifier (pointer_declarator "*c" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    \n                    \n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uchar *md_00;" type_identifier (pointer_declarator "*md_00" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "SHA512_CTX *pSVar9;" type_identifier (pointer_declarator "*pSVar9" * identifier) ;) (declaration "SHA512_CTX *c_00;" type_identifier (pointer_declarator "*c_00" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int local_bc [3];" primitive_type (array_declarator "local_bc [3]" identifier [ number_literal ]) ;) (declaration "uint local_b0;" type_identifier identifier ;) (declaration "undefined1 local_ac [128];" type_identifier (array_declarator "local_ac [128]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar11 = PTR___stack_chk_guard_00079930;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00079930" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)(md + 0xc0);" (assignment_expression "iVar1 = *(int *)(md + 0xc0)" identifier = (pointer_expression "*(int *)(md + 0xc0)" * (cast_expression "(int *)(md + 0xc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xc0)" ( (binary_expression "md + 0xc0" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00079930;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00079930" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00079930" * (cast_expression "(int *)PTR___stack_chk_guard_00079930" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }" if (parenthesized_expression "(iVar1 < 0x70)" ( (binary_expression "iVar1 < 0x70" identifier < number_literal) )) (compound_statement "{\n    iVar1 = 0x70 - iVar1;\n  }" { (expression_statement "iVar1 = 0x70 - iVar1;" (assignment_expression "iVar1 = 0x70 - iVar1" identifier = (binary_expression "0x70 - iVar1" number_literal - identifier)) ;) }) (else_clause "else {\n    iVar1 = 0xf0 - iVar1;\n  }" else (compound_statement "{\n    iVar1 = 0xf0 - iVar1;\n  }" { (expression_statement "iVar1 = 0xf0 - iVar1;" (assignment_expression "iVar1 = 0xf0 - iVar1" identifier = (binary_expression "0xf0 - iVar1" number_literal - identifier)) ;) }))) (expression_statement "piVar10 = local_bc;" (assignment_expression "piVar10 = local_bc" identifier = identifier) ;) (expression_statement "puVar2 = (uint *)(md + 0xcc);" (assignment_expression "puVar2 = (uint *)(md + 0xcc)" identifier = (cast_expression "(uint *)(md + 0xcc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xcc)" ( (binary_expression "md + 0xcc" identifier + number_literal) )))) ;) (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" identifier = identifier) ;) (expression_statement "uVar5 = *(uint *)(md + 0xd0);" (assignment_expression "uVar5 = *(uint *)(md + 0xd0)" identifier = (pointer_expression "*(uint *)(md + 0xd0)" * (cast_expression "(uint *)(md + 0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xd0)" ( (binary_expression "md + 0xd0" identifier + number_literal) ))))) ;) (do_statement "do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));" do (compound_statement "{\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  }" { (expression_statement "uVar8 = *puVar2;" (assignment_expression "uVar8 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;" (assignment_expression "piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (binary_expression "uVar5 << 3 | uVar8 >> 0x1d" (binary_expression "uVar5 << 3" identifier << number_literal) | (binary_expression "uVar8 >> 0x1d" identifier >> number_literal))) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar2 != (uint *)(md + 0xc0))" ( (binary_expression "puVar2 != (uint *)(md + 0xc0)" identifier != (cast_expression "(uint *)(md + 0xc0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 0xc0)" ( (binary_expression "md + 0xc0" identifier + number_literal) )))) )) ;) (expression_statement "local_bc[0] = uVar8 << 3;" (assignment_expression "local_bc[0] = uVar8 << 3" (subscript_expression "local_bc[0]" identifier [ number_literal ]) = (binary_expression "uVar8 << 3" identifier << number_literal)) ;) (expression_statement "(*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);" (call_expression "(*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80)" (parenthesized_expression "(*(code *)PTR___memset_chk_000797ac)" ( (pointer_expression "*(code *)PTR___memset_chk_000797ac" * (cast_expression "(code *)PTR___memset_chk_000797ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_ac,0,iVar1,0x80)" ( identifier , number_literal , identifier , number_literal ))) ;) (expression_statement "local_ac[0] = 0x80;" (assignment_expression "local_ac[0] = 0x80" (subscript_expression "local_ac[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "SHA512_Bytes(md,local_ac,iVar1);" (call_expression "SHA512_Bytes(md,local_ac,iVar1)" identifier (argument_list "(md,local_ac,iVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = local_ac;" (assignment_expression "puVar3 = local_ac" identifier = identifier) ;) (do_statement "do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);" do (compound_statement "{\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  }" { (expression_statement "iVar1 = piVar10[3];" (assignment_expression "iVar1 = piVar10[3]" identifier = (subscript_expression "piVar10[3]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = puVar3 + 4;" (assignment_expression "puVar4 = puVar3 + 4" identifier = (binary_expression "puVar3 + 4" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (expression_statement "puVar3[3] = (char)iVar1;" (assignment_expression "puVar3[3] = (char)iVar1" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(char)iVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*puVar3 = (char)((uint)iVar1 >> 0x18);" (assignment_expression "*puVar3 = (char)((uint)iVar1 >> 0x18)" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)((uint)iVar1 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar1 >> 0x18)" ( (binary_expression "(uint)iVar1 >> 0x18" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3[1] = (char)((uint)iVar1 >> 0x10);" (assignment_expression "puVar3[1] = (char)((uint)iVar1 >> 0x10)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (cast_expression "(char)((uint)iVar1 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar1 >> 0x10)" ( (binary_expression "(uint)iVar1 >> 0x10" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3[2] = (char)((uint)iVar1 >> 8);" (assignment_expression "puVar3[2] = (char)((uint)iVar1 >> 8)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = (cast_expression "(char)((uint)iVar1 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar1 >> 8)" ( (binary_expression "(uint)iVar1 >> 8" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "(local_ac + 0x10 != puVar4)" ( (binary_expression "local_ac + 0x10 != puVar4" (binary_expression "local_ac + 0x10" identifier + number_literal) != identifier) )) ;) (expression_statement "SHA512_Bytes(md,local_ac,0x10);" (call_expression "SHA512_Bytes(md,local_ac,0x10)" identifier (argument_list "(md,local_ac,0x10)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pSVar9 = c;" (assignment_expression "pSVar9 = c" identifier = identifier) ;) (do_statement "do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);" do (compound_statement "{\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  }" { (expression_statement "uVar6 = *(undefined4 *)md;" (assignment_expression "uVar6 = *(undefined4 *)md" identifier = (pointer_expression "*(undefined4 *)md" * (cast_expression "(undefined4 *)md" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "c_00 = (SHA512_CTX *)(pSVar9->h + 1);" (assignment_expression "c_00 = (SHA512_CTX *)(pSVar9->h + 1)" identifier = (cast_expression "(SHA512_CTX *)(pSVar9->h + 1)" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pSVar9->h + 1)" ( (binary_expression "pSVar9->h + 1" (field_expression "pSVar9->h" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "uVar5 = *(uint *)(md + 4);" (assignment_expression "uVar5 = *(uint *)(md + 4)" identifier = (pointer_expression "*(uint *)(md + 4)" * (cast_expression "(uint *)(md + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(md + 4)" ( (binary_expression "md + 4" identifier + number_literal) ))))) ;) (expression_statement "md = md + 8;" (assignment_expression "md = md + 8" identifier = (binary_expression "md + 8" identifier + number_literal)) ;) (expression_statement "*(char *)((int)pSVar9->h + 3) = (char)uVar6;" (assignment_expression "*(char *)((int)pSVar9->h + 3) = (char)uVar6" (pointer_expression "*(char *)((int)pSVar9->h + 3)" * (cast_expression "(char *)((int)pSVar9->h + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 3)" ( (binary_expression "(int)pSVar9->h + 3" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)((int)pSVar9->h + 7) = (char)uVar5;" (assignment_expression "*(char *)((int)pSVar9->h + 7) = (char)uVar5" (pointer_expression "*(char *)((int)pSVar9->h + 7)" * (cast_expression "(char *)((int)pSVar9->h + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 7)" ( (binary_expression "(int)pSVar9->h + 7" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);" (assignment_expression "*(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18)" (pointer_expression "*(char *)pSVar9->h" * (cast_expression "(char *)pSVar9->h" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar9->h" identifier -> field_identifier))) = (cast_expression "(char)((uint)uVar6 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x18)" ( (binary_expression "(uint)uVar6 >> 0x18" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);" (assignment_expression "*(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10)" (pointer_expression "*(char *)((int)pSVar9->h + 1)" * (cast_expression "(char *)((int)pSVar9->h + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 1)" ( (binary_expression "(int)pSVar9->h + 1" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x10)" ( (binary_expression "(uint)uVar6 >> 0x10" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "md_00 = (uchar *)(uVar5 >> 0x10);" (assignment_expression "md_00 = (uchar *)(uVar5 >> 0x10)" identifier = (cast_expression "(uchar *)(uVar5 >> 0x10)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 >> 0x10)" ( (binary_expression "uVar5 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);" (assignment_expression "*(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8)" (pointer_expression "*(char *)((int)pSVar9->h + 2)" * (cast_expression "(char *)((int)pSVar9->h + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 2)" ( (binary_expression "(int)pSVar9->h + 2" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 8)" ( (binary_expression "(uint)uVar6 >> 8" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);" (assignment_expression "*(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18)" (pointer_expression "*(char *)((int)pSVar9->h + 4)" * (cast_expression "(char *)((int)pSVar9->h + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 4)" ( (binary_expression "(int)pSVar9->h + 4" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)(uVar5 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);" (assignment_expression "*(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10)" (pointer_expression "*(char *)((int)pSVar9->h + 5)" * (cast_expression "(char *)((int)pSVar9->h + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 5)" ( (binary_expression "(int)pSVar9->h + 5" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)(uVar5 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar5 >> 0x10)" ( (binary_expression "uVar5 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);" (assignment_expression "*(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8)" (pointer_expression "*(char *)((int)pSVar9->h + 6)" * (cast_expression "(char *)((int)pSVar9->h + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9->h + 6)" ( (binary_expression "(int)pSVar9->h + 6" (cast_expression "(int)pSVar9->h" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar9->h" identifier -> field_identifier)) + number_literal) )))) = (cast_expression "(char)(uVar5 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar5 >> 8)" ( (binary_expression "uVar5 >> 8" identifier >> number_literal) )))) ;) (expression_statement "pSVar9 = c_00;" (assignment_expression "pSVar9 = c_00" identifier = identifier) ;) }) while (parenthesized_expression "((SHA512_CTX *)&c->Nl != c_00)" ( (binary_expression "(SHA512_CTX *)&c->Nl != c_00" (cast_expression "(SHA512_CTX *)&c->Nl" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&c->Nl" & (field_expression "c->Nl" identifier -> field_identifier))) != identifier) )) ;) (if_statement "if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar11)" ( (binary_expression "local_2c == *(int *)puVar11" identifier == (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar11;\n  }" { (return_statement "return *(int *)puVar11;" return (pointer_expression "*(int *)puVar11" * (cast_expression "(int *)puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar11 = PTR___stack_chk_fail_000797f0;" (assignment_expression "puVar11 = PTR___stack_chk_fail_000797f0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000797f0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000797f0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000797f0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000797f0" * (cast_expression "(code *)PTR___stack_chk_fail_000797f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "SHA512_Final(md_00,c_00);" (call_expression "SHA512_Final(md_00,c_00)" identifier (argument_list "(md_00,c_00)" ( identifier , identifier ))) ;) (expression_statement "(**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);" (call_expression "(**(code **)(puVar11 + 0x2e19c))(md_00,0xd4)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e19c))" ( (pointer_expression "**(code **)(puVar11 + 0x2e19c)" * (pointer_expression "*(code **)(puVar11 + 0x2e19c)" * (cast_expression "(code **)(puVar11 + 0x2e19c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x2e19c)" ( (binary_expression "puVar11 + 0x2e19c" identifier + number_literal) ))))) )) (argument_list "(md_00,0xd4)" ( identifier , number_literal ))) ;) (expression_statement "iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);" (assignment_expression "iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00)" identifier = (call_expression "(**(code **)(puVar11 + 0x2e198))(md_00)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e198))" ( (pointer_expression "**(code **)(puVar11 + 0x2e198)" * (pointer_expression "*(code **)(puVar11 + 0x2e198)" * (cast_expression "(code **)(puVar11 + 0x2e198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x2e198)" ( (binary_expression "puVar11 + 0x2e198" identifier + number_literal) ))))) )) (argument_list "(md_00)" ( identifier )))) ;) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT << LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT -> field_identifier))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & (field_expression IDENT -> field_identifier))) != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (return_statement return IDENT ;) })))
(function_definition "int SHA512_Final(uchar *md,SHA512_CTX *c)\n\n{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    \n                    \n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}" (primitive_type "int") (function_declarator "SHA512_Final(uchar *md,SHA512_CTX *c)" (identifier "SHA512_Final") (parameter_list "(uchar *md,SHA512_CTX *c)" (( "(") (parameter_declaration "uchar *md" (type_identifier "uchar") (pointer_declarator "*md" (* "*") (identifier "md"))) (, ",") (parameter_declaration "SHA512_CTX *c" (type_identifier "SHA512_CTX") (pointer_declarator "*c" (* "*") (identifier "c"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  undefined1 *puVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  uchar *md_00;\n  uint uVar8;\n  SHA512_CTX *pSVar9;\n  SHA512_CTX *c_00;\n  int *piVar10;\n  undefined *puVar11;\n  int local_bc [3];\n  uint local_b0;\n  undefined1 local_ac [128];\n  int local_2c;\n  \n  puVar11 = PTR___stack_chk_guard_00079930;\n  iVar1 = *(int *)(md + 0xc0);\n  local_2c = *(int *)PTR___stack_chk_guard_00079930;\n  if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }\n  piVar10 = local_bc;\n  puVar2 = (uint *)(md + 0xcc);\n  piVar7 = piVar10;\n  uVar5 = *(uint *)(md + 0xd0);\n  do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));\n  local_bc[0] = uVar8 << 3;\n  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);\n  local_ac[0] = 0x80;\n  SHA512_Bytes(md,local_ac,iVar1);\n  puVar3 = local_ac;\n  do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);\n  SHA512_Bytes(md,local_ac,0x10);\n  pSVar9 = c;\n  do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);\n  if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }\n  puVar11 = PTR___stack_chk_fail_000797f0;\n  (*(code *)PTR___stack_chk_fail_000797f0)();\n  SHA512_Final(md_00,c_00);\n  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);\n                    \n                    \n  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);\n  return iVar1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "uchar *md_00;" (type_identifier "uchar") (pointer_declarator "*md_00" (* "*") (identifier "md_00")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "SHA512_CTX *pSVar9;" (type_identifier "SHA512_CTX") (pointer_declarator "*pSVar9" (* "*") (identifier "pSVar9")) (; ";")) (declaration "SHA512_CTX *c_00;" (type_identifier "SHA512_CTX") (pointer_declarator "*c_00" (* "*") (identifier "c_00")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "undefined *puVar11;" (type_identifier "undefined") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int local_bc [3];" (primitive_type "int") (array_declarator "local_bc [3]" (identifier "local_bc") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "uint local_b0;" (type_identifier "uint") (identifier "local_b0") (; ";")) (declaration "undefined1 local_ac [128];" (type_identifier "undefined1") (array_declarator "local_ac [128]" (identifier "local_ac") ([ "[") (number_literal "128") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar11 = PTR___stack_chk_guard_00079930;" (assignment_expression "puVar11 = PTR___stack_chk_guard_00079930" (identifier "puVar11") (= "=") (identifier "PTR___stack_chk_guard_00079930")) (; ";")) (expression_statement "iVar1 = *(int *)(md + 0xc0);" (assignment_expression "iVar1 = *(int *)(md + 0xc0)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(md + 0xc0)" (* "*") (cast_expression "(int *)(md + 0xc0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(md + 0xc0)" (( "(") (binary_expression "md + 0xc0" (identifier "md") (+ "+") (number_literal "0xc0")) () ")"))))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00079930;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00079930" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00079930" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00079930" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00079930")))) (; ";")) (if_statement "if (iVar1 < 0x70) {\n    iVar1 = 0x70 - iVar1;\n  }\n  else {\n    iVar1 = 0xf0 - iVar1;\n  }" (if "if") (parenthesized_expression "(iVar1 < 0x70)" (( "(") (binary_expression "iVar1 < 0x70" (identifier "iVar1") (< "<") (number_literal "0x70")) () ")")) (compound_statement "{\n    iVar1 = 0x70 - iVar1;\n  }" ({ "{") (expression_statement "iVar1 = 0x70 - iVar1;" (assignment_expression "iVar1 = 0x70 - iVar1" (identifier "iVar1") (= "=") (binary_expression "0x70 - iVar1" (number_literal "0x70") (- "-") (identifier "iVar1"))) (; ";")) (} "}")) (else_clause "else {\n    iVar1 = 0xf0 - iVar1;\n  }" (else "else") (compound_statement "{\n    iVar1 = 0xf0 - iVar1;\n  }" ({ "{") (expression_statement "iVar1 = 0xf0 - iVar1;" (assignment_expression "iVar1 = 0xf0 - iVar1" (identifier "iVar1") (= "=") (binary_expression "0xf0 - iVar1" (number_literal "0xf0") (- "-") (identifier "iVar1"))) (; ";")) (} "}")))) (expression_statement "piVar10 = local_bc;" (assignment_expression "piVar10 = local_bc" (identifier "piVar10") (= "=") (identifier "local_bc")) (; ";")) (expression_statement "puVar2 = (uint *)(md + 0xcc);" (assignment_expression "puVar2 = (uint *)(md + 0xcc)" (identifier "puVar2") (= "=") (cast_expression "(uint *)(md + 0xcc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(md + 0xcc)" (( "(") (binary_expression "md + 0xcc" (identifier "md") (+ "+") (number_literal "0xcc")) () ")")))) (; ";")) (expression_statement "piVar7 = piVar10;" (assignment_expression "piVar7 = piVar10" (identifier "piVar7") (= "=") (identifier "piVar10")) (; ";")) (expression_statement "uVar5 = *(uint *)(md + 0xd0);" (assignment_expression "uVar5 = *(uint *)(md + 0xd0)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(md + 0xd0)" (* "*") (cast_expression "(uint *)(md + 0xd0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(md + 0xd0)" (( "(") (binary_expression "md + 0xd0" (identifier "md") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (do_statement "do {\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  } while (puVar2 != (uint *)(md + 0xc0));" (do "do") (compound_statement "{\n    uVar8 = *puVar2;\n    puVar2 = puVar2 + -1;\n    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;\n    piVar7 = piVar7 + -1;\n    uVar5 = uVar8;\n  }" ({ "{") (expression_statement "uVar8 = *puVar2;" (assignment_expression "uVar8 = *puVar2" (identifier "uVar8") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + -1" (identifier "puVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;" (assignment_expression "piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d" (subscript_expression "piVar7[3]" (identifier "piVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "uVar5 << 3 | uVar8 >> 0x1d" (binary_expression "uVar5 << 3" (identifier "uVar5") (<< "<<") (number_literal "3")) (| "|") (binary_expression "uVar8 >> 0x1d" (identifier "uVar8") (>> ">>") (number_literal "0x1d")))) (; ";")) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + -1" (identifier "piVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" (identifier "uVar5") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 != (uint *)(md + 0xc0))" (( "(") (binary_expression "puVar2 != (uint *)(md + 0xc0)" (identifier "puVar2") (!= "!=") (cast_expression "(uint *)(md + 0xc0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(md + 0xc0)" (( "(") (binary_expression "md + 0xc0" (identifier "md") (+ "+") (number_literal "0xc0")) () ")")))) () ")")) (; ";")) (expression_statement "local_bc[0] = uVar8 << 3;" (assignment_expression "local_bc[0] = uVar8 << 3" (subscript_expression "local_bc[0]" (identifier "local_bc") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "uVar8 << 3" (identifier "uVar8") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "(*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);" (call_expression "(*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80)" (parenthesized_expression "(*(code *)PTR___memset_chk_000797ac)" (( "(") (pointer_expression "*(code *)PTR___memset_chk_000797ac" (* "*") (cast_expression "(code *)PTR___memset_chk_000797ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___memset_chk_000797ac"))) () ")")) (argument_list "(local_ac,0,iVar1,0x80)" (( "(") (identifier "local_ac") (, ",") (number_literal "0") (, ",") (identifier "iVar1") (, ",") (number_literal "0x80") () ")"))) (; ";")) (expression_statement "local_ac[0] = 0x80;" (assignment_expression "local_ac[0] = 0x80" (subscript_expression "local_ac[0]" (identifier "local_ac") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0x80")) (; ";")) (expression_statement "SHA512_Bytes(md,local_ac,iVar1);" (call_expression "SHA512_Bytes(md,local_ac,iVar1)" (identifier "SHA512_Bytes") (argument_list "(md,local_ac,iVar1)" (( "(") (identifier "md") (, ",") (identifier "local_ac") (, ",") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "puVar3 = local_ac;" (assignment_expression "puVar3 = local_ac" (identifier "puVar3") (= "=") (identifier "local_ac")) (; ";")) (do_statement "do {\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  } while (local_ac + 0x10 != puVar4);" (do "do") (compound_statement "{\n    iVar1 = piVar10[3];\n    puVar4 = puVar3 + 4;\n    piVar10 = piVar10 + -1;\n    puVar3[3] = (char)iVar1;\n    *puVar3 = (char)((uint)iVar1 >> 0x18);\n    puVar3[1] = (char)((uint)iVar1 >> 0x10);\n    puVar3[2] = (char)((uint)iVar1 >> 8);\n    puVar3 = puVar4;\n  }" ({ "{") (expression_statement "iVar1 = piVar10[3];" (assignment_expression "iVar1 = piVar10[3]" (identifier "iVar1") (= "=") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar4 = puVar3 + 4;" (assignment_expression "puVar4 = puVar3 + 4" (identifier "puVar4") (= "=") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + -1" (identifier "piVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar3[3] = (char)iVar1;" (assignment_expression "puVar3[3] = (char)iVar1" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(char)iVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar1"))) (; ";")) (expression_statement "*puVar3 = (char)((uint)iVar1 >> 0x18);" (assignment_expression "*puVar3 = (char)((uint)iVar1 >> 0x18)" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (cast_expression "(char)((uint)iVar1 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)iVar1 >> 0x18)" (( "(") (binary_expression "(uint)iVar1 >> 0x18" (cast_expression "(uint)iVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar1")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar3[1] = (char)((uint)iVar1 >> 0x10);" (assignment_expression "puVar3[1] = (char)((uint)iVar1 >> 0x10)" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)((uint)iVar1 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)iVar1 >> 0x10)" (( "(") (binary_expression "(uint)iVar1 >> 0x10" (cast_expression "(uint)iVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar1")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "puVar3[2] = (char)((uint)iVar1 >> 8);" (assignment_expression "puVar3[2] = (char)((uint)iVar1 >> 8)" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(char)((uint)iVar1 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)iVar1 >> 8)" (( "(") (binary_expression "(uint)iVar1 >> 8" (cast_expression "(uint)iVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar1")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" (identifier "puVar3") (= "=") (identifier "puVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_ac + 0x10 != puVar4)" (( "(") (binary_expression "local_ac + 0x10 != puVar4" (binary_expression "local_ac + 0x10" (identifier "local_ac") (+ "+") (number_literal "0x10")) (!= "!=") (identifier "puVar4")) () ")")) (; ";")) (expression_statement "SHA512_Bytes(md,local_ac,0x10);" (call_expression "SHA512_Bytes(md,local_ac,0x10)" (identifier "SHA512_Bytes") (argument_list "(md,local_ac,0x10)" (( "(") (identifier "md") (, ",") (identifier "local_ac") (, ",") (number_literal "0x10") () ")"))) (; ";")) (expression_statement "pSVar9 = c;" (assignment_expression "pSVar9 = c" (identifier "pSVar9") (= "=") (identifier "c")) (; ";")) (do_statement "do {\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  } while ((SHA512_CTX *)&c->Nl != c_00);" (do "do") (compound_statement "{\n    uVar6 = *(undefined4 *)md;\n    c_00 = (SHA512_CTX *)(pSVar9->h + 1);\n    uVar5 = *(uint *)(md + 4);\n    md = md + 8;\n    *(char *)((int)pSVar9->h + 3) = (char)uVar6;\n    *(char *)((int)pSVar9->h + 7) = (char)uVar5;\n    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);\n    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);\n    md_00 = (uchar *)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);\n    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);\n    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);\n    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);\n    pSVar9 = c_00;\n  }" ({ "{") (expression_statement "uVar6 = *(undefined4 *)md;" (assignment_expression "uVar6 = *(undefined4 *)md" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)md" (* "*") (cast_expression "(undefined4 *)md" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "md")))) (; ";")) (expression_statement "c_00 = (SHA512_CTX *)(pSVar9->h + 1);" (assignment_expression "c_00 = (SHA512_CTX *)(pSVar9->h + 1)" (identifier "c_00") (= "=") (cast_expression "(SHA512_CTX *)(pSVar9->h + 1)" (( "(") (type_descriptor "SHA512_CTX *" (type_identifier "SHA512_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pSVar9->h + 1)" (( "(") (binary_expression "pSVar9->h + 1" (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar5 = *(uint *)(md + 4);" (assignment_expression "uVar5 = *(uint *)(md + 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(md + 4)" (* "*") (cast_expression "(uint *)(md + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(md + 4)" (( "(") (binary_expression "md + 4" (identifier "md") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "md = md + 8;" (assignment_expression "md = md + 8" (identifier "md") (= "=") (binary_expression "md + 8" (identifier "md") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "*(char *)((int)pSVar9->h + 3) = (char)uVar6;" (assignment_expression "*(char *)((int)pSVar9->h + 3) = (char)uVar6" (pointer_expression "*(char *)((int)pSVar9->h + 3)" (* "*") (cast_expression "(char *)((int)pSVar9->h + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pSVar9->h + 3)" (( "(") (binary_expression "(int)pSVar9->h + 3" (cast_expression "(int)pSVar9->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "3")) () ")")))) (= "=") (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "*(char *)((int)pSVar9->h + 7) = (char)uVar5;" (assignment_expression "*(char *)((int)pSVar9->h + 7) = (char)uVar5" (pointer_expression "*(char *)((int)pSVar9->h + 7)" (* "*") (cast_expression "(char *)((int)pSVar9->h + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pSVar9->h + 7)" (( "(") (binary_expression "(int)pSVar9->h + 7" (cast_expression "(int)pSVar9->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)uVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "*(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);" (assignment_expression "*(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18)" (pointer_expression "*(char *)pSVar9->h" (* "*") (cast_expression "(char *)pSVar9->h" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h")))) (= "=") (cast_expression "(char)((uint)uVar6 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar6 >> 0x18)" (( "(") (binary_expression "(uint)uVar6 >> 0x18" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);" (assignment_expression "*(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10)" (pointer_expression "*(char *)((int)pSVar9->h + 1)" (* "*") (cast_expression "(char *)((int)pSVar9->h + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pSVar9->h + 1)" (( "(") (binary_expression "(int)pSVar9->h + 1" (cast_expression "(int)pSVar9->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar6 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar6 >> 0x10)" (( "(") (binary_expression "(uint)uVar6 >> 0x10" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "md_00 = (uchar *)(uVar5 >> 0x10);" (assignment_expression "md_00 = (uchar *)(uVar5 >> 0x10)" (identifier "md_00") (= "=") (cast_expression "(uchar *)(uVar5 >> 0x10)" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 >> 0x10)" (( "(") (binary_expression "uVar5 >> 0x10" (identifier "uVar5") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);" (assignment_expression "*(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8)" (pointer_expression "*(char *)((int)pSVar9->h + 2)" (* "*") (cast_expression "(char *)((int)pSVar9->h + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pSVar9->h + 2)" (( "(") (binary_expression "(int)pSVar9->h + 2" (cast_expression "(int)pSVar9->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar6 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar6 >> 8)" (( "(") (binary_expression "(uint)uVar6 >> 8" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);" (assignment_expression "*(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18)" (pointer_expression "*(char *)((int)pSVar9->h + 4)" (* "*") (cast_expression "(char *)((int)pSVar9->h + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pSVar9->h + 4)" (( "(") (binary_expression "(int)pSVar9->h + 4" (cast_expression "(int)pSVar9->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(char)(uVar5 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar5 >> 0x18)" (( "(") (binary_expression "uVar5 >> 0x18" (identifier "uVar5") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);" (assignment_expression "*(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10)" (pointer_expression "*(char *)((int)pSVar9->h + 5)" (* "*") (cast_expression "(char *)((int)pSVar9->h + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pSVar9->h + 5)" (( "(") (binary_expression "(int)pSVar9->h + 5" (cast_expression "(int)pSVar9->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "5")) () ")")))) (= "=") (cast_expression "(char)(uVar5 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar5 >> 0x10)" (( "(") (binary_expression "uVar5 >> 0x10" (identifier "uVar5") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);" (assignment_expression "*(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8)" (pointer_expression "*(char *)((int)pSVar9->h + 6)" (* "*") (cast_expression "(char *)((int)pSVar9->h + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pSVar9->h + 6)" (( "(") (binary_expression "(int)pSVar9->h + 6" (cast_expression "(int)pSVar9->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "pSVar9->h" (identifier "pSVar9") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "6")) () ")")))) (= "=") (cast_expression "(char)(uVar5 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar5 >> 8)" (( "(") (binary_expression "uVar5 >> 8" (identifier "uVar5") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "pSVar9 = c_00;" (assignment_expression "pSVar9 = c_00" (identifier "pSVar9") (= "=") (identifier "c_00")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((SHA512_CTX *)&c->Nl != c_00)" (( "(") (binary_expression "(SHA512_CTX *)&c->Nl != c_00" (cast_expression "(SHA512_CTX *)&c->Nl" (( "(") (type_descriptor "SHA512_CTX *" (type_identifier "SHA512_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&c->Nl" (& "&") (field_expression "c->Nl" (identifier "c") (-> "->") (field_identifier "Nl")))) (!= "!=") (identifier "c_00")) () ")")) (; ";")) (if_statement "if (local_2c == *(int *)puVar11) {\n    return *(int *)puVar11;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar11)" (( "(") (binary_expression "local_2c == *(int *)puVar11" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar11" (* "*") (cast_expression "(int *)puVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar11")))) () ")")) (compound_statement "{\n    return *(int *)puVar11;\n  }" ({ "{") (return_statement "return *(int *)puVar11;" (return "return") (pointer_expression "*(int *)puVar11" (* "*") (cast_expression "(int *)puVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar11"))) (; ";")) (} "}"))) (expression_statement "puVar11 = PTR___stack_chk_fail_000797f0;" (assignment_expression "puVar11 = PTR___stack_chk_fail_000797f0" (identifier "puVar11") (= "=") (identifier "PTR___stack_chk_fail_000797f0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000797f0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000797f0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000797f0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000797f0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000797f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000797f0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "SHA512_Final(md_00,c_00);" (call_expression "SHA512_Final(md_00,c_00)" (identifier "SHA512_Final") (argument_list "(md_00,c_00)" (( "(") (identifier "md_00") (, ",") (identifier "c_00") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);" (call_expression "(**(code **)(puVar11 + 0x2e19c))(md_00,0xd4)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e19c))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x2e19c)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x2e19c)" (* "*") (cast_expression "(code **)(puVar11 + 0x2e19c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x2e19c)" (( "(") (binary_expression "puVar11 + 0x2e19c" (identifier "puVar11") (+ "+") (number_literal "0x2e19c")) () ")"))))) () ")")) (argument_list "(md_00,0xd4)" (( "(") (identifier "md_00") (, ",") (number_literal "0xd4") () ")"))) (; ";")) (expression_statement "iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);" (assignment_expression "iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(puVar11 + 0x2e198))(md_00)" (parenthesized_expression "(**(code **)(puVar11 + 0x2e198))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x2e198)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x2e198)" (* "*") (cast_expression "(code **)(puVar11 + 0x2e198)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x2e198)" (( "(") (binary_expression "puVar11 + 0x2e198" (identifier "puVar11") (+ "+") (number_literal "0x2e198")) () ")"))))) () ")")) (argument_list "(md_00)" (( "(") (identifier "md_00") () ")")))) (; ";")) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))

int function_1(type_1 *s,type_2 *var_12)

{
  int var_1;
  type_3 *var_2;
  type_2 *var_7;
  type_2 *var_10;
  type_3 var_3;
  type_4 var_11;
  int var_13;
  type_3 *var_5;
  type_1 *s_00;
  type_5 var_4;
  type_3 *var_8;
  type_6 *var_14;
  type_3 len [4];
  type_2 var_9 [128];
  
  var_14 = PTR___stack_chk_guard_00079930;
  var_1 = s->blkused;
  var_13 = *(int *)PTR___stack_chk_guard_00079930;
  if (var_1 < 0x70) {
    var_1 = 0x70 - var_1;
  }
  else {
    var_1 = 0xf0 - var_1;
  }
  var_8 = len;
  var_2 = s->len + 2;
  var_5 = var_8;
  var_3 = s->len[3];
  do {
    var_4 = *var_2;
    var_2 = var_2 + -1;
    var_5[3] = var_3 << 3 | var_4 >> 0x1d;
    var_5 = var_5 + -1;
    var_3 = var_4;
  } while (var_2 != (type_3 *)&s->blkused);
  len[0] = var_4 << 3;
  (*(type_7 *)PTR___memset_chk_000797ac)(var_9,0,var_1,0x80);
  var_9[0] = 0x80;
  var_6(s,var_9,var_1);
  var_7 = var_9;
  do {
    var_3 = var_8[3];
    var_10 = var_7 + 4;
    var_8 = var_8 + -1;
    var_7[3] = (type_2)var_3;
    *var_7 = (type_2)(var_3 >> 0x18);
    var_7[1] = (type_2)(var_3 >> 0x10);
    var_7[2] = (type_2)(var_3 >> 8);
    var_7 = var_10;
  } while (var_9 + 0x10 != var_10);
  var_6(s,var_9,0x10);
  var_7 = var_12;
  do {
    var_11 = s->h[0].hi;
    var_10 = var_7 + 8;
    var_4 = s->h[0].lo;
    s = (type_1 *)(s->h + 1);
    var_7[3] = (type_2)var_11;
    var_7[7] = (type_2)var_4;
    *var_7 = (type_2)(var_11 >> 0x18);
    var_7[1] = (type_2)(var_11 >> 0x10);
    s_00 = (type_1 *)(var_4 >> 0x10);
    var_7[2] = (type_2)(var_11 >> 8);
    var_7[4] = (type_2)(var_4 >> 0x18);
    var_7[5] = (type_2)(var_4 >> 0x10);
    var_7[6] = (type_2)(var_4 >> 8);
    var_7 = var_10;
  } while (var_12 + 0x40 != var_10);
  if (var_13 == *(int *)var_14) {
    return *(int *)var_14;
  }
  var_14 = PTR___stack_chk_fail_000797f0;
  (*(type_7 *)PTR___stack_chk_fail_000797f0)();
  function_1(s_00,var_10);
  (**(type_7 **)(var_14 + 0x2e19c))(s_00,0xd4);
                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  var_1 = (**(type_7 **)(var_14 + 0x2e198))(s_00);
  return var_1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (field_expression argument: (identifier) field: (field_identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier)))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (return_statement (identifier)))))

int MASKED(uchar *md,SHA512_CTX *c)

{
  int iVar1;
  uint *puVar2;
  undefined1 *puVar3;
  undefined1 *puVar4;
  uint uVar5;
  undefined4 uVar6;
  int *piVar7;
  uchar *md_00;
  uint uVar8;
  SHA512_CTX *pSVar9;
  SHA512_CTX *c_00;
  int *piVar10;
  undefined *puVar11;
  int local_bc [3];
  uint local_b0;
  undefined1 local_ac [128];
  int local_2c;
  
  puVar11 = PTR___stack_chk_guard_00079930;
  iVar1 = *(int *)(md + 0xc0);
  local_2c = *(int *)PTR___stack_chk_guard_00079930;
  if (iVar1 < 0x70) {
    iVar1 = 0x70 - iVar1;
  }
  else {
    iVar1 = 0xf0 - iVar1;
  }
  piVar10 = local_bc;
  puVar2 = (uint *)(md + 0xcc);
  piVar7 = piVar10;
  uVar5 = *(uint *)(md + 0xd0);
  do {
    uVar8 = *puVar2;
    puVar2 = puVar2 + -1;
    piVar7[3] = uVar5 << 3 | uVar8 >> 0x1d;
    piVar7 = piVar7 + -1;
    uVar5 = uVar8;
  } while (puVar2 != (uint *)(md + 0xc0));
  local_bc[0] = uVar8 << 3;
  (*(code *)PTR___memset_chk_000797ac)(local_ac,0,iVar1,0x80);
  local_ac[0] = 0x80;
  SHA512_Bytes(md,local_ac,iVar1);
  puVar3 = local_ac;
  do {
    iVar1 = piVar10[3];
    puVar4 = puVar3 + 4;
    piVar10 = piVar10 + -1;
    puVar3[3] = (char)iVar1;
    *puVar3 = (char)((uint)iVar1 >> 0x18);
    puVar3[1] = (char)((uint)iVar1 >> 0x10);
    puVar3[2] = (char)((uint)iVar1 >> 8);
    puVar3 = puVar4;
  } while (local_ac + 0x10 != puVar4);
  SHA512_Bytes(md,local_ac,0x10);
  pSVar9 = c;
  do {
    uVar6 = *(undefined4 *)md;
    c_00 = (SHA512_CTX *)(pSVar9->h + 1);
    uVar5 = *(uint *)(md + 4);
    md = md + 8;
    *(char *)((int)pSVar9->h + 3) = (char)uVar6;
    *(char *)((int)pSVar9->h + 7) = (char)uVar5;
    *(char *)pSVar9->h = (char)((uint)uVar6 >> 0x18);
    *(char *)((int)pSVar9->h + 1) = (char)((uint)uVar6 >> 0x10);
    md_00 = (uchar *)(uVar5 >> 0x10);
    *(char *)((int)pSVar9->h + 2) = (char)((uint)uVar6 >> 8);
    *(char *)((int)pSVar9->h + 4) = (char)(uVar5 >> 0x18);
    *(char *)((int)pSVar9->h + 5) = (char)(uVar5 >> 0x10);
    *(char *)((int)pSVar9->h + 6) = (char)(uVar5 >> 8);
    pSVar9 = c_00;
  } while ((SHA512_CTX *)&c->Nl != c_00);
  if (local_2c == *(int *)puVar11) {
    return *(int *)puVar11;
  }
  puVar11 = PTR___stack_chk_fail_000797f0;
  (*(code *)PTR___stack_chk_fail_000797f0)();
  MASKED(md_00,c_00);
  (**(code **)(puVar11 + 0x2e19c))(md_00,0xd4);
                    /* WARNING: Could not recover jumptable at 0x0004afa8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  iVar1 = (**(code **)(puVar11 + 0x2e198))(md_00);
  return iVar1;
}

