
/* WARNING: Unknown calling convention */

int rmd256_test(void)

{
  long lVar1;
  int iVar2;
  size_t inlen;
  int which;
  uchar *should;
  uchar *in;
  long in_FS_OFFSET;
  hash_state md;
  uchar tmp [32];
  
  in = "";
  which = 0;
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  should = rmd256_test::tests[0].hash;
  while( true ) {
    rmd256_init(&md);
    inlen = strlen((char *)in);
    rmd256_process(&md,in,inlen);
    rmd256_done(&md,tmp);
    iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which);
    if (iVar2 != 0) break;
    which = which + 1;
    iVar2 = 0;
    if (which == 6) goto LAB_0014cd15;
    in = *(uchar **)(should + 0x20);
    should = should + 0x28;
  }
  iVar2 = 5;
LAB_0014cd15:
  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



undefined8 rmd256_test(void)

{
  size_t sVar1;
  undefined8 uVar2;
  int iVar3;
  undefined *puVar4;
  char *__s;
  long in_FS_OFFSET;
  undefined1 auStack_208 [416];
  undefined1 local_68 [40];
  long local_40;
  
  __s = "";
  iVar3 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  puVar4 = &DAT_001d7a28;
  while( true ) {
    rmd256_init(auStack_208);
    sVar1 = strlen(__s);
    rmd256_process(auStack_208,__s,sVar1);
    rmd256_done(auStack_208,local_68);
    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);
    if ((int)uVar2 != 0) break;
    iVar3 = iVar3 + 1;
    if (iVar3 == 6) goto LAB_0014cd15;
    __s = *(char **)(puVar4 + 0x20);
    puVar4 = puVar4 + 0x28;
  }
  uVar2 = 5;
