
void SHA512_Simple(void *p,int len,uchar *output)

{
  SHA512_State s;
  
  SHA512_Init((SHA512_CTX *)&s);
                    /* WARNING: Subroutine does not return */
  SHA512_Bytes(&s,p,len);
}



void SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)

{
  _union_320 *p_Var1;
  ulonglong uVar2;
  undefined *puVar3;
  SHA512_CTX *c;
  undefined4 *puVar4;
  SHA512_CTX *pSVar5;
  undefined4 uVar6;
  SHA512_CTX *c_00;
  uint *puVar7;
  undefined *puVar8;
  undefined4 uVar9;
  SHA512_CTX SStack_1f8;
  SHA512_CTX *local_120;
  undefined *local_11c;
  SHA512_CTX *local_118;
  undefined4 local_114;
  SHA512_CTX *local_110;
  undefined4 local_10c;
  SHA512_CTX SStack_f0;
  
  puVar3 = PTR___stack_chk_guard_0006f5a8;
  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;
  SHA512_Init(&SStack_f0);
  c_00 = param_2;
  SHA512_Bytes(&SStack_f0,param_1);
  SHA512_Final((uchar *)&SStack_f0,param_3);
  uVar6 = 0xd4;
  pSVar5 = &SStack_f0;
  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);
  if (SStack_f0.md_len == *(uint *)puVar3) {
    return;
  }
  uVar9 = 0x48250;
  puVar8 = PTR___stack_chk_fail_0006f58c;
  (*(code *)PTR___stack_chk_fail_0006f58c)();
  local_11c = puVar3;
  puVar7 = *(uint **)(puVar8 + 0x27358);
  SStack_1f8.md_len = *puVar7;
  c = &SStack_1f8;
  local_120 = &SStack_f0;
  local_118 = param_3;
  local_114 = param_1;
  local_110 = param_2;
  local_10c = uVar9;
  SHA384_Init(c);
  SHA512_Bytes(c,pSVar5,uVar6);
  SHA384_Final((uchar *)c,c_00);
  (**(code **)(puVar8 + 0x26e70))(c,0xd4);
  if (SStack_1f8.md_len == *puVar7) {
    return;
  }
  (**(code **)(puVar8 + 0x2733c))();
  puVar4 = (undefined4 *)((int)&c->u + 0x70);
  p_Var1 = &c->u;
  do {
    uVar2 = c->h[0];
    uVar9 = *(undefined4 *)(c->h + 1);
    uVar6 = *(undefined4 *)((int)c->h + 0xc);
    *puVar4 = *(undefined4 *)c->h;
    puVar4[1] = (int)uVar2;
    puVar4[2] = uVar9;
    puVar4[3] = uVar6;
    c = (SHA512_CTX *)(c->h + 2);
    puVar4 = puVar4 + 4;
  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));
  return;
}


