
int blake2smac_memory(uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *mac,ulong *maclen)

{
  int iVar1;
  long in_FS_OFFSET;
  blake2smac_state st;
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  if (key == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);
  }
  if (in == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);
  }
  if (mac == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);
  }
  if (maclen != (ulong *)0x0) {
    iVar1 = blake2smac_init(&st,*maclen,key,keylen);
    if (iVar1 == 0) {
      iVar1 = blake2smac_process(&st,in,inlen);
      if (iVar1 == 0) {
        iVar1 = blake2smac_done(&st,mac,maclen);
      }
    }
    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
      return iVar1;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20);
}



void blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,
                      undefined8 *param_6)

{
  int iVar1;
  long in_FS_OFFSET;
  undefined1 auStack_1d8 [424];
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);
  }
  if (param_5 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);
  }
  if (param_6 != (undefined8 *)0x0) {
    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);
    if (iVar1 == 0) {
      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);
      if (iVar1 == 0) {
        blake2smac_done(auStack_1d8,param_5,param_6);
      }
    }
    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
      return;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x1b8
MOV R13,RCX
MOV RCX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x1a8],RCX
XOR ECX,ECX
TEST RDI,RDI
JZ 0x0015a13c
MOV RAX,RDI
MOV RBP,RDX
MOV R12,R8
MOV RBX,R9
TEST RDX,RDX
JZ 0x0015a154
TEST R8,R8
JZ 0x0015a16c
TEST R9,R9
JZ 0x0015a184
MOV RDI,RSP
MOV RCX,RSI
MOV RDX,RAX
MOV RSI,qword ptr [R9]
CALL 0x00114230
TEST EAX,EAX
JZ 0x0015a19c
MOV RDX,qword ptr [RSP + 0x1a8]
XOR RDX,qword ptr FS:[0x28]
JNZ 0x0015a1c5
ADD RSP,0x1b8
POP RBX
POP RBP
POP R12
POP R13
RET
MOV EDX,0x1d
LEA RSI,[0x1bc8c8]
LEA RDI,[0x1c8f9d]
CALL 0x00114260
MOV EDX,0x1e
LEA RSI,[0x1bc8c8]
LEA RDI,[0x1ab710]
CALL 0x00114260
MOV EDX,0x1f
LEA RSI,[0x1bc8c8]
LEA RDI,[0x1beb2a]
CALL 0x00114260
MOV EDX,0x20
LEA RSI,[0x1bc8c8]
LEA RDI,[0x1b877c]
CALL 0x00114260
MOV RDI,RSP
MOV RDX,R13
MOV RSI,RBP
CALL 0x00113110
TEST EAX,EAX
JNZ 0x0015a117
MOV RDI,RSP
MOV RDX,RBX
MOV RSI,R12
CALL 0x001133c0
JMP 0x0015a117
CALL 0x00113870
(translation_unit "void blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)\n\n{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}\n\n" (function_definition "void blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)\n\n{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}" primitive_type (function_declarator "blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_1d8 [424];" type_identifier (array_declarator "auStack_1d8 [424]" identifier [ number_literal ]) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(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) ))))) ;) (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }" { comment (expression_statement "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);" (call_expression "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0)" identifier (argument_list "("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0)" ( (string_literal ""key != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);" (call_expression "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0)" identifier (argument_list "("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })) (if_statement "if (param_5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }" { comment (expression_statement "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);" (call_expression "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0)" identifier (argument_list "("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0)" ( (string_literal ""mac != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })) (if_statement "if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(param_6 != (undefined8 *)0x0)" ( (binary_expression "param_6 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { (expression_statement "iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);" (assignment_expression "iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2)" identifier = (call_expression "blake2smac_init(auStack_1d8,*param_6,param_1,param_2)" identifier (argument_list "(auStack_1d8,*param_6,param_1,param_2)" ( identifier , (pointer_expression "*param_6" * identifier) , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }" { (expression_statement "iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);" (assignment_expression "iVar1 = blake2smac_process(auStack_1d8,param_3,param_4)" identifier = (call_expression "blake2smac_process(auStack_1d8,param_3,param_4)" identifier (argument_list "(auStack_1d8,param_3,param_4)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }" { (expression_statement "blake2smac_done(auStack_1d8,param_5,param_6);" (call_expression "blake2smac_done(auStack_1d8,param_5,param_6)" identifier (argument_list "(auStack_1d8,param_5,param_6)" ( identifier , identifier , identifier ))) ;) })) })) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }" if (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 == *(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;\n    }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);" (call_expression "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0)" identifier (argument_list "("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0)" ( (string_literal ""maclen != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })))
(translation_unit "int blake2smac_memory(uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *mac,ulong *maclen)\n\n{\n  int iVar1;\n  long in_FS_OFFSET;\n  blake2smac_state st;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);\n  }\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);\n  }\n  if (mac == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);\n  }\n  if (maclen != (ulong *)0x0) {\n    iVar1 = blake2smac_init(&st,*maclen,key,keylen);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(&st,in,inlen);\n      if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return iVar1;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20);\n}\n\n" (function_definition "int blake2smac_memory(uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *mac,ulong *maclen)\n\n{\n  int iVar1;\n  long in_FS_OFFSET;\n  blake2smac_state st;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);\n  }\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);\n  }\n  if (mac == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);\n  }\n  if (maclen != (ulong *)0x0) {\n    iVar1 = blake2smac_init(&st,*maclen,key,keylen);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(&st,in,inlen);\n      if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return iVar1;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20);\n}" primitive_type (function_declarator "blake2smac_memory(uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *mac,ulong *maclen)" identifier (parameter_list "(uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *mac,ulong *maclen)" ( (parameter_declaration "uchar *key" type_identifier (pointer_declarator "*key" * identifier)) , (parameter_declaration "ulong keylen" type_identifier identifier) , (parameter_declaration "uchar *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "ulong inlen" type_identifier identifier) , (parameter_declaration "uchar *mac" type_identifier (pointer_declarator "*mac" * identifier)) , (parameter_declaration "ulong *maclen" type_identifier (pointer_declarator "*maclen" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long in_FS_OFFSET;\n  blake2smac_state st;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);\n  }\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);\n  }\n  if (mac == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);\n  }\n  if (maclen != (ulong *)0x0) {\n    iVar1 = blake2smac_init(&st,*maclen,key,keylen);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(&st,in,inlen);\n      if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return iVar1;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "blake2smac_state st;" type_identifier identifier ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(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) ))))) ;) (if_statement "if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);\n  }" if (parenthesized_expression "(key == (uchar *)0x0)" ( (binary_expression "key == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);\n  }" { comment (expression_statement "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);" (call_expression "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d)" identifier (argument_list "("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d)" ( (string_literal ""key != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);\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                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);" (call_expression "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e)" identifier (argument_list "("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (mac == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);\n  }" if (parenthesized_expression "(mac == (uchar *)0x0)" ( (binary_expression "mac == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);\n  }" { comment (expression_statement "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);" (call_expression "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f)" identifier (argument_list "("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f)" ( (string_literal ""mac != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (maclen != (ulong *)0x0) {\n    iVar1 = blake2smac_init(&st,*maclen,key,keylen);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(&st,in,inlen);\n      if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return iVar1;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(maclen != (ulong *)0x0)" ( (binary_expression "maclen != (ulong *)0x0" identifier != (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar1 = blake2smac_init(&st,*maclen,key,keylen);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(&st,in,inlen);\n      if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return iVar1;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { (expression_statement "iVar1 = blake2smac_init(&st,*maclen,key,keylen);" (assignment_expression "iVar1 = blake2smac_init(&st,*maclen,key,keylen)" identifier = (call_expression "blake2smac_init(&st,*maclen,key,keylen)" identifier (argument_list "(&st,*maclen,key,keylen)" ( (pointer_expression "&st" & identifier) , (pointer_expression "*maclen" * identifier) , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = blake2smac_process(&st,in,inlen);\n      if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = blake2smac_process(&st,in,inlen);\n      if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }\n    }" { (expression_statement "iVar1 = blake2smac_process(&st,in,inlen);" (assignment_expression "iVar1 = blake2smac_process(&st,in,inlen)" identifier = (call_expression "blake2smac_process(&st,in,inlen)" identifier (argument_list "(&st,in,inlen)" ( (pointer_expression "&st" & identifier) , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = blake2smac_done(&st,mac,maclen);\n      }" { (expression_statement "iVar1 = blake2smac_done(&st,mac,maclen);" (assignment_expression "iVar1 = blake2smac_done(&st,mac,maclen)" identifier = (call_expression "blake2smac_done(&st,mac,maclen)" identifier (argument_list "(&st,mac,maclen)" ( (pointer_expression "&st" & identifier) , identifier , identifier )))) ;) })) })) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return iVar1;\n    }" if (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 == *(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 iVar1;\n    }" { (return_statement "return iVar1;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20);" (call_expression "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20)" identifier (argument_list "("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20)" ( (string_literal ""maclen != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "void blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)\n\n{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}\n\n" (function_definition "void blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)\n\n{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}" primitive_type (function_declarator "blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_1d8 [424];" type_identifier (array_declarator "auStack_1d8 [424]" identifier [ number_literal ]) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(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) ))))) ;) (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }" { (expression_statement "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);" (call_expression "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0)" identifier (argument_list "("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0)" ( (string_literal ""key != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }" { (expression_statement "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);" (call_expression "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0)" identifier (argument_list "("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })) (if_statement "if (param_5 == 0) {\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }" { (expression_statement "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);" (call_expression "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0)" identifier (argument_list "("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0)" ( (string_literal ""mac != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })) (if_statement "if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(param_6 != (undefined8 *)0x0)" ( (binary_expression "param_6 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);" (assignment_expression "iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2)" identifier = (call_expression "blake2smac_init(auStack_1d8,*param_6,param_1,param_2)" identifier (argument_list "(auStack_1d8,*param_6,param_1,param_2)" ( identifier , (pointer_expression "*param_6" * identifier) , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }" { (expression_statement "iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);" (assignment_expression "iVar1 = blake2smac_process(auStack_1d8,param_3,param_4)" identifier = (call_expression "blake2smac_process(auStack_1d8,param_3,param_4)" identifier (argument_list "(auStack_1d8,param_3,param_4)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }" { (expression_statement "blake2smac_done(auStack_1d8,param_5,param_6);" (call_expression "blake2smac_done(auStack_1d8,param_5,param_6)" identifier (argument_list "(auStack_1d8,param_5,param_6)" ( identifier , identifier , identifier ))) ;) })) })) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }" if (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 == *(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;\n    }" { (return_statement "return;" return ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);" (call_expression "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0)" identifier (argument_list "("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0)" ( (string_literal ""maclen != NULL"" " string_content ") , (string_literal ""src/mac/blake2/blake2smac_memory.c"" " string_content ") , number_literal , number_literal ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) })) (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 ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT ))) ;) })))
(function_definition "void blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)\n\n{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}" (primitive_type "void") (function_declarator "blake2smac_memory(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)" (identifier "blake2smac_memory") (parameter_list "(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,\n                      undefined8 *param_6)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "long param_5" (sized_type_specifier "long" (long "long")) (identifier "param_5")) (, ",") (parameter_declaration "undefined8 *param_6" (type_identifier "undefined8") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")"))) (compound_statement "{\n  int iVar1;\n  long in_FS_OFFSET;\n  undefined1 auStack_1d8 [424];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }\n  if (param_5 == 0) {\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }\n  if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined1 auStack_1d8 [424];" (type_identifier "undefined1") (array_declarator "auStack_1d8 [424]" (identifier "auStack_1d8") ([ "[") (number_literal "424") (] "]")) (; ";")) (declaration "long local_30;" (sized_type_specifier "long" (long "long")) (identifier "local_30") (; ";")) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);\n  }" ({ "{") (expression_statement "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0);" (call_expression "crypt_argchk("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0)" (identifier "crypt_argchk") (argument_list "("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d,0)" (( "(") (string_literal ""key != NULL"" (" """) (string_content "key != NULL") (" """)) (, ",") (string_literal ""src/mac/blake2/blake2smac_memory.c"" (" """) (string_content "src/mac/blake2/blake2smac_memory.c") (" """)) (, ",") (number_literal "0x1d") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);\n  }" ({ "{") (expression_statement "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0);" (call_expression "crypt_argchk("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0)" (identifier "crypt_argchk") (argument_list "("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e,0)" (( "(") (string_literal ""in != NULL"" (" """) (string_content "in != NULL") (" """)) (, ",") (string_literal ""src/mac/blake2/blake2smac_memory.c"" (" """) (string_content "src/mac/blake2/blake2smac_memory.c") (" """)) (, ",") (number_literal "0x1e") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_5 == 0) {\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);\n  }" ({ "{") (expression_statement "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0);" (call_expression "crypt_argchk("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0)" (identifier "crypt_argchk") (argument_list "("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f,0)" (( "(") (string_literal ""mac != NULL"" (" """) (string_content "mac != NULL") (" """)) (, ",") (string_literal ""src/mac/blake2/blake2smac_memory.c"" (" """) (string_content "src/mac/blake2/blake2smac_memory.c") (" """)) (, ",") (number_literal "0x1f") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_6 != (undefined8 *)0x0) {\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(param_6 != (undefined8 *)0x0)" (( "(") (binary_expression "param_6 != (undefined8 *)0x0" (identifier "param_6") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);\n    if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);" (assignment_expression "iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2)" (identifier "iVar1") (= "=") (call_expression "blake2smac_init(auStack_1d8,*param_6,param_1,param_2)" (identifier "blake2smac_init") (argument_list "(auStack_1d8,*param_6,param_1,param_2)" (( "(") (identifier "auStack_1d8") (, ",") (pointer_expression "*param_6" (* "*") (identifier "param_6")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);\n      if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }\n    }" ({ "{") (expression_statement "iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);" (assignment_expression "iVar1 = blake2smac_process(auStack_1d8,param_3,param_4)" (identifier "iVar1") (= "=") (call_expression "blake2smac_process(auStack_1d8,param_3,param_4)" (identifier "blake2smac_process") (argument_list "(auStack_1d8,param_3,param_4)" (( "(") (identifier "auStack_1d8") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        blake2smac_done(auStack_1d8,param_5,param_6);\n      }" ({ "{") (expression_statement "blake2smac_done(auStack_1d8,param_5,param_6);" (call_expression "blake2smac_done(auStack_1d8,param_5,param_6)" (identifier "blake2smac_done") (argument_list "(auStack_1d8,param_5,param_6)" (( "(") (identifier "auStack_1d8") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return;\n    }" (if "if") (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_30 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (== "==") (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;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0);" (call_expression "crypt_argchk("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0)" (identifier "crypt_argchk") (argument_list "("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20,0)" (( "(") (string_literal ""maclen != NULL"" (" """) (string_content "maclen != NULL") (" """)) (, ",") (string_literal ""src/mac/blake2/blake2smac_memory.c"" (" """) (string_content "src/mac/blake2/blake2smac_memory.c") (" """)) (, ",") (number_literal "0x20") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))

int function_1(type_1 *var_2,type_2 keylen,type_1 *var_4,type_2 inlen,type_1 *var_5,type_2 *var_6)

{
  int var_8;
  long var_1;
  type_3 st;
  long var_11;
  
  var_11 = *(long *)(var_1 + 0x28);
  if (var_2 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("key != NULL","src/mac/blake2/blake2smac_memory.c",0x1d);
  }
  if (var_4 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("in != NULL","src/mac/blake2/blake2smac_memory.c",0x1e);
  }
  if (var_5 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("mac != NULL","src/mac/blake2/blake2smac_memory.c",0x1f);
  }
  if (var_6 != (type_2 *)0x0) {
    var_8 = var_7(&st,*var_6,var_2,keylen);
    if (var_8 == 0) {
      var_8 = var_9(&st,var_4,inlen);
      if (var_8 == 0) {
        var_8 = var_10(&st,var_5,var_6);
      }
    }
    if (var_11 == *(long *)(var_1 + 0x28)) {
      return var_8;
    }
                    /* WARNING: Subroutine does not return */
    var_12();
  }
                    /* WARNING: Subroutine does not return */
  var_3("maclen != NULL","src/mac/blake2/blake2smac_memory.c",0x20);
}


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

void MASKED(long param_1,undefined8 param_2,long param_3,undefined8 param_4,long param_5,
                      undefined8 *param_6)

{
  int iVar1;
  long in_FS_OFFSET;
  undefined1 auStack_1d8 [424];
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("key != NULL","src/mac/blake2/MASKED.c",0x1d,0);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/mac/blake2/MASKED.c",0x1e,0);
  }
  if (param_5 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("mac != NULL","src/mac/blake2/MASKED.c",0x1f,0);
  }
  if (param_6 != (undefined8 *)0x0) {
    iVar1 = blake2smac_init(auStack_1d8,*param_6,param_1,param_2);
    if (iVar1 == 0) {
      iVar1 = blake2smac_process(auStack_1d8,param_3,param_4);
      if (iVar1 == 0) {
        blake2smac_done(auStack_1d8,param_5,param_6);
      }
    }
    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
      return;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("maclen != NULL","src/mac/blake2/MASKED.c",0x20,0);
}

