
int verify_cookie_callback(SSL *ssl,uchar *cookie,uint cookie_len)

{
  SSL *pSVar1;
  uint uVar2;
  int iVar3;
  uchar *cookie_00;
  uint *cookie_len_00;
  uint *cookie_len_01;
  uint unaff_s0;
  int *piVar4;
  undefined *puVar5;
  code *pcVar6;
  uint uStack_88;
  SSL *pSStack_84;
  uint uStack_7c;
  uchar *puStack_78;
  code *pcStack_74;
  uint resultlength;
  uchar result [64];
  
  pSVar1 = *(SSL **)PTR___stack_chk_guard_000cc094;
  uVar2 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);
  cookie_00 = cookie;
  cookie_len_00 = (uint *)cookie_len;
  if (uVar2 != 0) {
    cookie_len_00 = &resultlength;
    cookie_00 = result;
    uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00);
    unaff_s0 = cookie_len;
    if (uVar2 != 0) {
      if (resultlength == cookie_len) {
        cookie_00 = cookie;
        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);
        uVar2 = (uint)(iVar3 == 0);
        cookie_len_00 = (uint *)resultlength;
      }
      else {
        uVar2 = 0;
        cookie_len_00 = (uint *)resultlength;
      }
    }
  }
  if (pSVar1 == *(SSL **)PTR___stack_chk_guard_000cc094) {
    return uVar2;
  }
  pcVar6 = generate_stateless_cookie_callback;
  puVar5 = PTR___stack_chk_fail_000cbe00;
  (*(code *)PTR___stack_chk_fail_000cbe00)();
  piVar4 = *(int **)(puVar5 + 0x3d1d8);
  pSStack_84 = (SSL *)*piVar4;
  cookie_len_01 = &uStack_88;
  uStack_7c = unaff_s0;
  puStack_78 = cookie;
  pcStack_74 = pcVar6;
  iVar3 = generate_cookie_callback(pSVar1,cookie_00,cookie_len_01);
  *cookie_len_00 = uStack_88;
  if (pSStack_84 == (SSL *)*piVar4) {
    return iVar3;
  }
  pSVar1 = pSStack_84;
  (**(code **)(puVar5 + 0x3cf44))();
  iVar3 = verify_cookie_callback(pSVar1,cookie_00,(uint)cookie_len_01);
  return iVar3;
}



uint verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 ***pppuVar3;
  int *piVar4;
  undefined *puVar5;
  undefined4 *puStack_88;
  undefined4 **local_58;
  undefined1 auStack_54 [64];
  int local_14;
  
  local_14 = *(int *)PTR___stack_chk_guard_000cc094;
  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);
  pppuVar3 = param_3;
  if (uVar1 != 0) {
    pppuVar3 = &local_58;
    uVar1 = generate_cookie_callback(param_1,auStack_54);
    if (uVar1 != 0) {
      if ((undefined4 ***)local_58 == param_3) {
        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);
        uVar1 = (uint)(iVar2 == 0);
        pppuVar3 = (undefined4 ***)local_58;
      }
      else {
        uVar1 = 0;
        pppuVar3 = (undefined4 ***)local_58;
      }
    }
  }
  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {
    return uVar1;
  }
  puVar5 = PTR___stack_chk_fail_000cbe00;
  (*(code *)PTR___stack_chk_fail_000cbe00)();
  piVar4 = *(int **)(puVar5 + 0x3d1d8);
  iVar2 = *piVar4;
  uVar1 = generate_cookie_callback();
  *pppuVar3 = (undefined4 **)puStack_88;
  if (iVar2 == *piVar4) {
    return uVar1;
  }
  (**(code **)(puVar5 + 0x3cf44))();
  uVar1 = verify_cookie_callback();
  return uVar1;
}