LAB_0014cd15:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
LEA R15,[0x1aeb4d]
PUSH R14
PUSH R13
LEA R13,[0x1be9f6]
PUSH R12
PUSH RBP
LEA RBP,[0x1d7a28]
PUSH RBX
XOR EBX,EBX
SUB RSP,0x1d8
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x1c8],RAX
XOR EAX,EAX
MOV R12,RSP
LEA R14,[RSP + 0x1a0]
MOV RDI,R12
CALL 0x00113ee0
MOV RDI,R13
CALL 0x00113800
MOV RSI,R13
MOV RDI,R12
MOV RDX,RAX
CALL 0x001141e0
MOV RSI,R14
MOV RDI,R12
CALL 0x00114930
MOV R9D,EBX
MOV R8,R15
MOV ECX,0x20
MOV RDX,RBP
MOV ESI,0x20
MOV RDI,R14
CALL 0x001143c0
TEST EAX,EAX
JNZ 0x0014cd10
ADD EBX,0x1
ADD RBP,0x28
CMP EBX,0x6
JZ 0x0014cd15
MOV R13,qword ptr [RBP + -0x8]
JMP 0x0014ccb6
MOV EAX,0x5
MOV RCX,qword ptr [RSP + 0x1c8]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x0014cd3a
ADD RSP,0x1d8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00113880
(translation_unit "undefined8 rmd256_test(void)\n\n{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "undefined8 rmd256_test(void)\n\n{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "rmd256_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_208 [416];" type_identifier (array_declarator "auStack_208 [416]" identifier [ number_literal ]) ;) (declaration "undefined1 local_68 [40];" type_identifier (array_declarator "local_68 [40]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "__s = "";" (assignment_expression "__s = """ identifier = (string_literal """" " ")) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 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 "puVar4 = &DAT_001d7a28;" (assignment_expression "puVar4 = &DAT_001d7a28" identifier = (pointer_expression "&DAT_001d7a28" & identifier)) ;) (while_statement "while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }" { (expression_statement "rmd256_init(auStack_208);" (call_expression "rmd256_init(auStack_208)" identifier (argument_list "(auStack_208)" ( identifier ))) ;) (expression_statement "sVar1 = strlen(__s);" (assignment_expression "sVar1 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "rmd256_process(auStack_208,__s,sVar1);" (call_expression "rmd256_process(auStack_208,__s,sVar1)" identifier (argument_list "(auStack_208,__s,sVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "rmd256_done(auStack_208,local_68);" (call_expression "rmd256_done(auStack_208,local_68)" identifier (argument_list "(auStack_208,local_68)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);" (assignment_expression "uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" identifier = (call_expression "compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" identifier (argument_list "(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" ( identifier , number_literal , identifier , number_literal , (string_literal ""RIPEMD256"" " string_content ") , identifier )))) ;) (if_statement "if ((int)uVar2 != 0) break;" if (parenthesized_expression "((int)uVar2 != 0)" ( (binary_expression "(int)uVar2 != 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if (iVar3 == 6) goto LAB_0014cd15;" if (parenthesized_expression "(iVar3 == 6)" ( (binary_expression "iVar3 == 6" identifier == number_literal) )) (goto_statement "goto LAB_0014cd15;" goto statement_identifier ;)) (expression_statement "__s = *(char **)(puVar4 + 0x20);" (assignment_expression "__s = *(char **)(puVar4 + 0x20)" identifier = (pointer_expression "*(char **)(puVar4 + 0x20)" * (cast_expression "(char **)(puVar4 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0x20)" ( (binary_expression "puVar4 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puVar4 + 0x28;" (assignment_expression "puVar4 = puVar4 + 0x28" identifier = (binary_expression "puVar4 + 0x28" identifier + number_literal)) ;) })) (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" identifier = number_literal) ;) (labeled_statement "LAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\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    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint rmd256_test(void)\n\n{\n  long lVar1;\n  int iVar2;\n  size_t inlen;\n  int which;\n  uchar *should;\n  uchar *in;\n  long in_FS_OFFSET;\n  hash_state md;\n  uchar tmp [32];\n  \n  in = "";\n  which = 0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  should = rmd256_test::tests[0].hash;\n  while( true ) {\n    rmd256_init(&md);\n    inlen = strlen((char *)in);\n    rmd256_process(&md,in,inlen);\n    rmd256_done(&md,tmp);\n    iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which);\n    if (iVar2 != 0) break;\n    which = which + 1;\n    iVar2 = 0;\n    if (which == 6) goto LAB_0014cd15;\n    in = *(uchar **)(should + 0x20);\n    should = should + 0x28;\n  }\n  iVar2 = 5;\nLAB_0014cd15:\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment (function_definition "int rmd256_test(void)\n\n{\n  long lVar1;\n  int iVar2;\n  size_t inlen;\n  int which;\n  uchar *should;\n  uchar *in;\n  long in_FS_OFFSET;\n  hash_state md;\n  uchar tmp [32];\n  \n  in = "";\n  which = 0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  should = rmd256_test::tests[0].hash;\n  while( true ) {\n    rmd256_init(&md);\n    inlen = strlen((char *)in);\n    rmd256_process(&md,in,inlen);\n    rmd256_done(&md,tmp);\n    iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which);\n    if (iVar2 != 0) break;\n    which = which + 1;\n    iVar2 = 0;\n    if (which == 6) goto LAB_0014cd15;\n    in = *(uchar **)(should + 0x20);\n    should = should + 0x28;\n  }\n  iVar2 = 5;\nLAB_0014cd15:\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "rmd256_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  size_t inlen;\n  int which;\n  uchar *should;\n  uchar *in;\n  long in_FS_OFFSET;\n  hash_state md;\n  uchar tmp [32];\n  \n  in = "";\n  which = 0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  should = rmd256_test::tests[0].hash;\n  while( true ) {\n    rmd256_init(&md);\n    inlen = strlen((char *)in);\n    rmd256_process(&md,in,inlen);\n    rmd256_done(&md,tmp);\n    iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which);\n    if (iVar2 != 0) break;\n    which = which + 1;\n    iVar2 = 0;\n    if (which == 6) goto LAB_0014cd15;\n    in = *(uchar **)(should + 0x20);\n    should = should + 0x28;\n  }\n  iVar2 = 5;\nLAB_0014cd15:\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "size_t inlen;" primitive_type identifier ;) (declaration "int which;" primitive_type identifier ;) (declaration "uchar *should;" type_identifier (pointer_declarator "*should" * identifier) ;) (declaration "uchar *in;" type_identifier (pointer_declarator "*in" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "hash_state md;" type_identifier identifier ;) (declaration "uchar tmp [32];" type_identifier (array_declarator "tmp [32]" identifier [ number_literal ]) ;) (expression_statement "in = "";" (assignment_expression "in = """ identifier = (string_literal """" " ")) ;) (expression_statement "which = 0;" (assignment_expression "which = 0" identifier = number_literal) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(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 "should = rmd256_test::tests[0].hash;" (field_expression "should = rmd256_test::tests[0].hash" (subscript_expression "should = rmd256_test::tests[0]" (assignment_expression "should = rmd256_test" identifier = identifier) (ERROR "::tests" : : identifier) [ number_literal ]) . field_identifier) ;) (while_statement "while( true ) {\n    rmd256_init(&md);\n    inlen = strlen((char *)in);\n    rmd256_process(&md,in,inlen);\n    rmd256_done(&md,tmp);\n    iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which);\n    if (iVar2 != 0) break;\n    which = which + 1;\n    iVar2 = 0;\n    if (which == 6) goto LAB_0014cd15;\n    in = *(uchar **)(should + 0x20);\n    should = should + 0x28;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    rmd256_init(&md);\n    inlen = strlen((char *)in);\n    rmd256_process(&md,in,inlen);\n    rmd256_done(&md,tmp);\n    iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which);\n    if (iVar2 != 0) break;\n    which = which + 1;\n    iVar2 = 0;\n    if (which == 6) goto LAB_0014cd15;\n    in = *(uchar **)(should + 0x20);\n    should = should + 0x28;\n  }" { (expression_statement "rmd256_init(&md);" (call_expression "rmd256_init(&md)" identifier (argument_list "(&md)" ( (pointer_expression "&md" & identifier) ))) ;) (expression_statement "inlen = strlen((char *)in);" (assignment_expression "inlen = strlen((char *)in)" identifier = (call_expression "strlen((char *)in)" identifier (argument_list "((char *)in)" ( (cast_expression "(char *)in" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "rmd256_process(&md,in,inlen);" (call_expression "rmd256_process(&md,in,inlen)" identifier (argument_list "(&md,in,inlen)" ( (pointer_expression "&md" & identifier) , identifier , identifier ))) ;) (expression_statement "rmd256_done(&md,tmp);" (call_expression "rmd256_done(&md,tmp)" identifier (argument_list "(&md,tmp)" ( (pointer_expression "&md" & identifier) , identifier ))) ;) (expression_statement "iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which);" (assignment_expression "iVar2 = compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which)" identifier = (call_expression "compare_testvector(tmp,0x20,should,0x20,"RIPEMD256",which)" identifier (argument_list "(tmp,0x20,should,0x20,"RIPEMD256",which)" ( identifier , number_literal , identifier , number_literal , (string_literal ""RIPEMD256"" " string_content ") , identifier )))) ;) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "which = which + 1;" (assignment_expression "which = which + 1" identifier = (binary_expression "which + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (which == 6) goto LAB_0014cd15;" if (parenthesized_expression "(which == 6)" ( (binary_expression "which == 6" identifier == number_literal) )) (goto_statement "goto LAB_0014cd15;" goto statement_identifier ;)) (expression_statement "in = *(uchar **)(should + 0x20);" (assignment_expression "in = *(uchar **)(should + 0x20)" identifier = (pointer_expression "*(uchar **)(should + 0x20)" * (cast_expression "(uchar **)(should + 0x20)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(should + 0x20)" ( (binary_expression "should + 0x20" identifier + number_literal) ))))) ;) (expression_statement "should = should + 0x28;" (assignment_expression "should = should + 0x28" identifier = (binary_expression "should + 0x28" identifier + number_literal)) ;) })) (expression_statement "iVar2 = 5;" (assignment_expression "iVar2 = 5" identifier = number_literal) ;) (labeled_statement "LAB_0014cd15:\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }" statement_identifier : (if_statement "if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar2;\n  }" if (parenthesized_expression "(lVar1 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 == *(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 iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined8 rmd256_test(void)\n\n{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "undefined8 rmd256_test(void)\n\n{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (function_declarator "rmd256_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_208 [416];" type_identifier (array_declarator "auStack_208 [416]" identifier [ number_literal ]) ;) (declaration "undefined1 local_68 [40];" type_identifier (array_declarator "local_68 [40]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "__s = "";" (assignment_expression "__s = """ identifier = (string_literal """" " ")) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 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 "puVar4 = &DAT_001d7a28;" (assignment_expression "puVar4 = &DAT_001d7a28" identifier = (pointer_expression "&DAT_001d7a28" & identifier)) ;) (while_statement "while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }" { (expression_statement "rmd256_init(auStack_208);" (call_expression "rmd256_init(auStack_208)" identifier (argument_list "(auStack_208)" ( identifier ))) ;) (expression_statement "sVar1 = strlen(__s);" (assignment_expression "sVar1 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "rmd256_process(auStack_208,__s,sVar1);" (call_expression "rmd256_process(auStack_208,__s,sVar1)" identifier (argument_list "(auStack_208,__s,sVar1)" ( identifier , identifier , identifier ))) ;) (expression_statement "rmd256_done(auStack_208,local_68);" (call_expression "rmd256_done(auStack_208,local_68)" identifier (argument_list "(auStack_208,local_68)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);" (assignment_expression "uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" identifier = (call_expression "compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" identifier (argument_list "(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" ( identifier , number_literal , identifier , number_literal , (string_literal ""RIPEMD256"" " string_content ") , identifier )))) ;) (if_statement "if ((int)uVar2 != 0) break;" if (parenthesized_expression "((int)uVar2 != 0)" ( (binary_expression "(int)uVar2 != 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if (iVar3 == 6) goto LAB_0014cd15;" if (parenthesized_expression "(iVar3 == 6)" ( (binary_expression "iVar3 == 6" identifier == number_literal) )) (goto_statement "goto LAB_0014cd15;" goto statement_identifier ;)) (expression_statement "__s = *(char **)(puVar4 + 0x20);" (assignment_expression "__s = *(char **)(puVar4 + 0x20)" identifier = (pointer_expression "*(char **)(puVar4 + 0x20)" * (cast_expression "(char **)(puVar4 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0x20)" ( (binary_expression "puVar4 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puVar4 + 0x28;" (assignment_expression "puVar4 = puVar4 + 0x28" identifier = (binary_expression "puVar4 + 0x28" identifier + number_literal)) ;) })) (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" identifier = number_literal) ;) (labeled_statement "LAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\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    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) }))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(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 (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) (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 = (pointer_expression & IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (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) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (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 { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined8 rmd256_test(void)\n\n{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "undefined8") (function_declarator "rmd256_test(void)" (identifier "rmd256_test") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  size_t sVar1;\n  undefined8 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  char *__s;\n  long in_FS_OFFSET;\n  undefined1 auStack_208 [416];\n  undefined1 local_68 [40];\n  long local_40;\n  \n  __s = "";\n  iVar3 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  puVar4 = &DAT_001d7a28;\n  while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }\n  uVar2 = 5;\nLAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined1 auStack_208 [416];" (type_identifier "undefined1") (array_declarator "auStack_208 [416]" (identifier "auStack_208") ([ "[") (number_literal "416") (] "]")) (; ";")) (declaration "undefined1 local_68 [40];" (type_identifier "undefined1") (array_declarator "local_68 [40]" (identifier "local_68") ([ "[") (number_literal "40") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "__s = "";" (assignment_expression "__s = """ (identifier "__s") (= "=") (string_literal """" (" """) (" """))) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (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 "puVar4 = &DAT_001d7a28;" (assignment_expression "puVar4 = &DAT_001d7a28" (identifier "puVar4") (= "=") (pointer_expression "&DAT_001d7a28" (& "&") (identifier "DAT_001d7a28"))) (; ";")) (while_statement "while( true ) {\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    rmd256_init(auStack_208);\n    sVar1 = strlen(__s);\n    rmd256_process(auStack_208,__s,sVar1);\n    rmd256_done(auStack_208,local_68);\n    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);\n    if ((int)uVar2 != 0) break;\n    iVar3 = iVar3 + 1;\n    if (iVar3 == 6) goto LAB_0014cd15;\n    __s = *(char **)(puVar4 + 0x20);\n    puVar4 = puVar4 + 0x28;\n  }" ({ "{") (expression_statement "rmd256_init(auStack_208);" (call_expression "rmd256_init(auStack_208)" (identifier "rmd256_init") (argument_list "(auStack_208)" (( "(") (identifier "auStack_208") () ")"))) (; ";")) (expression_statement "sVar1 = strlen(__s);" (assignment_expression "sVar1 = strlen(__s)" (identifier "sVar1") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "rmd256_process(auStack_208,__s,sVar1);" (call_expression "rmd256_process(auStack_208,__s,sVar1)" (identifier "rmd256_process") (argument_list "(auStack_208,__s,sVar1)" (( "(") (identifier "auStack_208") (, ",") (identifier "__s") (, ",") (identifier "sVar1") () ")"))) (; ";")) (expression_statement "rmd256_done(auStack_208,local_68);" (call_expression "rmd256_done(auStack_208,local_68)" (identifier "rmd256_done") (argument_list "(auStack_208,local_68)" (( "(") (identifier "auStack_208") (, ",") (identifier "local_68") () ")"))) (; ";")) (expression_statement "uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);" (assignment_expression "uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" (identifier "uVar2") (= "=") (call_expression "compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" (identifier "compare_testvector") (argument_list "(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3)" (( "(") (identifier "local_68") (, ",") (number_literal "0x20") (, ",") (identifier "puVar4") (, ",") (number_literal "0x20") (, ",") (string_literal ""RIPEMD256"" (" """) (string_content "RIPEMD256") (" """)) (, ",") (identifier "iVar3") () ")")))) (; ";")) (if_statement "if ((int)uVar2 != 0) break;" (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")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar3 == 6) goto LAB_0014cd15;" (if "if") (parenthesized_expression "(iVar3 == 6)" (( "(") (binary_expression "iVar3 == 6" (identifier "iVar3") (== "==") (number_literal "6")) () ")")) (goto_statement "goto LAB_0014cd15;" (goto "goto") (statement_identifier "LAB_0014cd15") (; ";"))) (expression_statement "__s = *(char **)(puVar4 + 0x20);" (assignment_expression "__s = *(char **)(puVar4 + 0x20)" (identifier "__s") (= "=") (pointer_expression "*(char **)(puVar4 + 0x20)" (* "*") (cast_expression "(char **)(puVar4 + 0x20)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + 0x20)" (( "(") (binary_expression "puVar4 + 0x20" (identifier "puVar4") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "puVar4 = puVar4 + 0x28;" (assignment_expression "puVar4 = puVar4 + 0x28" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 0x28" (identifier "puVar4") (+ "+") (number_literal "0x28"))) (; ";")) (} "}"))) (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" (identifier "uVar2") (= "=") (number_literal "5")) (; ";")) (labeled_statement "LAB_0014cd15:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }" (statement_identifier "LAB_0014cd15") (: ":") (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\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    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  long var_10;
  int var_7;
  size_t inlen;
  int var_8;
  type_1 *var_9;
  type_1 *in;
  long var_1;
  type_2 md;
  type_1 tmp [32];
  
  in = "";
  var_8 = 0;
  var_10 = *(long *)(var_1 + 0x28);
  var_9 = function_1::tests[0].hash;
  while( true ) {
    var_2(&md);
    inlen = var_3((char *)in);
    var_4(&md,in,inlen);
    var_5(&md,tmp);
    var_7 = var_6(tmp,0x20,var_9,0x20,"RIPEMD256",var_8);
    if (var_7 != 0) break;
    var_8 = var_8 + 1;
    var_7 = 0;
    if (var_8 == 6) goto LAB_0014cd15;
    in = *(type_1 **)(var_9 + 0x20);
    var_9 = var_9 + 0x28;
  }
  var_7 = 5;
LAB_0014cd15:
  if (var_10 == *(long *)(var_1 + 0x28)) {
    return var_7;
  }
                    /* WARNING: Subroutine does not return */
  var_11();
}


(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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) 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: (string_literal))) (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: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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 (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: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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 (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

undefined8 MASKED(void)

{
  size_t sVar1;
  undefined8 uVar2;
  int iVar3;
  undefined *puVar4;
  char *__s;
  long in_FS_OFFSET;
  undefined1 auStack_208 [416];
  undefined1 local_68 [40];
  long local_40;
  
  __s = "";
  iVar3 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  puVar4 = &DAT_001d7a28;
  while( true ) {
    rmd256_init(auStack_208);
    sVar1 = strlen(__s);
    rmd256_process(auStack_208,__s,sVar1);
    rmd256_done(auStack_208,local_68);
    uVar2 = compare_testvector(local_68,0x20,puVar4,0x20,"RIPEMD256",iVar3);
    if ((int)uVar2 != 0) break;
    iVar3 = iVar3 + 1;
    if (iVar3 == 6) goto LAB_0014cd15;
    __s = *(char **)(puVar4 + 0x20);
    puVar4 = puVar4 + 0x28;
  }
  uVar2 = 5;
LAB_0014cd15:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

