
/* WARNING: Unknown calling convention */

int blake2b_384_test(void)

{
  uchar uVar1;
  long lVar2;
  int iVar3;
  ulong uVar4;
  uchar *in;
  uchar *should;
  uchar *puVar5;
  int iVar6;
  long in_FS_OFFSET;
  byte bVar7;
  hash_state md;
  uchar tmp [48];
  
  bVar7 = 0;
  lVar2 = *(long *)(in_FS_OFFSET + 0x28);
  iVar6 = 0;
  in = "";
  should = blake2b_384_test::tests[0].hash;
  do {
    blake2b_384_init(&md);
    uVar4 = 0xffffffffffffffff;
    puVar5 = in;
    do {
      if (uVar4 == 0) break;
      uVar4 = uVar4 - 1;
      uVar1 = *puVar5;
      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;
    } while (uVar1 != '\0');
    blake2b_process(&md,in,~uVar4 - 1);
    blake2b_done(&md,tmp);
    iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6);
    if (iVar3 != 0) {
      iVar6 = 5;
      goto LAB_00145192;
    }
    iVar6 = iVar6 + 1;
    in = *(uchar **)(should + 0x30);
    should = should + 0x38;
    if (in == (uchar *)0x0) {
      iVar6 = 0;
LAB_00145192:
      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {
        return iVar6;
      }
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
  } while( true );
}



undefined8 blake2b_384_test(void)