lui gp,0x3
addiu gp,gp,-0x1140
addu gp,gp,t9
addiu sp,sp,-0x108
sw ra,0x104(sp)
sw s4,0x100(sp)
sw s3,0xfc(sp)
sw s2,0xf8(sp)
sw s1,0xf4(sp)
sw s0,0xf0(sp)
sw gp,0x10(sp)
or s3,a0,zero
or s4,a1,zero
or s2,a2,zero
lw s1,-0x7a88(gp)
lw v0,0x0(s1)
sw v0,0xec(sp)
addiu s0,sp,0x18
or a0,s0,zero
lw t9,-0x7d98(gp)
bal 0x00046b50
_nop
lw gp,0x10(sp)
or a2,s4,zero
or a1,s3,zero
or a0,s0,zero
lw t9,-0x7d94(gp)
bal 0x00046cb0
_nop
lw gp,0x10(sp)
or a1,s2,zero
or a0,s0,zero
lw t9,-0x7d90(gp)
bal 0x00047e14
_nop
lw gp,0x10(sp)
li a1,0xd4
or a0,s0,zero
lw t9,-0x7f70(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw v1,0xec(sp)
lw v0,0x0(s1)
bne v1,v0,0x00048244
_lw ra,0x104(sp)
lw s4,0x100(sp)
lw s3,0xfc(sp)
lw s2,0xf8(sp)
lw s1,0xf4(sp)
lw s0,0xf0(sp)
jr ra
_addiu sp,sp,0x108
lw t9,-0x7aa4(gp)
jalr t9
_nop
lui gp,0x3
addiu gp,gp,-0x1220
addu gp,gp,t9
addiu sp,sp,-0x108
sw ra,0x104(sp)
sw s4,0x100(sp)
sw s3,0xfc(sp)
sw s2,0xf8(sp)
sw s1,0xf4(sp)
sw s0,0xf0(sp)
sw gp,0x10(sp)
or s3,a0,zero
or s4,a1,zero
or s2,a2,zero
lw s1,-0x7a88(gp)
lw v0,0x0(s1)
sw v0,0xec(sp)
addiu s0,sp,0x18
or a0,s0,zero
lw t9,-0x7c38(gp)
bal 0x00046c00
_nop
lw gp,0x10(sp)
or a2,s4,zero
or a1,s3,zero
or a0,s0,zero
lw t9,-0x7d94(gp)
bal 0x00046cb0
_nop
lw gp,0x10(sp)
or a1,s2,zero
or a0,s0,zero
lw t9,-0x7c34(gp)
bal 0x00048044
_nop
lw gp,0x10(sp)
li a1,0xd4
or a0,s0,zero
lw t9,-0x7f70(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw v1,0xec(sp)
lw v0,0x0(s1)
bne v1,v0,0x00048324
_lw ra,0x104(sp)
lw s4,0x100(sp)
lw s3,0xfc(sp)
lw s2,0xf8(sp)
lw s1,0xf4(sp)
lw s0,0xf0(sp)
jr ra
_addiu sp,sp,0x108
lw t9,-0x7aa4(gp)
jalr t9
_nop
(translation_unit "void SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)\n\n{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}\n\n" (function_definition "void SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)\n\n{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}" primitive_type (function_declarator "SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)" identifier (parameter_list "(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "SHA512_CTX *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "SHA512_CTX *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}" { (declaration "_union_320 *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "SHA512_CTX *c;" type_identifier (pointer_declarator "*c" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "SHA512_CTX *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "SHA512_CTX *c_00;" type_identifier (pointer_declarator "*c_00" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "SHA512_CTX SStack_1f8;" type_identifier identifier ;) (declaration "SHA512_CTX *local_120;" type_identifier (pointer_declarator "*local_120" * identifier) ;) (declaration "undefined *local_11c;" type_identifier (pointer_declarator "*local_11c" * identifier) ;) (declaration "SHA512_CTX *local_118;" type_identifier (pointer_declarator "*local_118" * identifier) ;) (declaration "undefined4 local_114;" type_identifier identifier ;) (declaration "SHA512_CTX *local_110;" type_identifier (pointer_declarator "*local_110" * identifier) ;) (declaration "undefined4 local_10c;" type_identifier identifier ;) (declaration "SHA512_CTX SStack_f0;" type_identifier identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_0006f5a8;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0006f5a8" identifier = identifier) ;) (expression_statement "SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;" (assignment_expression "SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8" (field_expression "SStack_f0.md_len" identifier . field_identifier) = (pointer_expression "*(uint *)PTR___stack_chk_guard_0006f5a8" * (cast_expression "(uint *)PTR___stack_chk_guard_0006f5a8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "SHA512_Init(&SStack_f0);" (call_expression "SHA512_Init(&SStack_f0)" identifier (argument_list "(&SStack_f0)" ( (pointer_expression "&SStack_f0" & identifier) ))) ;) (expression_statement "c_00 = param_2;" (assignment_expression "c_00 = param_2" identifier = identifier) ;) (expression_statement "SHA512_Bytes(&SStack_f0,param_1);" (call_expression "SHA512_Bytes(&SStack_f0,param_1)" identifier (argument_list "(&SStack_f0,param_1)" ( (pointer_expression "&SStack_f0" & identifier) , identifier ))) ;) (expression_statement "SHA512_Final((uchar *)&SStack_f0,param_3);" (call_expression "SHA512_Final((uchar *)&SStack_f0,param_3)" identifier (argument_list "((uchar *)&SStack_f0,param_3)" ( (cast_expression "(uchar *)&SStack_f0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SStack_f0" & identifier)) , identifier ))) ;) (expression_statement "uVar6 = 0xd4;" (assignment_expression "uVar6 = 0xd4" identifier = number_literal) ;) (expression_statement "pSVar5 = &SStack_f0;" (assignment_expression "pSVar5 = &SStack_f0" identifier = (pointer_expression "&SStack_f0" & identifier)) ;) (expression_statement "(*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);" (call_expression "(*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4)" (parenthesized_expression "(*(code *)PTR_smemclr_0006f0c0)" ( (pointer_expression "*(code *)PTR_smemclr_0006f0c0" * (cast_expression "(code *)PTR_smemclr_0006f0c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&SStack_f0,0xd4)" ( (pointer_expression "&SStack_f0" & identifier) , number_literal ))) ;) (if_statement "if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }" if (parenthesized_expression "(SStack_f0.md_len == *(uint *)puVar3)" ( (binary_expression "SStack_f0.md_len == *(uint *)puVar3" (field_expression "SStack_f0.md_len" identifier . field_identifier) == (pointer_expression "*(uint *)puVar3" * (cast_expression "(uint *)puVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar9 = 0x48250;" (assignment_expression "uVar9 = 0x48250" identifier = number_literal) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_0006f58c;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0006f58c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0006f58c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0006f58c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0006f58c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0006f58c" * (cast_expression "(code *)PTR___stack_chk_fail_0006f58c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_11c = puVar3;" (assignment_expression "local_11c = puVar3" identifier = identifier) ;) (expression_statement "puVar7 = *(uint **)(puVar8 + 0x27358);" (assignment_expression "puVar7 = *(uint **)(puVar8 + 0x27358)" identifier = (pointer_expression "*(uint **)(puVar8 + 0x27358)" * (cast_expression "(uint **)(puVar8 + 0x27358)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x27358)" ( (binary_expression "puVar8 + 0x27358" identifier + number_literal) ))))) ;) (expression_statement "SStack_1f8.md_len = *puVar7;" (assignment_expression "SStack_1f8.md_len = *puVar7" (field_expression "SStack_1f8.md_len" identifier . field_identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "c = &SStack_1f8;" (assignment_expression "c = &SStack_1f8" identifier = (pointer_expression "&SStack_1f8" & identifier)) ;) (expression_statement "local_120 = &SStack_f0;" (assignment_expression "local_120 = &SStack_f0" identifier = (pointer_expression "&SStack_f0" & identifier)) ;) (expression_statement "local_118 = param_3;" (assignment_expression "local_118 = param_3" identifier = identifier) ;) (expression_statement "local_114 = param_1;" (assignment_expression "local_114 = param_1" identifier = identifier) ;) (expression_statement "local_110 = param_2;" (assignment_expression "local_110 = param_2" identifier = identifier) ;) (expression_statement "local_10c = uVar9;" (assignment_expression "local_10c = uVar9" identifier = identifier) ;) (expression_statement "SHA384_Init(c);" (call_expression "SHA384_Init(c)" identifier (argument_list "(c)" ( identifier ))) ;) (expression_statement "SHA512_Bytes(c,pSVar5,uVar6);" (call_expression "SHA512_Bytes(c,pSVar5,uVar6)" identifier (argument_list "(c,pSVar5,uVar6)" ( identifier , identifier , identifier ))) ;) (expression_statement "SHA384_Final((uchar *)c,c_00);" (call_expression "SHA384_Final((uchar *)c,c_00)" identifier (argument_list "((uchar *)c,c_00)" ( (cast_expression "(uchar *)c" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "(**(code **)(puVar8 + 0x26e70))(c,0xd4);" (call_expression "(**(code **)(puVar8 + 0x26e70))(c,0xd4)" (parenthesized_expression "(**(code **)(puVar8 + 0x26e70))" ( (pointer_expression "**(code **)(puVar8 + 0x26e70)" * (pointer_expression "*(code **)(puVar8 + 0x26e70)" * (cast_expression "(code **)(puVar8 + 0x26e70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x26e70)" ( (binary_expression "puVar8 + 0x26e70" identifier + number_literal) ))))) )) (argument_list "(c,0xd4)" ( identifier , number_literal ))) ;) (if_statement "if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }" if (parenthesized_expression "(SStack_1f8.md_len == *puVar7)" ( (binary_expression "SStack_1f8.md_len == *puVar7" (field_expression "SStack_1f8.md_len" identifier . field_identifier) == (pointer_expression "*puVar7" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(**(code **)(puVar8 + 0x2733c))();" (call_expression "(**(code **)(puVar8 + 0x2733c))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2733c))" ( (pointer_expression "**(code **)(puVar8 + 0x2733c)" * (pointer_expression "*(code **)(puVar8 + 0x2733c)" * (cast_expression "(code **)(puVar8 + 0x2733c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2733c)" ( (binary_expression "puVar8 + 0x2733c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (undefined4 *)((int)&c->u + 0x70);" (assignment_expression "puVar4 = (undefined4 *)((int)&c->u + 0x70)" identifier = (cast_expression "(undefined4 *)((int)&c->u + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&c->u + 0x70)" ( (binary_expression "(int)&c->u + 0x70" (cast_expression "(int)&c->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&c->u" & (field_expression "c->u" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "p_Var1 = &c->u;" (assignment_expression "p_Var1 = &c->u" identifier = (pointer_expression "&c->u" & (field_expression "c->u" identifier -> field_identifier))) ;) (do_statement "do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));" do (compound_statement "{\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  }" { (expression_statement "uVar2 = c->h[0];" (assignment_expression "uVar2 = c->h[0]" identifier = (subscript_expression "c->h[0]" (field_expression "c->h" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar9 = *(undefined4 *)(c->h + 1);" (assignment_expression "uVar9 = *(undefined4 *)(c->h + 1)" identifier = (pointer_expression "*(undefined4 *)(c->h + 1)" * (cast_expression "(undefined4 *)(c->h + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(c->h + 1)" ( (binary_expression "c->h + 1" (field_expression "c->h" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "uVar6 = *(undefined4 *)((int)c->h + 0xc);" (assignment_expression "uVar6 = *(undefined4 *)((int)c->h + 0xc)" identifier = (pointer_expression "*(undefined4 *)((int)c->h + 0xc)" * (cast_expression "(undefined4 *)((int)c->h + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)c->h + 0xc)" ( (binary_expression "(int)c->h + 0xc" (cast_expression "(int)c->h" ( (type_descriptor "int" primitive_type) ) (field_expression "c->h" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined4 *)c->h;" (assignment_expression "*puVar4 = *(undefined4 *)c->h" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined4 *)c->h" * (cast_expression "(undefined4 *)c->h" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "c->h" identifier -> field_identifier)))) ;) (expression_statement "puVar4[1] = (int)uVar2;" (assignment_expression "puVar4[1] = (int)uVar2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar4[2] = uVar9;" (assignment_expression "puVar4[2] = uVar9" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = uVar6;" (assignment_expression "puVar4[3] = uVar6" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "c = (SHA512_CTX *)(c->h + 2);" (assignment_expression "c = (SHA512_CTX *)(c->h + 2)" identifier = (cast_expression "(SHA512_CTX *)(c->h + 2)" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(c->h + 2)" ( (binary_expression "c->h + 2" (field_expression "c->h" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "puVar4 = puVar4 + 4;" (assignment_expression "puVar4 = puVar4 + 4" identifier = (binary_expression "puVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(c != (SHA512_CTX *)((int)p_Var1 + 0x10))" ( (binary_expression "c != (SHA512_CTX *)((int)p_Var1 + 0x10)" identifier != (cast_expression "(SHA512_CTX *)((int)p_Var1 + 0x10)" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var1 + 0x10)" ( (binary_expression "(int)p_Var1 + 0x10" (cast_expression "(int)p_Var1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) ;) (return_statement "return;" return ;) })))
(translation_unit "void SHA512_Simple(void *p,int len,uchar *output)\n\n{\n  SHA512_State s;\n  \n  SHA512_Init((SHA512_CTX *)&s);\n                    /* WARNING: Subroutine does not return */\n  SHA512_Bytes(&s,p,len);\n}\n\n" (function_definition "void SHA512_Simple(void *p,int len,uchar *output)\n\n{\n  SHA512_State s;\n  \n  SHA512_Init((SHA512_CTX *)&s);\n                    /* WARNING: Subroutine does not return */\n  SHA512_Bytes(&s,p,len);\n}" primitive_type (function_declarator "SHA512_Simple(void *p,int len,uchar *output)" identifier (parameter_list "(void *p,int len,uchar *output)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "int len" primitive_type identifier) , (parameter_declaration "uchar *output" type_identifier (pointer_declarator "*output" * identifier)) ))) (compound_statement "{\n  SHA512_State s;\n  \n  SHA512_Init((SHA512_CTX *)&s);\n                    /* WARNING: Subroutine does not return */\n  SHA512_Bytes(&s,p,len);\n}" { (declaration "SHA512_State s;" type_identifier identifier ;) (expression_statement "SHA512_Init((SHA512_CTX *)&s);" (call_expression "SHA512_Init((SHA512_CTX *)&s)" identifier (argument_list "((SHA512_CTX *)&s)" ( (cast_expression "(SHA512_CTX *)&s" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s" & identifier)) ))) ;) comment (expression_statement "SHA512_Bytes(&s,p,len);" (call_expression "SHA512_Bytes(&s,p,len)" identifier (argument_list "(&s,p,len)" ( (pointer_expression "&s" & identifier) , identifier , identifier ))) ;) })))
(translation_unit "void SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)\n\n{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}\n\n" (function_definition "void SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)\n\n{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}" primitive_type (function_declarator "SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)" identifier (parameter_list "(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "SHA512_CTX *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "SHA512_CTX *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}" { (declaration "_union_320 *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "SHA512_CTX *c;" type_identifier (pointer_declarator "*c" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "SHA512_CTX *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "SHA512_CTX *c_00;" type_identifier (pointer_declarator "*c_00" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "SHA512_CTX SStack_1f8;" type_identifier identifier ;) (declaration "SHA512_CTX *local_120;" type_identifier (pointer_declarator "*local_120" * identifier) ;) (declaration "undefined *local_11c;" type_identifier (pointer_declarator "*local_11c" * identifier) ;) (declaration "SHA512_CTX *local_118;" type_identifier (pointer_declarator "*local_118" * identifier) ;) (declaration "undefined4 local_114;" type_identifier identifier ;) (declaration "SHA512_CTX *local_110;" type_identifier (pointer_declarator "*local_110" * identifier) ;) (declaration "undefined4 local_10c;" type_identifier identifier ;) (declaration "SHA512_CTX SStack_f0;" type_identifier identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_0006f5a8;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0006f5a8" identifier = identifier) ;) (expression_statement "SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;" (assignment_expression "SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8" (field_expression "SStack_f0.md_len" identifier . field_identifier) = (pointer_expression "*(uint *)PTR___stack_chk_guard_0006f5a8" * (cast_expression "(uint *)PTR___stack_chk_guard_0006f5a8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "SHA512_Init(&SStack_f0);" (call_expression "SHA512_Init(&SStack_f0)" identifier (argument_list "(&SStack_f0)" ( (pointer_expression "&SStack_f0" & identifier) ))) ;) (expression_statement "c_00 = param_2;" (assignment_expression "c_00 = param_2" identifier = identifier) ;) (expression_statement "SHA512_Bytes(&SStack_f0,param_1);" (call_expression "SHA512_Bytes(&SStack_f0,param_1)" identifier (argument_list "(&SStack_f0,param_1)" ( (pointer_expression "&SStack_f0" & identifier) , identifier ))) ;) (expression_statement "SHA512_Final((uchar *)&SStack_f0,param_3);" (call_expression "SHA512_Final((uchar *)&SStack_f0,param_3)" identifier (argument_list "((uchar *)&SStack_f0,param_3)" ( (cast_expression "(uchar *)&SStack_f0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SStack_f0" & identifier)) , identifier ))) ;) (expression_statement "uVar6 = 0xd4;" (assignment_expression "uVar6 = 0xd4" identifier = number_literal) ;) (expression_statement "pSVar5 = &SStack_f0;" (assignment_expression "pSVar5 = &SStack_f0" identifier = (pointer_expression "&SStack_f0" & identifier)) ;) (expression_statement "(*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);" (call_expression "(*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4)" (parenthesized_expression "(*(code *)PTR_smemclr_0006f0c0)" ( (pointer_expression "*(code *)PTR_smemclr_0006f0c0" * (cast_expression "(code *)PTR_smemclr_0006f0c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&SStack_f0,0xd4)" ( (pointer_expression "&SStack_f0" & identifier) , number_literal ))) ;) (if_statement "if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }" if (parenthesized_expression "(SStack_f0.md_len == *(uint *)puVar3)" ( (binary_expression "SStack_f0.md_len == *(uint *)puVar3" (field_expression "SStack_f0.md_len" identifier . field_identifier) == (pointer_expression "*(uint *)puVar3" * (cast_expression "(uint *)puVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar9 = 0x48250;" (assignment_expression "uVar9 = 0x48250" identifier = number_literal) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_0006f58c;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0006f58c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0006f58c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0006f58c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0006f58c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0006f58c" * (cast_expression "(code *)PTR___stack_chk_fail_0006f58c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_11c = puVar3;" (assignment_expression "local_11c = puVar3" identifier = identifier) ;) (expression_statement "puVar7 = *(uint **)(puVar8 + 0x27358);" (assignment_expression "puVar7 = *(uint **)(puVar8 + 0x27358)" identifier = (pointer_expression "*(uint **)(puVar8 + 0x27358)" * (cast_expression "(uint **)(puVar8 + 0x27358)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x27358)" ( (binary_expression "puVar8 + 0x27358" identifier + number_literal) ))))) ;) (expression_statement "SStack_1f8.md_len = *puVar7;" (assignment_expression "SStack_1f8.md_len = *puVar7" (field_expression "SStack_1f8.md_len" identifier . field_identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "c = &SStack_1f8;" (assignment_expression "c = &SStack_1f8" identifier = (pointer_expression "&SStack_1f8" & identifier)) ;) (expression_statement "local_120 = &SStack_f0;" (assignment_expression "local_120 = &SStack_f0" identifier = (pointer_expression "&SStack_f0" & identifier)) ;) (expression_statement "local_118 = param_3;" (assignment_expression "local_118 = param_3" identifier = identifier) ;) (expression_statement "local_114 = param_1;" (assignment_expression "local_114 = param_1" identifier = identifier) ;) (expression_statement "local_110 = param_2;" (assignment_expression "local_110 = param_2" identifier = identifier) ;) (expression_statement "local_10c = uVar9;" (assignment_expression "local_10c = uVar9" identifier = identifier) ;) (expression_statement "SHA384_Init(c);" (call_expression "SHA384_Init(c)" identifier (argument_list "(c)" ( identifier ))) ;) (expression_statement "SHA512_Bytes(c,pSVar5,uVar6);" (call_expression "SHA512_Bytes(c,pSVar5,uVar6)" identifier (argument_list "(c,pSVar5,uVar6)" ( identifier , identifier , identifier ))) ;) (expression_statement "SHA384_Final((uchar *)c,c_00);" (call_expression "SHA384_Final((uchar *)c,c_00)" identifier (argument_list "((uchar *)c,c_00)" ( (cast_expression "(uchar *)c" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "(**(code **)(puVar8 + 0x26e70))(c,0xd4);" (call_expression "(**(code **)(puVar8 + 0x26e70))(c,0xd4)" (parenthesized_expression "(**(code **)(puVar8 + 0x26e70))" ( (pointer_expression "**(code **)(puVar8 + 0x26e70)" * (pointer_expression "*(code **)(puVar8 + 0x26e70)" * (cast_expression "(code **)(puVar8 + 0x26e70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x26e70)" ( (binary_expression "puVar8 + 0x26e70" identifier + number_literal) ))))) )) (argument_list "(c,0xd4)" ( identifier , number_literal ))) ;) (if_statement "if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }" if (parenthesized_expression "(SStack_1f8.md_len == *puVar7)" ( (binary_expression "SStack_1f8.md_len == *puVar7" (field_expression "SStack_1f8.md_len" identifier . field_identifier) == (pointer_expression "*puVar7" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(**(code **)(puVar8 + 0x2733c))();" (call_expression "(**(code **)(puVar8 + 0x2733c))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2733c))" ( (pointer_expression "**(code **)(puVar8 + 0x2733c)" * (pointer_expression "*(code **)(puVar8 + 0x2733c)" * (cast_expression "(code **)(puVar8 + 0x2733c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2733c)" ( (binary_expression "puVar8 + 0x2733c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (undefined4 *)((int)&c->u + 0x70);" (assignment_expression "puVar4 = (undefined4 *)((int)&c->u + 0x70)" identifier = (cast_expression "(undefined4 *)((int)&c->u + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&c->u + 0x70)" ( (binary_expression "(int)&c->u + 0x70" (cast_expression "(int)&c->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&c->u" & (field_expression "c->u" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "p_Var1 = &c->u;" (assignment_expression "p_Var1 = &c->u" identifier = (pointer_expression "&c->u" & (field_expression "c->u" identifier -> field_identifier))) ;) (do_statement "do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));" do (compound_statement "{\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  }" { (expression_statement "uVar2 = c->h[0];" (assignment_expression "uVar2 = c->h[0]" identifier = (subscript_expression "c->h[0]" (field_expression "c->h" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar9 = *(undefined4 *)(c->h + 1);" (assignment_expression "uVar9 = *(undefined4 *)(c->h + 1)" identifier = (pointer_expression "*(undefined4 *)(c->h + 1)" * (cast_expression "(undefined4 *)(c->h + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(c->h + 1)" ( (binary_expression "c->h + 1" (field_expression "c->h" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "uVar6 = *(undefined4 *)((int)c->h + 0xc);" (assignment_expression "uVar6 = *(undefined4 *)((int)c->h + 0xc)" identifier = (pointer_expression "*(undefined4 *)((int)c->h + 0xc)" * (cast_expression "(undefined4 *)((int)c->h + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)c->h + 0xc)" ( (binary_expression "(int)c->h + 0xc" (cast_expression "(int)c->h" ( (type_descriptor "int" primitive_type) ) (field_expression "c->h" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "*puVar4 = *(undefined4 *)c->h;" (assignment_expression "*puVar4 = *(undefined4 *)c->h" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*(undefined4 *)c->h" * (cast_expression "(undefined4 *)c->h" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "c->h" identifier -> field_identifier)))) ;) (expression_statement "puVar4[1] = (int)uVar2;" (assignment_expression "puVar4[1] = (int)uVar2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar4[2] = uVar9;" (assignment_expression "puVar4[2] = uVar9" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = uVar6;" (assignment_expression "puVar4[3] = uVar6" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "c = (SHA512_CTX *)(c->h + 2);" (assignment_expression "c = (SHA512_CTX *)(c->h + 2)" identifier = (cast_expression "(SHA512_CTX *)(c->h + 2)" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(c->h + 2)" ( (binary_expression "c->h + 2" (field_expression "c->h" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "puVar4 = puVar4 + 4;" (assignment_expression "puVar4 = puVar4 + 4" identifier = (binary_expression "puVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(c != (SHA512_CTX *)((int)p_Var1 + 0x10))" ( (binary_expression "c != (SHA512_CTX *)((int)p_Var1 + 0x10)" identifier != (cast_expression "(SHA512_CTX *)((int)p_Var1 + 0x10)" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var1 + 0x10)" ( (binary_expression "(int)p_Var1 + 0x10" (cast_expression "(int)p_Var1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) })) (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 ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & (field_expression IDENT -> field_identifier))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & (field_expression IDENT -> field_identifier))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_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 (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 (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT -> field_identifier)) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (field_expression IDENT -> field_identifier)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) )) ;) (return_statement return ;) })))
(function_definition "void SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)\n\n{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}" (primitive_type "void") (function_declarator "SHA512_Simple(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)" (identifier "SHA512_Simple") (parameter_list "(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "SHA512_CTX *param_2" (type_identifier "SHA512_CTX") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "SHA512_CTX *param_3" (type_identifier "SHA512_CTX") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  _union_320 *p_Var1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  SHA512_CTX *c;\n  undefined4 *puVar4;\n  SHA512_CTX *pSVar5;\n  undefined4 uVar6;\n  SHA512_CTX *c_00;\n  uint *puVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  SHA512_CTX SStack_1f8;\n  SHA512_CTX *local_120;\n  undefined *local_11c;\n  SHA512_CTX *local_118;\n  undefined4 local_114;\n  SHA512_CTX *local_110;\n  undefined4 local_10c;\n  SHA512_CTX SStack_f0;\n  \n  puVar3 = PTR___stack_chk_guard_0006f5a8;\n  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;\n  SHA512_Init(&SStack_f0);\n  c_00 = param_2;\n  SHA512_Bytes(&SStack_f0,param_1);\n  SHA512_Final((uchar *)&SStack_f0,param_3);\n  uVar6 = 0xd4;\n  pSVar5 = &SStack_f0;\n  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);\n  if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }\n  uVar9 = 0x48250;\n  puVar8 = PTR___stack_chk_fail_0006f58c;\n  (*(code *)PTR___stack_chk_fail_0006f58c)();\n  local_11c = puVar3;\n  puVar7 = *(uint **)(puVar8 + 0x27358);\n  SStack_1f8.md_len = *puVar7;\n  c = &SStack_1f8;\n  local_120 = &SStack_f0;\n  local_118 = param_3;\n  local_114 = param_1;\n  local_110 = param_2;\n  local_10c = uVar9;\n  SHA384_Init(c);\n  SHA512_Bytes(c,pSVar5,uVar6);\n  SHA384_Final((uchar *)c,c_00);\n  (**(code **)(puVar8 + 0x26e70))(c,0xd4);\n  if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }\n  (**(code **)(puVar8 + 0x2733c))();\n  puVar4 = (undefined4 *)((int)&c->u + 0x70);\n  p_Var1 = &c->u;\n  do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));\n  return;\n}" ({ "{") (declaration "_union_320 *p_Var1;" (type_identifier "_union_320") (pointer_declarator "*p_Var1" (* "*") (identifier "p_Var1")) (; ";")) (declaration "ulonglong uVar2;" (type_identifier "ulonglong") (identifier "uVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "SHA512_CTX *c;" (type_identifier "SHA512_CTX") (pointer_declarator "*c" (* "*") (identifier "c")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "SHA512_CTX *pSVar5;" (type_identifier "SHA512_CTX") (pointer_declarator "*pSVar5" (* "*") (identifier "pSVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "SHA512_CTX *c_00;" (type_identifier "SHA512_CTX") (pointer_declarator "*c_00" (* "*") (identifier "c_00")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "SHA512_CTX SStack_1f8;" (type_identifier "SHA512_CTX") (identifier "SStack_1f8") (; ";")) (declaration "SHA512_CTX *local_120;" (type_identifier "SHA512_CTX") (pointer_declarator "*local_120" (* "*") (identifier "local_120")) (; ";")) (declaration "undefined *local_11c;" (type_identifier "undefined") (pointer_declarator "*local_11c" (* "*") (identifier "local_11c")) (; ";")) (declaration "SHA512_CTX *local_118;" (type_identifier "SHA512_CTX") (pointer_declarator "*local_118" (* "*") (identifier "local_118")) (; ";")) (declaration "undefined4 local_114;" (type_identifier "undefined4") (identifier "local_114") (; ";")) (declaration "SHA512_CTX *local_110;" (type_identifier "SHA512_CTX") (pointer_declarator "*local_110" (* "*") (identifier "local_110")) (; ";")) (declaration "undefined4 local_10c;" (type_identifier "undefined4") (identifier "local_10c") (; ";")) (declaration "SHA512_CTX SStack_f0;" (type_identifier "SHA512_CTX") (identifier "SStack_f0") (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_0006f5a8;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0006f5a8" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_0006f5a8")) (; ";")) (expression_statement "SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;" (assignment_expression "SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8" (field_expression "SStack_f0.md_len" (identifier "SStack_f0") (. ".") (field_identifier "md_len")) (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_0006f5a8" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_0006f5a8" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0006f5a8")))) (; ";")) (expression_statement "SHA512_Init(&SStack_f0);" (call_expression "SHA512_Init(&SStack_f0)" (identifier "SHA512_Init") (argument_list "(&SStack_f0)" (( "(") (pointer_expression "&SStack_f0" (& "&") (identifier "SStack_f0")) () ")"))) (; ";")) (expression_statement "c_00 = param_2;" (assignment_expression "c_00 = param_2" (identifier "c_00") (= "=") (identifier "param_2")) (; ";")) (expression_statement "SHA512_Bytes(&SStack_f0,param_1);" (call_expression "SHA512_Bytes(&SStack_f0,param_1)" (identifier "SHA512_Bytes") (argument_list "(&SStack_f0,param_1)" (( "(") (pointer_expression "&SStack_f0" (& "&") (identifier "SStack_f0")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "SHA512_Final((uchar *)&SStack_f0,param_3);" (call_expression "SHA512_Final((uchar *)&SStack_f0,param_3)" (identifier "SHA512_Final") (argument_list "((uchar *)&SStack_f0,param_3)" (( "(") (cast_expression "(uchar *)&SStack_f0" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&SStack_f0" (& "&") (identifier "SStack_f0"))) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar6 = 0xd4;" (assignment_expression "uVar6 = 0xd4" (identifier "uVar6") (= "=") (number_literal "0xd4")) (; ";")) (expression_statement "pSVar5 = &SStack_f0;" (assignment_expression "pSVar5 = &SStack_f0" (identifier "pSVar5") (= "=") (pointer_expression "&SStack_f0" (& "&") (identifier "SStack_f0"))) (; ";")) (expression_statement "(*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);" (call_expression "(*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4)" (parenthesized_expression "(*(code *)PTR_smemclr_0006f0c0)" (( "(") (pointer_expression "*(code *)PTR_smemclr_0006f0c0" (* "*") (cast_expression "(code *)PTR_smemclr_0006f0c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_smemclr_0006f0c0"))) () ")")) (argument_list "(&SStack_f0,0xd4)" (( "(") (pointer_expression "&SStack_f0" (& "&") (identifier "SStack_f0")) (, ",") (number_literal "0xd4") () ")"))) (; ";")) (if_statement "if (SStack_f0.md_len == *(uint *)puVar3) {\n    return;\n  }" (if "if") (parenthesized_expression "(SStack_f0.md_len == *(uint *)puVar3)" (( "(") (binary_expression "SStack_f0.md_len == *(uint *)puVar3" (field_expression "SStack_f0.md_len" (identifier "SStack_f0") (. ".") (field_identifier "md_len")) (== "==") (pointer_expression "*(uint *)puVar3" (* "*") (cast_expression "(uint *)puVar3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar9 = 0x48250;" (assignment_expression "uVar9 = 0x48250" (identifier "uVar9") (= "=") (number_literal "0x48250")) (; ";")) (expression_statement "puVar8 = PTR___stack_chk_fail_0006f58c;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0006f58c" (identifier "puVar8") (= "=") (identifier "PTR___stack_chk_fail_0006f58c")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0006f58c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0006f58c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0006f58c)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0006f58c" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0006f58c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0006f58c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_11c = puVar3;" (assignment_expression "local_11c = puVar3" (identifier "local_11c") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar7 = *(uint **)(puVar8 + 0x27358);" (assignment_expression "puVar7 = *(uint **)(puVar8 + 0x27358)" (identifier "puVar7") (= "=") (pointer_expression "*(uint **)(puVar8 + 0x27358)" (* "*") (cast_expression "(uint **)(puVar8 + 0x27358)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x27358)" (( "(") (binary_expression "puVar8 + 0x27358" (identifier "puVar8") (+ "+") (number_literal "0x27358")) () ")"))))) (; ";")) (expression_statement "SStack_1f8.md_len = *puVar7;" (assignment_expression "SStack_1f8.md_len = *puVar7" (field_expression "SStack_1f8.md_len" (identifier "SStack_1f8") (. ".") (field_identifier "md_len")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "c = &SStack_1f8;" (assignment_expression "c = &SStack_1f8" (identifier "c") (= "=") (pointer_expression "&SStack_1f8" (& "&") (identifier "SStack_1f8"))) (; ";")) (expression_statement "local_120 = &SStack_f0;" (assignment_expression "local_120 = &SStack_f0" (identifier "local_120") (= "=") (pointer_expression "&SStack_f0" (& "&") (identifier "SStack_f0"))) (; ";")) (expression_statement "local_118 = param_3;" (assignment_expression "local_118 = param_3" (identifier "local_118") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_114 = param_1;" (assignment_expression "local_114 = param_1" (identifier "local_114") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_110 = param_2;" (assignment_expression "local_110 = param_2" (identifier "local_110") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_10c = uVar9;" (assignment_expression "local_10c = uVar9" (identifier "local_10c") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "SHA384_Init(c);" (call_expression "SHA384_Init(c)" (identifier "SHA384_Init") (argument_list "(c)" (( "(") (identifier "c") () ")"))) (; ";")) (expression_statement "SHA512_Bytes(c,pSVar5,uVar6);" (call_expression "SHA512_Bytes(c,pSVar5,uVar6)" (identifier "SHA512_Bytes") (argument_list "(c,pSVar5,uVar6)" (( "(") (identifier "c") (, ",") (identifier "pSVar5") (, ",") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "SHA384_Final((uchar *)c,c_00);" (call_expression "SHA384_Final((uchar *)c,c_00)" (identifier "SHA384_Final") (argument_list "((uchar *)c,c_00)" (( "(") (cast_expression "(uchar *)c" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "c")) (, ",") (identifier "c_00") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar8 + 0x26e70))(c,0xd4);" (call_expression "(**(code **)(puVar8 + 0x26e70))(c,0xd4)" (parenthesized_expression "(**(code **)(puVar8 + 0x26e70))" (( "(") (pointer_expression "**(code **)(puVar8 + 0x26e70)" (* "*") (pointer_expression "*(code **)(puVar8 + 0x26e70)" (* "*") (cast_expression "(code **)(puVar8 + 0x26e70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x26e70)" (( "(") (binary_expression "puVar8 + 0x26e70" (identifier "puVar8") (+ "+") (number_literal "0x26e70")) () ")"))))) () ")")) (argument_list "(c,0xd4)" (( "(") (identifier "c") (, ",") (number_literal "0xd4") () ")"))) (; ";")) (if_statement "if (SStack_1f8.md_len == *puVar7) {\n    return;\n  }" (if "if") (parenthesized_expression "(SStack_1f8.md_len == *puVar7)" (( "(") (binary_expression "SStack_1f8.md_len == *puVar7" (field_expression "SStack_1f8.md_len" (identifier "SStack_1f8") (. ".") (field_identifier "md_len")) (== "==") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar8 + 0x2733c))();" (call_expression "(**(code **)(puVar8 + 0x2733c))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2733c))" (( "(") (pointer_expression "**(code **)(puVar8 + 0x2733c)" (* "*") (pointer_expression "*(code **)(puVar8 + 0x2733c)" (* "*") (cast_expression "(code **)(puVar8 + 0x2733c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2733c)" (( "(") (binary_expression "puVar8 + 0x2733c" (identifier "puVar8") (+ "+") (number_literal "0x2733c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (undefined4 *)((int)&c->u + 0x70);" (assignment_expression "puVar4 = (undefined4 *)((int)&c->u + 0x70)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)((int)&c->u + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&c->u + 0x70)" (( "(") (binary_expression "(int)&c->u + 0x70" (cast_expression "(int)&c->u" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&c->u" (& "&") (field_expression "c->u" (identifier "c") (-> "->") (field_identifier "u")))) (+ "+") (number_literal "0x70")) () ")")))) (; ";")) (expression_statement "p_Var1 = &c->u;" (assignment_expression "p_Var1 = &c->u" (identifier "p_Var1") (= "=") (pointer_expression "&c->u" (& "&") (field_expression "c->u" (identifier "c") (-> "->") (field_identifier "u")))) (; ";")) (do_statement "do {\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));" (do "do") (compound_statement "{\n    uVar2 = c->h[0];\n    uVar9 = *(undefined4 *)(c->h + 1);\n    uVar6 = *(undefined4 *)((int)c->h + 0xc);\n    *puVar4 = *(undefined4 *)c->h;\n    puVar4[1] = (int)uVar2;\n    puVar4[2] = uVar9;\n    puVar4[3] = uVar6;\n    c = (SHA512_CTX *)(c->h + 2);\n    puVar4 = puVar4 + 4;\n  }" ({ "{") (expression_statement "uVar2 = c->h[0];" (assignment_expression "uVar2 = c->h[0]" (identifier "uVar2") (= "=") (subscript_expression "c->h[0]" (field_expression "c->h" (identifier "c") (-> "->") (field_identifier "h")) ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uVar9 = *(undefined4 *)(c->h + 1);" (assignment_expression "uVar9 = *(undefined4 *)(c->h + 1)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(c->h + 1)" (* "*") (cast_expression "(undefined4 *)(c->h + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(c->h + 1)" (( "(") (binary_expression "c->h + 1" (field_expression "c->h" (identifier "c") (-> "->") (field_identifier "h")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(undefined4 *)((int)c->h + 0xc);" (assignment_expression "uVar6 = *(undefined4 *)((int)c->h + 0xc)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)((int)c->h + 0xc)" (* "*") (cast_expression "(undefined4 *)((int)c->h + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)c->h + 0xc)" (( "(") (binary_expression "(int)c->h + 0xc" (cast_expression "(int)c->h" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (field_expression "c->h" (identifier "c") (-> "->") (field_identifier "h"))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*puVar4 = *(undefined4 *)c->h;" (assignment_expression "*puVar4 = *(undefined4 *)c->h" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*(undefined4 *)c->h" (* "*") (cast_expression "(undefined4 *)c->h" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (field_expression "c->h" (identifier "c") (-> "->") (field_identifier "h"))))) (; ";")) (expression_statement "puVar4[1] = (int)uVar2;" (assignment_expression "puVar4[1] = (int)uVar2" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2"))) (; ";")) (expression_statement "puVar4[2] = uVar9;" (assignment_expression "puVar4[2] = uVar9" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar4[3] = uVar6;" (assignment_expression "puVar4[3] = uVar6" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "c = (SHA512_CTX *)(c->h + 2);" (assignment_expression "c = (SHA512_CTX *)(c->h + 2)" (identifier "c") (= "=") (cast_expression "(SHA512_CTX *)(c->h + 2)" (( "(") (type_descriptor "SHA512_CTX *" (type_identifier "SHA512_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(c->h + 2)" (( "(") (binary_expression "c->h + 2" (field_expression "c->h" (identifier "c") (-> "->") (field_identifier "h")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "puVar4 = puVar4 + 4;" (assignment_expression "puVar4 = puVar4 + 4" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(c != (SHA512_CTX *)((int)p_Var1 + 0x10))" (( "(") (binary_expression "c != (SHA512_CTX *)((int)p_Var1 + 0x10)" (identifier "c") (!= "!=") (cast_expression "(SHA512_CTX *)((int)p_Var1 + 0x10)" (( "(") (type_descriptor "SHA512_CTX *" (type_identifier "SHA512_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)p_Var1 + 0x10)" (( "(") (binary_expression "(int)p_Var1 + 0x10" (cast_expression "(int)p_Var1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "p_Var1")) (+ "+") (number_literal "0x10")) () ")")))) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(void *p,int len,type_1 *output)

{
  type_2 s;
  
  var_1((type_3 *)&s);
                    /* WARNING: Subroutine does not return */
  var_2(&s,p,len);
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (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: (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: (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: (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: (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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 (pointer_expression argument: (identifier)) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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 (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement))) (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))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (field_expression argument: (identifier) field: (field_identifier)) index: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (field_expression argument: (identifier) field: (field_identifier)))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (return_statement))))

void MASKED(undefined4 param_1,SHA512_CTX *param_2,SHA512_CTX *param_3)

{
  _union_320 *p_Var1;
  ulonglong uVar2;
  undefined *puVar3;
  SHA512_CTX *c;
  undefined4 *puVar4;
  SHA512_CTX *pSVar5;
  undefined4 uVar6;
  SHA512_CTX *c_00;
  uint *puVar7;
  undefined *puVar8;
  undefined4 uVar9;
  SHA512_CTX SStack_1f8;
  SHA512_CTX *local_120;
  undefined *local_11c;
  SHA512_CTX *local_118;
  undefined4 local_114;
  SHA512_CTX *local_110;
  undefined4 local_10c;
  SHA512_CTX SStack_f0;
  
  puVar3 = PTR___stack_chk_guard_0006f5a8;
  SStack_f0.md_len = *(uint *)PTR___stack_chk_guard_0006f5a8;
  SHA512_Init(&SStack_f0);
  c_00 = param_2;
  SHA512_Bytes(&SStack_f0,param_1);
  SHA512_Final((uchar *)&SStack_f0,param_3);
  uVar6 = 0xd4;
  pSVar5 = &SStack_f0;
  (*(code *)PTR_smemclr_0006f0c0)(&SStack_f0,0xd4);
  if (SStack_f0.md_len == *(uint *)puVar3) {
    return;
  }
  uVar9 = 0x48250;
  puVar8 = PTR___stack_chk_fail_0006f58c;
  (*(code *)PTR___stack_chk_fail_0006f58c)();
  local_11c = puVar3;
  puVar7 = *(uint **)(puVar8 + 0x27358);
  SStack_1f8.md_len = *puVar7;
  c = &SStack_1f8;
  local_120 = &SStack_f0;
  local_118 = param_3;
  local_114 = param_1;
  local_110 = param_2;
  local_10c = uVar9;
  SHA384_Init(c);
  SHA512_Bytes(c,pSVar5,uVar6);
  SHA384_Final((uchar *)c,c_00);
  (**(code **)(puVar8 + 0x26e70))(c,0xd4);
  if (SStack_1f8.md_len == *puVar7) {
    return;
  }
  (**(code **)(puVar8 + 0x2733c))();
  puVar4 = (undefined4 *)((int)&c->u + 0x70);
  p_Var1 = &c->u;
  do {
    uVar2 = c->h[0];
    uVar9 = *(undefined4 *)(c->h + 1);
    uVar6 = *(undefined4 *)((int)c->h + 0xc);
    *puVar4 = *(undefined4 *)c->h;
    puVar4[1] = (int)uVar2;
    puVar4[2] = uVar9;
    puVar4[3] = uVar6;
    c = (SHA512_CTX *)(c->h + 2);
    puVar4 = puVar4 + 4;
  } while (c != (SHA512_CTX *)((int)p_Var1 + 0x10));
  return;
}