lui gp,0x4
addiu gp,gp,0x4564
addu gp,gp,t9
addiu sp,sp,-0x70
sw ra,0x6c(sp)
sw s1,0x68(sp)
sw s0,0x64(sp)
sw gp,0x10(sp)
lw v0,-0x72cc(gp)
lw v0,0x0(v0)
sw v0,0x5c(sp)
lw v0,-0x7fd8(gp)
lw v0,-0x1e70(v0)
bne v0,zero,0x0008ee5c
_or s1,a1,zero
lw a0,0x5c(sp)
lw v1,-0x72cc(gp)
lw v1,0x0(v1)
bne a0,v1,0x0008eeb0
_lw ra,0x6c(sp)
lw s1,0x68(sp)
lw s0,0x64(sp)
jr ra
_addiu sp,sp,0x70
or s0,a2,zero
addiu a2,sp,0x18
addiu a1,sp,0x1c
lw t9,-0x7d1c(gp)
bal 0x0008eb14
_nop
lw gp,0x10(sp)
beq v0,zero,0x0008ee38
_nop
lw a2,0x18(sp)
beq a2,s0,0x0008ee94
_addiu a0,sp,0x1c
b 0x0008ee38
_or v0,zero,zero
or a1,s1,zero
lw t9,-0x689c(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x0008ee38
_sltiu v0,v0,0x1
lw t9,-0x7560(gp)
jalr t9
_nop
(translation_unit "uint verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}\n\n" (function_definition "uint verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}" type_identifier (function_declarator "verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 ***param_3" type_identifier (pointer_declarator "***param_3" * (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier)))) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 ***pppuVar3;" type_identifier (pointer_declarator "***pppuVar3" * (pointer_declarator "**pppuVar3" * (pointer_declarator "*pppuVar3" * identifier))) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "undefined4 **local_58;" type_identifier (pointer_declarator "**local_58" * (pointer_declarator "*local_58" * identifier)) ;) (declaration "undefined1 auStack_54 [64];" type_identifier (array_declarator "auStack_54 [64]" identifier [ number_literal ]) ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_000cc094;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_000cc094" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000cc094" * (cast_expression "(int *)PTR___stack_chk_guard_000cc094" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);" (assignment_expression "uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70)" identifier = (pointer_expression "*(uint *)(PTR_DAT_000cb388 + -0x1e70)" * (cast_expression "(uint *)(PTR_DAT_000cb388 + -0x1e70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000cb388 + -0x1e70)" ( (binary_expression "PTR_DAT_000cb388 + -0x1e70" identifier + number_literal) ))))) ;) (expression_statement "pppuVar3 = param_3;" (assignment_expression "pppuVar3 = param_3" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }" { (expression_statement "pppuVar3 = &local_58;" (assignment_expression "pppuVar3 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;) (expression_statement "uVar1 = generate_cookie_callback(param_1,auStack_54);" (assignment_expression "uVar1 = generate_cookie_callback(param_1,auStack_54)" identifier = (call_expression "generate_cookie_callback(param_1,auStack_54)" identifier (argument_list "(param_1,auStack_54)" ( identifier , identifier )))) ;) (if_statement "if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }" { (if_statement "if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" if (parenthesized_expression "((undefined4 ***)local_58 == param_3)" ( (binary_expression "(undefined4 ***)local_58 == param_3" (cast_expression "(undefined4 ***)local_58" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier) == identifier) )) (compound_statement "{\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }" { (expression_statement "iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);" (assignment_expression "iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2)" identifier = (call_expression "(*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2)" (parenthesized_expression "(*(code *)PTR_memcmp_000ccac4)" ( (pointer_expression "*(code *)PTR_memcmp_000ccac4" * (cast_expression "(code *)PTR_memcmp_000ccac4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_54,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar1 = (uint)(iVar2 == 0);" (assignment_expression "uVar1 = (uint)(iVar2 == 0)" identifier = (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) ;) (expression_statement "pppuVar3 = (undefined4 ***)local_58;" (assignment_expression "pppuVar3 = (undefined4 ***)local_58" identifier = (cast_expression "(undefined4 ***)local_58" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) }) (else_clause "else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" else (compound_statement "{\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "pppuVar3 = (undefined4 ***)local_58;" (assignment_expression "pppuVar3 = (undefined4 ***)local_58" identifier = (cast_expression "(undefined4 ***)local_58" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) }))) })) })) (if_statement "if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }" if (parenthesized_expression "(local_14 == *(int *)PTR___stack_chk_guard_000cc094)" ( (binary_expression "local_14 == *(int *)PTR___stack_chk_guard_000cc094" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000cc094" * (cast_expression "(int *)PTR___stack_chk_guard_000cc094" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "puVar5 = PTR___stack_chk_fail_000cbe00;" (assignment_expression "puVar5 = PTR___stack_chk_fail_000cbe00" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000cbe00)();" (call_expression "(*(code *)PTR___stack_chk_fail_000cbe00)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000cbe00)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000cbe00" * (cast_expression "(code *)PTR___stack_chk_fail_000cbe00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar4 = *(int **)(puVar5 + 0x3d1d8);" (assignment_expression "piVar4 = *(int **)(puVar5 + 0x3d1d8)" identifier = (pointer_expression "*(int **)(puVar5 + 0x3d1d8)" * (cast_expression "(int **)(puVar5 + 0x3d1d8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x3d1d8)" ( (binary_expression "puVar5 + 0x3d1d8" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "uVar1 = generate_cookie_callback();" (assignment_expression "uVar1 = generate_cookie_callback()" identifier = (call_expression "generate_cookie_callback()" identifier (argument_list "()" ( )))) ;) (expression_statement "*pppuVar3 = (undefined4 **)puStack_88;" (assignment_expression "*pppuVar3 = (undefined4 **)puStack_88" (pointer_expression "*pppuVar3" * identifier) = (cast_expression "(undefined4 **)puStack_88" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (if_statement "if (iVar2 == *piVar4) {\n    return uVar1;\n  }" if (parenthesized_expression "(iVar2 == *piVar4)" ( (binary_expression "iVar2 == *piVar4" identifier == (pointer_expression "*piVar4" * identifier)) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "(**(code **)(puVar5 + 0x3cf44))();" (call_expression "(**(code **)(puVar5 + 0x3cf44))()" (parenthesized_expression "(**(code **)(puVar5 + 0x3cf44))" ( (pointer_expression "**(code **)(puVar5 + 0x3cf44)" * (pointer_expression "*(code **)(puVar5 + 0x3cf44)" * (cast_expression "(code **)(puVar5 + 0x3cf44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x3cf44)" ( (binary_expression "puVar5 + 0x3cf44" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = verify_cookie_callback();" (assignment_expression "uVar1 = verify_cookie_callback()" identifier = (call_expression "verify_cookie_callback()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "int verify_cookie_callback(SSL *ssl,uchar *cookie,uint cookie_len)\n\n{\n  SSL *pSVar1;\n  uint uVar2;\n  int iVar3;\n  uchar *cookie_00;\n  uint *cookie_len_00;\n  uint *cookie_len_01;\n  uint unaff_s0;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  uint uStack_88;\n  SSL *pSStack_84;\n  uint uStack_7c;\n  uchar *puStack_78;\n  code *pcStack_74;\n  uint resultlength;\n  uchar result [64];\n  \n  pSVar1 = *(SSL **)PTR___stack_chk_guard_000cc094;\n  uVar2 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  cookie_00 = cookie;\n  cookie_len_00 = (uint *)cookie_len;\n  if (uVar2 != 0) {\n    cookie_len_00 = &resultlength;\n    cookie_00 = result;\n    uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00);\n    unaff_s0 = cookie_len;\n    if (uVar2 != 0) {\n      if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }\n    }\n  }\n  if (pSVar1 == *(SSL **)PTR___stack_chk_guard_000cc094) {\n    return uVar2;\n  }\n  pcVar6 = generate_stateless_cookie_callback;\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  pSStack_84 = (SSL *)*piVar4;\n  cookie_len_01 = &uStack_88;\n  uStack_7c = unaff_s0;\n  puStack_78 = cookie;\n  pcStack_74 = pcVar6;\n  iVar3 = generate_cookie_callback(pSVar1,cookie_00,cookie_len_01);\n  *cookie_len_00 = uStack_88;\n  if (pSStack_84 == (SSL *)*piVar4) {\n    return iVar3;\n  }\n  pSVar1 = pSStack_84;\n  (**(code **)(puVar5 + 0x3cf44))();\n  iVar3 = verify_cookie_callback(pSVar1,cookie_00,(uint)cookie_len_01);\n  return iVar3;\n}\n\n" (function_definition "int verify_cookie_callback(SSL *ssl,uchar *cookie,uint cookie_len)\n\n{\n  SSL *pSVar1;\n  uint uVar2;\n  int iVar3;\n  uchar *cookie_00;\n  uint *cookie_len_00;\n  uint *cookie_len_01;\n  uint unaff_s0;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  uint uStack_88;\n  SSL *pSStack_84;\n  uint uStack_7c;\n  uchar *puStack_78;\n  code *pcStack_74;\n  uint resultlength;\n  uchar result [64];\n  \n  pSVar1 = *(SSL **)PTR___stack_chk_guard_000cc094;\n  uVar2 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  cookie_00 = cookie;\n  cookie_len_00 = (uint *)cookie_len;\n  if (uVar2 != 0) {\n    cookie_len_00 = &resultlength;\n    cookie_00 = result;\n    uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00);\n    unaff_s0 = cookie_len;\n    if (uVar2 != 0) {\n      if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }\n    }\n  }\n  if (pSVar1 == *(SSL **)PTR___stack_chk_guard_000cc094) {\n    return uVar2;\n  }\n  pcVar6 = generate_stateless_cookie_callback;\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  pSStack_84 = (SSL *)*piVar4;\n  cookie_len_01 = &uStack_88;\n  uStack_7c = unaff_s0;\n  puStack_78 = cookie;\n  pcStack_74 = pcVar6;\n  iVar3 = generate_cookie_callback(pSVar1,cookie_00,cookie_len_01);\n  *cookie_len_00 = uStack_88;\n  if (pSStack_84 == (SSL *)*piVar4) {\n    return iVar3;\n  }\n  pSVar1 = pSStack_84;\n  (**(code **)(puVar5 + 0x3cf44))();\n  iVar3 = verify_cookie_callback(pSVar1,cookie_00,(uint)cookie_len_01);\n  return iVar3;\n}" primitive_type (function_declarator "verify_cookie_callback(SSL *ssl,uchar *cookie,uint cookie_len)" identifier (parameter_list "(SSL *ssl,uchar *cookie,uint cookie_len)" ( (parameter_declaration "SSL *ssl" type_identifier (pointer_declarator "*ssl" * identifier)) , (parameter_declaration "uchar *cookie" type_identifier (pointer_declarator "*cookie" * identifier)) , (parameter_declaration "uint cookie_len" type_identifier identifier) ))) (compound_statement "{\n  SSL *pSVar1;\n  uint uVar2;\n  int iVar3;\n  uchar *cookie_00;\n  uint *cookie_len_00;\n  uint *cookie_len_01;\n  uint unaff_s0;\n  int *piVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  uint uStack_88;\n  SSL *pSStack_84;\n  uint uStack_7c;\n  uchar *puStack_78;\n  code *pcStack_74;\n  uint resultlength;\n  uchar result [64];\n  \n  pSVar1 = *(SSL **)PTR___stack_chk_guard_000cc094;\n  uVar2 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  cookie_00 = cookie;\n  cookie_len_00 = (uint *)cookie_len;\n  if (uVar2 != 0) {\n    cookie_len_00 = &resultlength;\n    cookie_00 = result;\n    uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00);\n    unaff_s0 = cookie_len;\n    if (uVar2 != 0) {\n      if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }\n    }\n  }\n  if (pSVar1 == *(SSL **)PTR___stack_chk_guard_000cc094) {\n    return uVar2;\n  }\n  pcVar6 = generate_stateless_cookie_callback;\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  pSStack_84 = (SSL *)*piVar4;\n  cookie_len_01 = &uStack_88;\n  uStack_7c = unaff_s0;\n  puStack_78 = cookie;\n  pcStack_74 = pcVar6;\n  iVar3 = generate_cookie_callback(pSVar1,cookie_00,cookie_len_01);\n  *cookie_len_00 = uStack_88;\n  if (pSStack_84 == (SSL *)*piVar4) {\n    return iVar3;\n  }\n  pSVar1 = pSStack_84;\n  (**(code **)(puVar5 + 0x3cf44))();\n  iVar3 = verify_cookie_callback(pSVar1,cookie_00,(uint)cookie_len_01);\n  return iVar3;\n}" { (declaration "SSL *pSVar1;" type_identifier (pointer_declarator "*pSVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uchar *cookie_00;" type_identifier (pointer_declarator "*cookie_00" * identifier) ;) (declaration "uint *cookie_len_00;" type_identifier (pointer_declarator "*cookie_len_00" * identifier) ;) (declaration "uint *cookie_len_01;" type_identifier (pointer_declarator "*cookie_len_01" * identifier) ;) (declaration "uint unaff_s0;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint uStack_88;" type_identifier identifier ;) (declaration "SSL *pSStack_84;" type_identifier (pointer_declarator "*pSStack_84" * identifier) ;) (declaration "uint uStack_7c;" type_identifier identifier ;) (declaration "uchar *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "code *pcStack_74;" type_identifier (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "uint resultlength;" type_identifier identifier ;) (declaration "uchar result [64];" type_identifier (array_declarator "result [64]" identifier [ number_literal ]) ;) (expression_statement "pSVar1 = *(SSL **)PTR___stack_chk_guard_000cc094;" (assignment_expression "pSVar1 = *(SSL **)PTR___stack_chk_guard_000cc094" identifier = (pointer_expression "*(SSL **)PTR___stack_chk_guard_000cc094" * (cast_expression "(SSL **)PTR___stack_chk_guard_000cc094" ( (type_descriptor "SSL **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar2 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);" (assignment_expression "uVar2 = *(uint *)(PTR_DAT_000cb388 + -0x1e70)" identifier = (pointer_expression "*(uint *)(PTR_DAT_000cb388 + -0x1e70)" * (cast_expression "(uint *)(PTR_DAT_000cb388 + -0x1e70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000cb388 + -0x1e70)" ( (binary_expression "PTR_DAT_000cb388 + -0x1e70" identifier + number_literal) ))))) ;) (expression_statement "cookie_00 = cookie;" (assignment_expression "cookie_00 = cookie" identifier = identifier) ;) (expression_statement "cookie_len_00 = (uint *)cookie_len;" (assignment_expression "cookie_len_00 = (uint *)cookie_len" identifier = (cast_expression "(uint *)cookie_len" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (uVar2 != 0) {\n    cookie_len_00 = &resultlength;\n    cookie_00 = result;\n    uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00);\n    unaff_s0 = cookie_len;\n    if (uVar2 != 0) {\n      if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }\n    }\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    cookie_len_00 = &resultlength;\n    cookie_00 = result;\n    uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00);\n    unaff_s0 = cookie_len;\n    if (uVar2 != 0) {\n      if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }\n    }\n  }" { (expression_statement "cookie_len_00 = &resultlength;" (assignment_expression "cookie_len_00 = &resultlength" identifier = (pointer_expression "&resultlength" & identifier)) ;) (expression_statement "cookie_00 = result;" (assignment_expression "cookie_00 = result" identifier = identifier) ;) (expression_statement "uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00);" (assignment_expression "uVar2 = generate_cookie_callback(ssl,cookie_00,cookie_len_00)" identifier = (call_expression "generate_cookie_callback(ssl,cookie_00,cookie_len_00)" identifier (argument_list "(ssl,cookie_00,cookie_len_00)" ( identifier , identifier , identifier )))) ;) (expression_statement "unaff_s0 = cookie_len;" (assignment_expression "unaff_s0 = cookie_len" identifier = identifier) ;) (if_statement "if (uVar2 != 0) {\n      if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }\n    }" { (if_statement "if (resultlength == cookie_len) {\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }\n      else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }" if (parenthesized_expression "(resultlength == cookie_len)" ( (binary_expression "resultlength == cookie_len" identifier == identifier) )) (compound_statement "{\n        cookie_00 = cookie;\n        iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);\n        uVar2 = (uint)(iVar3 == 0);\n        cookie_len_00 = (uint *)resultlength;\n      }" { (expression_statement "cookie_00 = cookie;" (assignment_expression "cookie_00 = cookie" identifier = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR_memcmp_000ccac4)(result);" (assignment_expression "iVar3 = (*(code *)PTR_memcmp_000ccac4)(result)" identifier = (call_expression "(*(code *)PTR_memcmp_000ccac4)(result)" (parenthesized_expression "(*(code *)PTR_memcmp_000ccac4)" ( (pointer_expression "*(code *)PTR_memcmp_000ccac4" * (cast_expression "(code *)PTR_memcmp_000ccac4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(result)" ( identifier )))) ;) (expression_statement "uVar2 = (uint)(iVar3 == 0);" (assignment_expression "uVar2 = (uint)(iVar3 == 0)" identifier = (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )))) ;) (expression_statement "cookie_len_00 = (uint *)resultlength;" (assignment_expression "cookie_len_00 = (uint *)resultlength" identifier = (cast_expression "(uint *)resultlength" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }" else (compound_statement "{\n        uVar2 = 0;\n        cookie_len_00 = (uint *)resultlength;\n      }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "cookie_len_00 = (uint *)resultlength;" (assignment_expression "cookie_len_00 = (uint *)resultlength" identifier = (cast_expression "(uint *)resultlength" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) })) })) (if_statement "if (pSVar1 == *(SSL **)PTR___stack_chk_guard_000cc094) {\n    return uVar2;\n  }" if (parenthesized_expression "(pSVar1 == *(SSL **)PTR___stack_chk_guard_000cc094)" ( (binary_expression "pSVar1 == *(SSL **)PTR___stack_chk_guard_000cc094" identifier == (pointer_expression "*(SSL **)PTR___stack_chk_guard_000cc094" * (cast_expression "(SSL **)PTR___stack_chk_guard_000cc094" ( (type_descriptor "SSL **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar6 = generate_stateless_cookie_callback;" (assignment_expression "pcVar6 = generate_stateless_cookie_callback" identifier = identifier) ;) (expression_statement "puVar5 = PTR___stack_chk_fail_000cbe00;" (assignment_expression "puVar5 = PTR___stack_chk_fail_000cbe00" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000cbe00)();" (call_expression "(*(code *)PTR___stack_chk_fail_000cbe00)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000cbe00)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000cbe00" * (cast_expression "(code *)PTR___stack_chk_fail_000cbe00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar4 = *(int **)(puVar5 + 0x3d1d8);" (assignment_expression "piVar4 = *(int **)(puVar5 + 0x3d1d8)" identifier = (pointer_expression "*(int **)(puVar5 + 0x3d1d8)" * (cast_expression "(int **)(puVar5 + 0x3d1d8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x3d1d8)" ( (binary_expression "puVar5 + 0x3d1d8" identifier + number_literal) ))))) ;) (expression_statement "pSStack_84 = (SSL *)*piVar4;" (assignment_expression "pSStack_84 = (SSL *)*piVar4" identifier = (cast_expression "(SSL *)*piVar4" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "cookie_len_01 = &uStack_88;" (assignment_expression "cookie_len_01 = &uStack_88" identifier = (pointer_expression "&uStack_88" & identifier)) ;) (expression_statement "uStack_7c = unaff_s0;" (assignment_expression "uStack_7c = unaff_s0" identifier = identifier) ;) (expression_statement "puStack_78 = cookie;" (assignment_expression "puStack_78 = cookie" identifier = identifier) ;) (expression_statement "pcStack_74 = pcVar6;" (assignment_expression "pcStack_74 = pcVar6" identifier = identifier) ;) (expression_statement "iVar3 = generate_cookie_callback(pSVar1,cookie_00,cookie_len_01);" (assignment_expression "iVar3 = generate_cookie_callback(pSVar1,cookie_00,cookie_len_01)" identifier = (call_expression "generate_cookie_callback(pSVar1,cookie_00,cookie_len_01)" identifier (argument_list "(pSVar1,cookie_00,cookie_len_01)" ( identifier , identifier , identifier )))) ;) (expression_statement "*cookie_len_00 = uStack_88;" (assignment_expression "*cookie_len_00 = uStack_88" (pointer_expression "*cookie_len_00" * identifier) = identifier) ;) (if_statement "if (pSStack_84 == (SSL *)*piVar4) {\n    return iVar3;\n  }" if (parenthesized_expression "(pSStack_84 == (SSL *)*piVar4)" ( (binary_expression "pSStack_84 == (SSL *)*piVar4" identifier == (cast_expression "(SSL *)*piVar4" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "pSVar1 = pSStack_84;" (assignment_expression "pSVar1 = pSStack_84" identifier = identifier) ;) (expression_statement "(**(code **)(puVar5 + 0x3cf44))();" (call_expression "(**(code **)(puVar5 + 0x3cf44))()" (parenthesized_expression "(**(code **)(puVar5 + 0x3cf44))" ( (pointer_expression "**(code **)(puVar5 + 0x3cf44)" * (pointer_expression "*(code **)(puVar5 + 0x3cf44)" * (cast_expression "(code **)(puVar5 + 0x3cf44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x3cf44)" ( (binary_expression "puVar5 + 0x3cf44" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = verify_cookie_callback(pSVar1,cookie_00,(uint)cookie_len_01);" (assignment_expression "iVar3 = verify_cookie_callback(pSVar1,cookie_00,(uint)cookie_len_01)" identifier = (call_expression "verify_cookie_callback(pSVar1,cookie_00,(uint)cookie_len_01)" identifier (argument_list "(pSVar1,cookie_00,(uint)cookie_len_01)" ( identifier , identifier , (cast_expression "(uint)cookie_len_01" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "uint verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}\n\n" (function_definition "uint verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}" type_identifier (function_declarator "verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 ***param_3" type_identifier (pointer_declarator "***param_3" * (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier)))) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 ***pppuVar3;" type_identifier (pointer_declarator "***pppuVar3" * (pointer_declarator "**pppuVar3" * (pointer_declarator "*pppuVar3" * identifier))) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "undefined4 **local_58;" type_identifier (pointer_declarator "**local_58" * (pointer_declarator "*local_58" * identifier)) ;) (declaration "undefined1 auStack_54 [64];" type_identifier (array_declarator "auStack_54 [64]" identifier [ number_literal ]) ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_000cc094;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_000cc094" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000cc094" * (cast_expression "(int *)PTR___stack_chk_guard_000cc094" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);" (assignment_expression "uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70)" identifier = (pointer_expression "*(uint *)(PTR_DAT_000cb388 + -0x1e70)" * (cast_expression "(uint *)(PTR_DAT_000cb388 + -0x1e70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000cb388 + -0x1e70)" ( (binary_expression "PTR_DAT_000cb388 + -0x1e70" identifier + number_literal) ))))) ;) (expression_statement "pppuVar3 = param_3;" (assignment_expression "pppuVar3 = param_3" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }" { (expression_statement "pppuVar3 = &local_58;" (assignment_expression "pppuVar3 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;) (expression_statement "uVar1 = generate_cookie_callback(param_1,auStack_54);" (assignment_expression "uVar1 = generate_cookie_callback(param_1,auStack_54)" identifier = (call_expression "generate_cookie_callback(param_1,auStack_54)" identifier (argument_list "(param_1,auStack_54)" ( identifier , identifier )))) ;) (if_statement "if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }" { (if_statement "if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" if (parenthesized_expression "((undefined4 ***)local_58 == param_3)" ( (binary_expression "(undefined4 ***)local_58 == param_3" (cast_expression "(undefined4 ***)local_58" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier) == identifier) )) (compound_statement "{\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }" { (expression_statement "iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);" (assignment_expression "iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2)" identifier = (call_expression "(*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2)" (parenthesized_expression "(*(code *)PTR_memcmp_000ccac4)" ( (pointer_expression "*(code *)PTR_memcmp_000ccac4" * (cast_expression "(code *)PTR_memcmp_000ccac4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_54,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar1 = (uint)(iVar2 == 0);" (assignment_expression "uVar1 = (uint)(iVar2 == 0)" identifier = (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) ;) (expression_statement "pppuVar3 = (undefined4 ***)local_58;" (assignment_expression "pppuVar3 = (undefined4 ***)local_58" identifier = (cast_expression "(undefined4 ***)local_58" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) }) (else_clause "else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" else (compound_statement "{\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "pppuVar3 = (undefined4 ***)local_58;" (assignment_expression "pppuVar3 = (undefined4 ***)local_58" identifier = (cast_expression "(undefined4 ***)local_58" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) }))) })) })) (if_statement "if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }" if (parenthesized_expression "(local_14 == *(int *)PTR___stack_chk_guard_000cc094)" ( (binary_expression "local_14 == *(int *)PTR___stack_chk_guard_000cc094" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000cc094" * (cast_expression "(int *)PTR___stack_chk_guard_000cc094" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "puVar5 = PTR___stack_chk_fail_000cbe00;" (assignment_expression "puVar5 = PTR___stack_chk_fail_000cbe00" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000cbe00)();" (call_expression "(*(code *)PTR___stack_chk_fail_000cbe00)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000cbe00)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000cbe00" * (cast_expression "(code *)PTR___stack_chk_fail_000cbe00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar4 = *(int **)(puVar5 + 0x3d1d8);" (assignment_expression "piVar4 = *(int **)(puVar5 + 0x3d1d8)" identifier = (pointer_expression "*(int **)(puVar5 + 0x3d1d8)" * (cast_expression "(int **)(puVar5 + 0x3d1d8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x3d1d8)" ( (binary_expression "puVar5 + 0x3d1d8" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "uVar1 = generate_cookie_callback();" (assignment_expression "uVar1 = generate_cookie_callback()" identifier = (call_expression "generate_cookie_callback()" identifier (argument_list "()" ( )))) ;) (expression_statement "*pppuVar3 = (undefined4 **)puStack_88;" (assignment_expression "*pppuVar3 = (undefined4 **)puStack_88" (pointer_expression "*pppuVar3" * identifier) = (cast_expression "(undefined4 **)puStack_88" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (if_statement "if (iVar2 == *piVar4) {\n    return uVar1;\n  }" if (parenthesized_expression "(iVar2 == *piVar4)" ( (binary_expression "iVar2 == *piVar4" identifier == (pointer_expression "*piVar4" * identifier)) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "(**(code **)(puVar5 + 0x3cf44))();" (call_expression "(**(code **)(puVar5 + 0x3cf44))()" (parenthesized_expression "(**(code **)(puVar5 + 0x3cf44))" ( (pointer_expression "**(code **)(puVar5 + 0x3cf44)" * (pointer_expression "*(code **)(puVar5 + 0x3cf44)" * (cast_expression "(code **)(puVar5 + 0x3cf44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x3cf44)" ( (binary_expression "puVar5 + 0x3cf44" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar1 = verify_cookie_callback();" (assignment_expression "uVar1 = verify_cookie_callback()" identifier = (call_expression "verify_cookie_callback()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "uint verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}" (type_identifier "uint") (function_declarator "verify_cookie_callback(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)" (identifier "verify_cookie_callback") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 ***param_3" (type_identifier "undefined4") (pointer_declarator "***param_3" (* "*") (pointer_declarator "**param_3" (* "*") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined4 ***pppuVar3;\n  int *piVar4;\n  undefined *puVar5;\n  undefined4 *puStack_88;\n  undefined4 **local_58;\n  undefined1 auStack_54 [64];\n  int local_14;\n  \n  local_14 = *(int *)PTR___stack_chk_guard_000cc094;\n  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);\n  pppuVar3 = param_3;\n  if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }\n  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }\n  puVar5 = PTR___stack_chk_fail_000cbe00;\n  (*(code *)PTR___stack_chk_fail_000cbe00)();\n  piVar4 = *(int **)(puVar5 + 0x3d1d8);\n  iVar2 = *piVar4;\n  uVar1 = generate_cookie_callback();\n  *pppuVar3 = (undefined4 **)puStack_88;\n  if (iVar2 == *piVar4) {\n    return uVar1;\n  }\n  (**(code **)(puVar5 + 0x3cf44))();\n  uVar1 = verify_cookie_callback();\n  return uVar1;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 ***pppuVar3;" (type_identifier "undefined4") (pointer_declarator "***pppuVar3" (* "*") (pointer_declarator "**pppuVar3" (* "*") (pointer_declarator "*pppuVar3" (* "*") (identifier "pppuVar3")))) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 *puStack_88;" (type_identifier "undefined4") (pointer_declarator "*puStack_88" (* "*") (identifier "puStack_88")) (; ";")) (declaration "undefined4 **local_58;" (type_identifier "undefined4") (pointer_declarator "**local_58" (* "*") (pointer_declarator "*local_58" (* "*") (identifier "local_58"))) (; ";")) (declaration "undefined1 auStack_54 [64];" (type_identifier "undefined1") (array_declarator "auStack_54 [64]" (identifier "auStack_54") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_000cc094;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_000cc094" (identifier "local_14") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000cc094" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000cc094" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000cc094")))) (; ";")) (expression_statement "uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);" (assignment_expression "uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(PTR_DAT_000cb388 + -0x1e70)" (* "*") (cast_expression "(uint *)(PTR_DAT_000cb388 + -0x1e70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000cb388 + -0x1e70)" (( "(") (binary_expression "PTR_DAT_000cb388 + -0x1e70" (identifier "PTR_DAT_000cb388") (+ "+") (number_literal "-0x1e70")) () ")"))))) (; ";")) (expression_statement "pppuVar3 = param_3;" (assignment_expression "pppuVar3 = param_3" (identifier "pppuVar3") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (uVar1 != 0) {\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pppuVar3 = &local_58;\n    uVar1 = generate_cookie_callback(param_1,auStack_54);\n    if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }\n  }" ({ "{") (expression_statement "pppuVar3 = &local_58;" (assignment_expression "pppuVar3 = &local_58" (identifier "pppuVar3") (= "=") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (; ";")) (expression_statement "uVar1 = generate_cookie_callback(param_1,auStack_54);" (assignment_expression "uVar1 = generate_cookie_callback(param_1,auStack_54)" (identifier "uVar1") (= "=") (call_expression "generate_cookie_callback(param_1,auStack_54)" (identifier "generate_cookie_callback") (argument_list "(param_1,auStack_54)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_54") () ")")))) (; ";")) (if_statement "if (uVar1 != 0) {\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n    }" ({ "{") (if_statement "if ((undefined4 ***)local_58 == param_3) {\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }\n      else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" (if "if") (parenthesized_expression "((undefined4 ***)local_58 == param_3)" (( "(") (binary_expression "(undefined4 ***)local_58 == param_3" (cast_expression "(undefined4 ***)local_58" (( "(") (type_descriptor "undefined4 ***" (type_identifier "undefined4") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "local_58")) (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);\n        uVar1 = (uint)(iVar2 == 0);\n        pppuVar3 = (undefined4 ***)local_58;\n      }" ({ "{") (expression_statement "iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);" (assignment_expression "iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2)" (parenthesized_expression "(*(code *)PTR_memcmp_000ccac4)" (( "(") (pointer_expression "*(code *)PTR_memcmp_000ccac4" (* "*") (cast_expression "(code *)PTR_memcmp_000ccac4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_000ccac4"))) () ")")) (argument_list "(auStack_54,param_2)" (( "(") (identifier "auStack_54") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "uVar1 = (uint)(iVar2 == 0);" (assignment_expression "uVar1 = (uint)(iVar2 == 0)" (identifier "uVar1") (= "=") (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")))) (; ";")) (expression_statement "pppuVar3 = (undefined4 ***)local_58;" (assignment_expression "pppuVar3 = (undefined4 ***)local_58" (identifier "pppuVar3") (= "=") (cast_expression "(undefined4 ***)local_58" (( "(") (type_descriptor "undefined4 ***" (type_identifier "undefined4") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "local_58"))) (; ";")) (} "}")) (else_clause "else {\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" (else "else") (compound_statement "{\n        uVar1 = 0;\n        pppuVar3 = (undefined4 ***)local_58;\n      }" ({ "{") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "pppuVar3 = (undefined4 ***)local_58;" (assignment_expression "pppuVar3 = (undefined4 ***)local_58" (identifier "pppuVar3") (= "=") (cast_expression "(undefined4 ***)local_58" (( "(") (type_descriptor "undefined4 ***" (type_identifier "undefined4") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "local_58"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {\n    return uVar1;\n  }" (if "if") (parenthesized_expression "(local_14 == *(int *)PTR___stack_chk_guard_000cc094)" (( "(") (binary_expression "local_14 == *(int *)PTR___stack_chk_guard_000cc094" (identifier "local_14") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_000cc094" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000cc094" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000cc094")))) () ")")) (compound_statement "{\n    return uVar1;\n  }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (expression_statement "puVar5 = PTR___stack_chk_fail_000cbe00;" (assignment_expression "puVar5 = PTR___stack_chk_fail_000cbe00" (identifier "puVar5") (= "=") (identifier "PTR___stack_chk_fail_000cbe00")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000cbe00)();" (call_expression "(*(code *)PTR___stack_chk_fail_000cbe00)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000cbe00)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000cbe00" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000cbe00" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000cbe00"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar4 = *(int **)(puVar5 + 0x3d1d8);" (assignment_expression "piVar4 = *(int **)(puVar5 + 0x3d1d8)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(puVar5 + 0x3d1d8)" (* "*") (cast_expression "(int **)(puVar5 + 0x3d1d8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 0x3d1d8)" (( "(") (binary_expression "puVar5 + 0x3d1d8" (identifier "puVar5") (+ "+") (number_literal "0x3d1d8")) () ")"))))) (; ";")) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" (identifier "iVar2") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "uVar1 = generate_cookie_callback();" (assignment_expression "uVar1 = generate_cookie_callback()" (identifier "uVar1") (= "=") (call_expression "generate_cookie_callback()" (identifier "generate_cookie_callback") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*pppuVar3 = (undefined4 **)puStack_88;" (assignment_expression "*pppuVar3 = (undefined4 **)puStack_88" (pointer_expression "*pppuVar3" (* "*") (identifier "pppuVar3")) (= "=") (cast_expression "(undefined4 **)puStack_88" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puStack_88"))) (; ";")) (if_statement "if (iVar2 == *piVar4) {\n    return uVar1;\n  }" (if "if") (parenthesized_expression "(iVar2 == *piVar4)" (( "(") (binary_expression "iVar2 == *piVar4" (identifier "iVar2") (== "==") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) () ")")) (compound_statement "{\n    return uVar1;\n  }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar5 + 0x3cf44))();" (call_expression "(**(code **)(puVar5 + 0x3cf44))()" (parenthesized_expression "(**(code **)(puVar5 + 0x3cf44))" (( "(") (pointer_expression "**(code **)(puVar5 + 0x3cf44)" (* "*") (pointer_expression "*(code **)(puVar5 + 0x3cf44)" (* "*") (cast_expression "(code **)(puVar5 + 0x3cf44)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 0x3cf44)" (( "(") (binary_expression "puVar5 + 0x3cf44" (identifier "puVar5") (+ "+") (number_literal "0x3cf44")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar1 = verify_cookie_callback();" (assignment_expression "uVar1 = verify_cookie_callback()" (identifier "uVar1") (= "=") (call_expression "verify_cookie_callback()" (identifier "verify_cookie_callback") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

int function_1(type_1 *ssl,type_2 *cookie,type_3 var_5)

{
  type_1 *var_7;
  type_3 var_2;
  int var_6;
  type_2 *cookie_00;
  type_3 *cookie_len_00;
  type_3 *cookie_len_01;
  type_3 unaff_s0;
  int *piVar4;
  type_4 *var_8;
  type_5 *pcVar6;
  type_3 uStack_88;
  type_1 *var_9;
  type_3 uStack_7c;
  type_2 *puStack_78;
  type_5 *pcStack_74;
  type_3 var_4;
  type_2 result [64];
  
  var_7 = *(type_1 **)PTR___stack_chk_guard_000cc094;
  var_2 = *(type_3 *)(var_1 + -0x1e70);
  cookie_00 = cookie;
  cookie_len_00 = (type_3 *)var_5;
  if (var_2 != 0) {
    cookie_len_00 = &var_4;
    cookie_00 = result;
    var_2 = var_3(ssl,cookie_00,cookie_len_00);
    unaff_s0 = var_5;
    if (var_2 != 0) {
      if (var_4 == var_5) {
        cookie_00 = cookie;
        var_6 = (*(type_5 *)PTR_memcmp_000ccac4)(result);
        var_2 = (type_3)(var_6 == 0);
        cookie_len_00 = (type_3 *)var_4;
      }
      else {
        var_2 = 0;
        cookie_len_00 = (type_3 *)var_4;
      }
    }
  }
  if (var_7 == *(type_1 **)PTR___stack_chk_guard_000cc094) {
    return var_2;
  }
  pcVar6 = generate_stateless_cookie_callback;
  var_8 = PTR___stack_chk_fail_000cbe00;
  (*(type_5 *)PTR___stack_chk_fail_000cbe00)();
  piVar4 = *(int **)(var_8 + 0x3d1d8);
  var_9 = (type_1 *)*piVar4;
  cookie_len_01 = &uStack_88;
  uStack_7c = unaff_s0;
  puStack_78 = cookie;
  pcStack_74 = pcVar6;
  var_6 = var_3(var_7,cookie_00,cookie_len_01);
  *cookie_len_00 = uStack_88;
  if (var_9 == (type_1 *)*piVar4) {
    return var_6;
  }
  var_7 = var_9;
  (**(type_5 **)(var_8 + 0x3cf44))();
  var_6 = function_1(var_7,cookie_00,(type_3)cookie_len_01);
  return var_6;
}


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

uint MASKED(undefined4 param_1,undefined4 param_2,undefined4 ***param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 ***pppuVar3;
  int *piVar4;
  undefined *puVar5;
  undefined4 *puStack_88;
  undefined4 **local_58;
  undefined1 auStack_54 [64];
  int local_14;
  
  local_14 = *(int *)PTR___stack_chk_guard_000cc094;
  uVar1 = *(uint *)(PTR_DAT_000cb388 + -0x1e70);
  pppuVar3 = param_3;
  if (uVar1 != 0) {
    pppuVar3 = &local_58;
    uVar1 = generate_cookie_callback(param_1,auStack_54);
    if (uVar1 != 0) {
      if ((undefined4 ***)local_58 == param_3) {
        iVar2 = (*(code *)PTR_memcmp_000ccac4)(auStack_54,param_2);
        uVar1 = (uint)(iVar2 == 0);
        pppuVar3 = (undefined4 ***)local_58;
      }
      else {
        uVar1 = 0;
        pppuVar3 = (undefined4 ***)local_58;
      }
    }
  }
  if (local_14 == *(int *)PTR___stack_chk_guard_000cc094) {
    return uVar1;
  }
  puVar5 = PTR___stack_chk_fail_000cbe00;
  (*(code *)PTR___stack_chk_fail_000cbe00)();
  piVar4 = *(int **)(puVar5 + 0x3d1d8);
  iVar2 = *piVar4;
  uVar1 = generate_cookie_callback();
  *pppuVar3 = (undefined4 **)puStack_88;
  if (iVar2 == *piVar4) {
    return uVar1;
  }
  (**(code **)(puVar5 + 0x3cf44))();
  uVar1 = MASKED();
  return uVar1;
}