{
  char cVar1;
  undefined8 uVar2;
  ulong uVar3;
  char *pcVar4;
  undefined *puVar5;
  char *pcVar6;
  int iVar7;
  long in_FS_OFFSET;
  byte bVar8;
  undefined1 auStack_218 [416];
  undefined1 local_78 [56];
  long local_40;
  
  bVar8 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar7 = 0;
  pcVar4 = "";
  puVar5 = &DAT_001d92a8;
  do {
    blake2b_384_init(auStack_218);
    uVar3 = 0xffffffffffffffff;
    pcVar6 = pcVar4;
    do {
      if (uVar3 == 0) break;
      uVar3 = uVar3 - 1;
      cVar1 = *pcVar6;
      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;
    } while (cVar1 != '\0');
    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);
    blake2b_done(auStack_218,local_78);
    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);
    if ((int)uVar2 != 0) {
      uVar2 = 5;
      goto LAB_00145192;
    }
    iVar7 = iVar7 + 1;
    pcVar4 = *(char **)(puVar5 + 0x30);
    puVar5 = puVar5 + 0x38;
    if (pcVar4 == (char *)0x0) {
LAB_00145192:
      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail();
      }
      return uVar2;
    }
  } while( true );
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x1e8
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x1d8],RAX
XOR EAX,EAX
LEA RBP,[0x1d92a8]
MOV R13D,0x0
LEA RBX,[0x1c18ed]
MOV R12,RSP
MOV R15,-0x1
LEA R14,[RSP + 0x1a0]
MOV RDI,R12
CALL 0x00114d60
MOV RCX,R15
MOV RDI,RBX
MOV EAX,0x0
SCASB.REPNE RDI
NOT RCX
LEA RDX,[RCX + -0x1]
MOV RSI,RBX
MOV RDI,R12
CALL 0x001136b0
MOV RSI,R14
MOV RDI,R12
CALL 0x00113ca0
MOV R9D,R13D
LEA R8,[0x1b14d8]
MOV ECX,0x30
MOV RDX,RBP
MOV ESI,0x30
MOV RDI,R14
CALL 0x001143b0
TEST EAX,EAX
JNZ 0x0014518d
ADD R13D,0x1
ADD RBP,0x38
MOV RBX,qword ptr [RBP + -0x8]
TEST RBX,RBX
JNZ 0x00145125
JMP 0x00145192
MOV EAX,0x5
MOV RSI,qword ptr [RSP + 0x1d8]
XOR RSI,qword ptr FS:[0x28]
JNZ 0x001451b7
ADD RSP,0x1e8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00113870
(translation_unit "undefined8 blake2b_384_test(void)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}\n\n" (function_definition "undefined8 blake2b_384_test(void)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}" type_identifier (function_declarator "blake2b_384_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined1 auStack_218 [416];" type_identifier (array_declarator "auStack_218 [416]" identifier [ number_literal ]) ;) (declaration "undefined1 local_78 [56];" type_identifier (array_declarator "local_78 [56]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "pcVar4 = "";" (assignment_expression "pcVar4 = """ identifier = (string_literal """" " ")) ;) (expression_statement "puVar5 = &DAT_001d92a8;" (assignment_expression "puVar5 = &DAT_001d92a8" identifier = (pointer_expression "&DAT_001d92a8" & identifier)) ;) (do_statement "do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );" do (compound_statement "{\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  }" { (expression_statement "blake2b_384_init(auStack_218);" (call_expression "blake2b_384_init(auStack_218)" identifier (argument_list "(auStack_218)" ( identifier ))) ;) (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar6 = pcVar4;" (assignment_expression "pcVar6 = pcVar4" identifier = identifier) ;) (do_statement "do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    }" { (if_statement "if (uVar3 == 0) break;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (expression_statement "pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1" identifier = (binary_expression "pcVar6 + (ulong)bVar8 * -2 + 1" (binary_expression "pcVar6 + (ulong)bVar8 * -2" identifier + (binary_expression "(ulong)bVar8 * -2" (cast_expression "(ulong)bVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "blake2b_process(auStack_218,pcVar4,~uVar3 - 1);" (call_expression "blake2b_process(auStack_218,pcVar4,~uVar3 - 1)" identifier (argument_list "(auStack_218,pcVar4,~uVar3 - 1)" ( identifier , identifier , (binary_expression "~uVar3 - 1" (unary_expression "~uVar3" ~ identifier) - number_literal) ))) ;) (expression_statement "blake2b_done(auStack_218,local_78);" (call_expression "blake2b_done(auStack_218,local_78)" identifier (argument_list "(auStack_218,local_78)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);" (assignment_expression "uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" identifier = (call_expression "compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" identifier (argument_list "(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" ( identifier , number_literal , identifier , number_literal , (string_literal ""BLAKE2B_384"" " string_content ") , identifier )))) ;) (if_statement "if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }" if (parenthesized_expression "((int)uVar2 != 0)" ( (binary_expression "(int)uVar2 != 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n      uVar2 = 5;\n      goto LAB_00145192;\n    }" { (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_00145192;" goto statement_identifier ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pcVar4 = *(char **)(puVar5 + 0x30);" (assignment_expression "pcVar4 = *(char **)(puVar5 + 0x30)" identifier = (pointer_expression "*(char **)(puVar5 + 0x30)" * (cast_expression "(char **)(puVar5 + 0x30)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x30)" ( (binary_expression "puVar5 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = puVar5 + 0x38;" (assignment_expression "puVar5 = puVar5 + 0x38" identifier = (binary_expression "puVar5 + 0x38" identifier + number_literal)) ;) (if_statement "if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return uVar2;\n    }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }\n      return uVar2;\n    }" { (labeled_statement "LAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __stack_chk_fail();\n      }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar2;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint blake2b_384_test(void)\n\n{\n  uchar uVar1;\n  long lVar2;\n  int iVar3;\n  ulong uVar4;\n  uchar *in;\n  uchar *should;\n  uchar *puVar5;\n  int iVar6;\n  long in_FS_OFFSET;\n  byte bVar7;\n  hash_state md;\n  uchar tmp [48];\n  \n  bVar7 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar6 = 0;\n  in = "";\n  should = blake2b_384_test::tests[0].hash;\n  do {\n    blake2b_384_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar5 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar5;\n      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6);\n    if (iVar3 != 0) {\n      iVar6 = 5;\n      goto LAB_00145192;\n    }\n    iVar6 = iVar6 + 1;\n    in = *(uchar **)(should + 0x30);\n    should = should + 0x38;\n    if (in == (uchar *)0x0) {\n      iVar6 = 0;\nLAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );\n}\n\n" comment (function_definition "int blake2b_384_test(void)\n\n{\n  uchar uVar1;\n  long lVar2;\n  int iVar3;\n  ulong uVar4;\n  uchar *in;\n  uchar *should;\n  uchar *puVar5;\n  int iVar6;\n  long in_FS_OFFSET;\n  byte bVar7;\n  hash_state md;\n  uchar tmp [48];\n  \n  bVar7 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar6 = 0;\n  in = "";\n  should = blake2b_384_test::tests[0].hash;\n  do {\n    blake2b_384_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar5 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar5;\n      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6);\n    if (iVar3 != 0) {\n      iVar6 = 5;\n      goto LAB_00145192;\n    }\n    iVar6 = iVar6 + 1;\n    in = *(uchar **)(should + 0x30);\n    should = should + 0x38;\n    if (in == (uchar *)0x0) {\n      iVar6 = 0;\nLAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );\n}" primitive_type (function_declarator "blake2b_384_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uchar uVar1;\n  long lVar2;\n  int iVar3;\n  ulong uVar4;\n  uchar *in;\n  uchar *should;\n  uchar *puVar5;\n  int iVar6;\n  long in_FS_OFFSET;\n  byte bVar7;\n  hash_state md;\n  uchar tmp [48];\n  \n  bVar7 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar6 = 0;\n  in = "";\n  should = blake2b_384_test::tests[0].hash;\n  do {\n    blake2b_384_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar5 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar5;\n      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6);\n    if (iVar3 != 0) {\n      iVar6 = 5;\n      goto LAB_00145192;\n    }\n    iVar6 = iVar6 + 1;\n    in = *(uchar **)(should + 0x30);\n    should = should + 0x38;\n    if (in == (uchar *)0x0) {\n      iVar6 = 0;\nLAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uchar *in;" type_identifier (pointer_declarator "*in" * identifier) ;) (declaration "uchar *should;" type_identifier (pointer_declarator "*should" * identifier) ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "hash_state md;" type_identifier identifier ;) (declaration "uchar tmp [48];" type_identifier (array_declarator "tmp [48]" identifier [ number_literal ]) ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar2 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "in = "";" (assignment_expression "in = """ identifier = (string_literal """" " ")) ;) (expression_statement "should = blake2b_384_test::tests[0].hash;" (field_expression "should = blake2b_384_test::tests[0].hash" (subscript_expression "should = blake2b_384_test::tests[0]" (assignment_expression "should = blake2b_384_test" identifier = identifier) (ERROR "::tests" : : identifier) [ number_literal ]) . field_identifier) ;) (do_statement "do {\n    blake2b_384_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar5 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar5;\n      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6);\n    if (iVar3 != 0) {\n      iVar6 = 5;\n      goto LAB_00145192;\n    }\n    iVar6 = iVar6 + 1;\n    in = *(uchar **)(should + 0x30);\n    should = should + 0x38;\n    if (in == (uchar *)0x0) {\n      iVar6 = 0;\nLAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  } while( true );" do (compound_statement "{\n    blake2b_384_init(&md);\n    uVar4 = 0xffffffffffffffff;\n    puVar5 = in;\n    do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar5;\n      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;\n    } while (uVar1 != '\0');\n    blake2b_process(&md,in,~uVar4 - 1);\n    blake2b_done(&md,tmp);\n    iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6);\n    if (iVar3 != 0) {\n      iVar6 = 5;\n      goto LAB_00145192;\n    }\n    iVar6 = iVar6 + 1;\n    in = *(uchar **)(should + 0x30);\n    should = should + 0x38;\n    if (in == (uchar *)0x0) {\n      iVar6 = 0;\nLAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n  }" { (expression_statement "blake2b_384_init(&md);" (call_expression "blake2b_384_init(&md)" identifier (argument_list "(&md)" ( (pointer_expression "&md" & identifier) ))) ;) (expression_statement "uVar4 = 0xffffffffffffffff;" (assignment_expression "uVar4 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "puVar5 = in;" (assignment_expression "puVar5 = in" identifier = identifier) ;) (do_statement "do {\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar5;\n      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;\n    } while (uVar1 != '\0');" do (compound_statement "{\n      if (uVar4 == 0) break;\n      uVar4 = uVar4 - 1;\n      uVar1 = *puVar5;\n      puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;\n    }" { (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + (ulong)bVar7 * -2 + 1;" (assignment_expression "puVar5 = puVar5 + (ulong)bVar7 * -2 + 1" identifier = (binary_expression "puVar5 + (ulong)bVar7 * -2 + 1" (binary_expression "puVar5 + (ulong)bVar7 * -2" identifier + (binary_expression "(ulong)bVar7 * -2" (cast_expression "(ulong)bVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != '\0')" ( (binary_expression "uVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "blake2b_process(&md,in,~uVar4 - 1);" (call_expression "blake2b_process(&md,in,~uVar4 - 1)" identifier (argument_list "(&md,in,~uVar4 - 1)" ( (pointer_expression "&md" & identifier) , identifier , (binary_expression "~uVar4 - 1" (unary_expression "~uVar4" ~ identifier) - number_literal) ))) ;) (expression_statement "blake2b_done(&md,tmp);" (call_expression "blake2b_done(&md,tmp)" identifier (argument_list "(&md,tmp)" ( (pointer_expression "&md" & identifier) , identifier ))) ;) (expression_statement "iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6);" (assignment_expression "iVar3 = compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6)" identifier = (call_expression "compare_testvector(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6)" identifier (argument_list "(tmp,0x30,should,0x30,"BLAKE2B_384",iVar6)" ( identifier , number_literal , identifier , number_literal , (string_literal ""BLAKE2B_384"" " string_content ") , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n      iVar6 = 5;\n      goto LAB_00145192;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 5;\n      goto LAB_00145192;\n    }" { (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_00145192;" goto statement_identifier ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "in = *(uchar **)(should + 0x30);" (assignment_expression "in = *(uchar **)(should + 0x30)" identifier = (pointer_expression "*(uchar **)(should + 0x30)" * (cast_expression "(uchar **)(should + 0x30)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(should + 0x30)" ( (binary_expression "should + 0x30" identifier + number_literal) ))))) ;) (expression_statement "should = should + 0x38;" (assignment_expression "should = should + 0x38" identifier = (binary_expression "should + 0x38" identifier + number_literal)) ;) (if_statement "if (in == (uchar *)0x0) {\n      iVar6 = 0;\nLAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" if (parenthesized_expression "(in == (uchar *)0x0)" ( (binary_expression "in == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar6 = 0;\nLAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00145192:\n      if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }" statement_identifier : (if_statement "if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return iVar6;\n      }" if (parenthesized_expression "(lVar2 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar2 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n        return iVar6;\n      }" { (return_statement "return iVar6;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "undefined8 blake2b_384_test(void)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}\n\n" (function_definition "undefined8 blake2b_384_test(void)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}" type_identifier (function_declarator "blake2b_384_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined1 auStack_218 [416];" type_identifier (array_declarator "auStack_218 [416]" identifier [ number_literal ]) ;) (declaration "undefined1 local_78 [56];" type_identifier (array_declarator "local_78 [56]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "pcVar4 = "";" (assignment_expression "pcVar4 = """ identifier = (string_literal """" " ")) ;) (expression_statement "puVar5 = &DAT_001d92a8;" (assignment_expression "puVar5 = &DAT_001d92a8" identifier = (pointer_expression "&DAT_001d92a8" & identifier)) ;) (do_statement "do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );" do (compound_statement "{\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  }" { (expression_statement "blake2b_384_init(auStack_218);" (call_expression "blake2b_384_init(auStack_218)" identifier (argument_list "(auStack_218)" ( identifier ))) ;) (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar6 = pcVar4;" (assignment_expression "pcVar6 = pcVar4" identifier = identifier) ;) (do_statement "do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    }" { (if_statement "if (uVar3 == 0) break;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (expression_statement "pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1" identifier = (binary_expression "pcVar6 + (ulong)bVar8 * -2 + 1" (binary_expression "pcVar6 + (ulong)bVar8 * -2" identifier + (binary_expression "(ulong)bVar8 * -2" (cast_expression "(ulong)bVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "blake2b_process(auStack_218,pcVar4,~uVar3 - 1);" (call_expression "blake2b_process(auStack_218,pcVar4,~uVar3 - 1)" identifier (argument_list "(auStack_218,pcVar4,~uVar3 - 1)" ( identifier , identifier , (binary_expression "~uVar3 - 1" (unary_expression "~uVar3" ~ identifier) - number_literal) ))) ;) (expression_statement "blake2b_done(auStack_218,local_78);" (call_expression "blake2b_done(auStack_218,local_78)" identifier (argument_list "(auStack_218,local_78)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);" (assignment_expression "uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" identifier = (call_expression "compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" identifier (argument_list "(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" ( identifier , number_literal , identifier , number_literal , (string_literal ""BLAKE2B_384"" " string_content ") , identifier )))) ;) (if_statement "if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }" if (parenthesized_expression "((int)uVar2 != 0)" ( (binary_expression "(int)uVar2 != 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n      uVar2 = 5;\n      goto LAB_00145192;\n    }" { (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_00145192;" goto statement_identifier ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pcVar4 = *(char **)(puVar5 + 0x30);" (assignment_expression "pcVar4 = *(char **)(puVar5 + 0x30)" identifier = (pointer_expression "*(char **)(puVar5 + 0x30)" * (cast_expression "(char **)(puVar5 + 0x30)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x30)" ( (binary_expression "puVar5 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = puVar5 + 0x38;" (assignment_expression "puVar5 = puVar5 + 0x38" identifier = (binary_expression "puVar5 + 0x38" identifier + number_literal)) ;) (if_statement "if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }" { (labeled_statement "LAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n        __stack_chk_fail();\n      }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar2;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE 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 (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (unary_expression ~ IDENT) - LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , LIT , (string_literal " string_content ") , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "undefined8 blake2b_384_test(void)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}" (type_identifier "undefined8") (function_declarator "blake2b_384_test(void)" (identifier "blake2b_384_test") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  char *pcVar4;\n  undefined *puVar5;\n  char *pcVar6;\n  int iVar7;\n  long in_FS_OFFSET;\n  byte bVar8;\n  undefined1 auStack_218 [416];\n  undefined1 local_78 [56];\n  long local_40;\n  \n  bVar8 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar7 = 0;\n  pcVar4 = "";\n  puVar5 = &DAT_001d92a8;\n  do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined1 auStack_218 [416];" (type_identifier "undefined1") (array_declarator "auStack_218 [416]" (identifier "auStack_218") ([ "[") (number_literal "416") (] "]")) (; ";")) (declaration "undefined1 local_78 [56];" (type_identifier "undefined1") (array_declarator "local_78 [56]" (identifier "local_78") ([ "[") (number_literal "56") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar4 = "";" (assignment_expression "pcVar4 = """ (identifier "pcVar4") (= "=") (string_literal """" (" """) (" """))) (; ";")) (expression_statement "puVar5 = &DAT_001d92a8;" (assignment_expression "puVar5 = &DAT_001d92a8" (identifier "puVar5") (= "=") (pointer_expression "&DAT_001d92a8" (& "&") (identifier "DAT_001d92a8"))) (; ";")) (do_statement "do {\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    blake2b_384_init(auStack_218);\n    uVar3 = 0xffffffffffffffff;\n    pcVar6 = pcVar4;\n    do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');\n    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);\n    blake2b_done(auStack_218,local_78);\n    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);\n    if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }\n    iVar7 = iVar7 + 1;\n    pcVar4 = *(char **)(puVar5 + 0x30);\n    puVar5 = puVar5 + 0x38;\n    if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }\n  }" ({ "{") (expression_statement "blake2b_384_init(auStack_218);" (call_expression "blake2b_384_init(auStack_218)" (identifier "blake2b_384_init") (argument_list "(auStack_218)" (( "(") (identifier "auStack_218") () ")"))) (; ";")) (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" (identifier "uVar3") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar6 = pcVar4;" (assignment_expression "pcVar6 = pcVar4" (identifier "pcVar6") (= "=") (identifier "pcVar4")) (; ";")) (do_statement "do {\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (uVar3 == 0) break;\n      uVar3 = uVar3 - 1;\n      cVar1 = *pcVar6;\n      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;\n    }" ({ "{") (if_statement "if (uVar3 == 0) break;" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" (identifier "cVar1") (= "=") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (; ";")) (expression_statement "pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + (ulong)bVar8 * -2 + 1" (binary_expression "pcVar6 + (ulong)bVar8 * -2" (identifier "pcVar6") (+ "+") (binary_expression "(ulong)bVar8 * -2" (cast_expression "(ulong)bVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "blake2b_process(auStack_218,pcVar4,~uVar3 - 1);" (call_expression "blake2b_process(auStack_218,pcVar4,~uVar3 - 1)" (identifier "blake2b_process") (argument_list "(auStack_218,pcVar4,~uVar3 - 1)" (( "(") (identifier "auStack_218") (, ",") (identifier "pcVar4") (, ",") (binary_expression "~uVar3 - 1" (unary_expression "~uVar3" (~ "~") (identifier "uVar3")) (- "-") (number_literal "1")) () ")"))) (; ";")) (expression_statement "blake2b_done(auStack_218,local_78);" (call_expression "blake2b_done(auStack_218,local_78)" (identifier "blake2b_done") (argument_list "(auStack_218,local_78)" (( "(") (identifier "auStack_218") (, ",") (identifier "local_78") () ")"))) (; ";")) (expression_statement "uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);" (assignment_expression "uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" (identifier "uVar2") (= "=") (call_expression "compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" (identifier "compare_testvector") (argument_list "(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7)" (( "(") (identifier "local_78") (, ",") (number_literal "0x30") (, ",") (identifier "puVar5") (, ",") (number_literal "0x30") (, ",") (string_literal ""BLAKE2B_384"" (" """) (string_content "BLAKE2B_384") (" """)) (, ",") (identifier "iVar7") () ")")))) (; ";")) (if_statement "if ((int)uVar2 != 0) {\n      uVar2 = 5;\n      goto LAB_00145192;\n    }" (if "if") (parenthesized_expression "((int)uVar2 != 0)" (( "(") (binary_expression "(int)uVar2 != 0" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = 5;\n      goto LAB_00145192;\n    }" ({ "{") (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" (identifier "uVar2") (= "=") (number_literal "5")) (; ";")) (goto_statement "goto LAB_00145192;" (goto "goto") (statement_identifier "LAB_00145192") (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar4 = *(char **)(puVar5 + 0x30);" (assignment_expression "pcVar4 = *(char **)(puVar5 + 0x30)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(puVar5 + 0x30)" (* "*") (cast_expression "(char **)(puVar5 + 0x30)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 0x30)" (( "(") (binary_expression "puVar5 + 0x30" (identifier "puVar5") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "puVar5 = puVar5 + 0x38;" (assignment_expression "puVar5 = puVar5 + 0x38" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 0x38" (identifier "puVar5") (+ "+") (number_literal "0x38"))) (; ";")) (if_statement "if (pcVar4 == (char *)0x0) {\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }" (if "if") (parenthesized_expression "(pcVar4 == (char *)0x0)" (( "(") (binary_expression "pcVar4 == (char *)0x0" (identifier "pcVar4") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }\n      return uVar2;\n    }" ({ "{") (labeled_statement "LAB_00145192:\n      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" (statement_identifier "LAB_00145192") (: ":") (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n        __stack_chk_fail();\n      }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n        __stack_chk_fail();\n      }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  type_1 var_5;
  long var_13;
  int var_9;
  type_2 var_3;
  type_1 *var_12;
  type_1 *var_11;
  type_1 *var_4;
  int var_10;
  long var_1;
  type_3 bVar7;
  type_4 md;
  type_1 tmp [48];
  
  bVar7 = 0;
  var_13 = *(long *)(var_1 + 0x28);
  var_10 = 0;
  var_12 = "";
  var_11 = function_1::tests[0].hash;
  do {
    var_2(&md);
    var_3 = 0xffffffffffffffff;
    var_4 = var_12;
    do {
      if (var_3 == 0) break;
      var_3 = var_3 - 1;
      var_5 = *var_4;
      var_4 = var_4 + (type_2)bVar7 * -2 + 1;
    } while (var_5 != '\0');
    var_6(&md,var_12,~var_3 - 1);
    var_7(&md,tmp);
    var_9 = var_8(tmp,0x30,var_11,0x30,"BLAKE2B_384",var_10);
    if (var_9 != 0) {
      var_10 = 5;
      goto LAB_00145192;
    }
    var_10 = var_10 + 1;
    var_12 = *(type_1 **)(var_11 + 0x30);
    var_11 = var_11 + 0x38;
    if (var_12 == (type_1 *)0x0) {
      var_10 = 0;
LAB_00145192:
      if (var_13 == *(long *)(var_1 + 0x28)) {
        return var_10;
      }
                    /* WARNING: Subroutine does not return */
      var_14();
    }
  } while( true );
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (string_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (number_literal) (string_literal (string_content)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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 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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier))))) condition: (parenthesized_expression (true))))))

undefined8 MASKED(void)

{
  char cVar1;
  undefined8 uVar2;
  ulong uVar3;
  char *pcVar4;
  undefined *puVar5;
  char *pcVar6;
  int iVar7;
  long in_FS_OFFSET;
  byte bVar8;
  undefined1 auStack_218 [416];
  undefined1 local_78 [56];
  long local_40;
  
  bVar8 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar7 = 0;
  pcVar4 = "";
  puVar5 = &DAT_001d92a8;
  do {
    blake2b_384_init(auStack_218);
    uVar3 = 0xffffffffffffffff;
    pcVar6 = pcVar4;
    do {
      if (uVar3 == 0) break;
      uVar3 = uVar3 - 1;
      cVar1 = *pcVar6;
      pcVar6 = pcVar6 + (ulong)bVar8 * -2 + 1;
    } while (cVar1 != '\0');
    blake2b_process(auStack_218,pcVar4,~uVar3 - 1);
    blake2b_done(auStack_218,local_78);
    uVar2 = compare_testvector(local_78,0x30,puVar5,0x30,"BLAKE2B_384",iVar7);
    if ((int)uVar2 != 0) {
      uVar2 = 5;
      goto LAB_00145192;
    }
    iVar7 = iVar7 + 1;
    pcVar4 = *(char **)(puVar5 + 0x30);
    puVar5 = puVar5 + 0x38;
    if (pcVar4 == (char *)0x0) {
LAB_00145192:
      if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
        __stack_chk_fail();
      }
      return uVar2;
    }
  } while( true );
}

