
/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */
/* WARNING: Enum "gnutls_pk_algorithm_t": Some values do not have unique names */
/* WARNING: Enum "gnutls_certificate_type_t": Some values do not have unique names */

int MHD_digest_auth_check2
              (MHD_Connection *connection,char *realm,char *username,char *password,
              uint nonce_timeout,MHD_DigestAuthAlgorithm algo)

{
  int iVar1;
  undefined *puVar2;
  DigestAlgorithm da;
  anon_union_65_2_f4d66228 skey;
  anon_union_112_2_f4d66228 ctx;
  int local_c;
  
  puVar2 = PTR___stack_chk_guard_0003f2ec;
  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;
  if (algo == MHD_DIGEST_ALG_MD5) {
    da.digest_size = 0x10;
    da.ctx = &ctx;
    da.alg = PTR_DAT_0003f05c + -0x2484;
    da.sessionkey = (char *)&skey;
    da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118;
    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c;
    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120;
  }
  else if ((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)) {
    da.digest_size = 0x20;
    da.ctx = &ctx;
    da.alg = PTR_DAT_0003f05c + -0x2480;
    da.sessionkey = (char *)&skey;
    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;
    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;
    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;
  }
  iVar1 = digest_auth_check_all(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)
  ;
  if (local_c != *(int *)puVar2) {
    puVar2 = PTR___stack_chk_fail_0003f2b8;
    (*(code *)PTR___stack_chk_fail_0003f2b8)();
    iVar1 = (**(code **)(puVar2 + 0x184e4))();
    return iVar1;
  }
  return iVar1;
}



void MHD_digest_auth_check2
               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
               undefined4 param_5,int param_6)

{
  undefined *puVar1;
  undefined4 local_e0;
  undefined1 *local_dc;
  undefined *local_d8;
  undefined1 *local_d4;
  undefined *local_d0;
  undefined *local_cc;
  undefined *local_c8;
  undefined1 auStack_c4 [68];
  undefined1 auStack_80 [116];
  int local_c;
  
  puVar1 = PTR___stack_chk_guard_0003f2ec;
  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;
  if (param_6 == 1) {
    local_e0 = 0x10;
    local_dc = auStack_80;
    local_d8 = PTR_DAT_0003f05c + -0x2484;
    local_d4 = auStack_c4;
    local_d0 = PTR_LAB_0003f118;
    local_cc = PTR_LAB_0003f11c;
    local_c8 = PTR_FUN_0003f120;
  }
  else if ((param_6 == 0) || (param_6 == 2)) {
    local_e0 = 0x20;
    local_dc = auStack_80;
    local_d8 = PTR_DAT_0003f05c + -0x2480;
    local_d4 = auStack_c4;
    local_d0 = PTR_LAB_0003f124;
    local_cc = PTR_FUN_0003f128;
    local_c8 = PTR_LAB_0003f12c;
  }
  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);
  if (local_c != *(int *)puVar1) {
    puVar1 = PTR___stack_chk_fail_0003f2b8;
    (*(code *)PTR___stack_chk_fail_0003f2b8)();
    (**(code **)(puVar1 + 0x184e4))();
    return;
  }
  return;
}


lui gp,0x2
addiu gp,gp,0x3a4
addu gp,gp,t9
addiu sp,sp,-0x108
or t1,a1,zero
li v1,0x1
lw v0,0x11c(sp)
or t0,a3,zero
sw s0,0x100(sp)
sw gp,0x20(sp)
sw ra,0x104(sp)
lw s0,-0x7d44(gp)
lw a1,0x0(s0)
sw a1,0xfc(sp)
beq v0,v1,0x00026d24
_nop
beq v0,zero,0x00026d64
_li v1,0x2
beq v0,v1,0x00026d68
_li v0,0x20
lw t9,-0x7fac(gp)
addiu a1,sp,0x28
lw v0,0x118(sp)
or a3,a2,zero
sw zero,0x14(sp)
or a2,t1,zero
addiu t9,t9,0x6170
sw t0,0x10(sp)
bal 0x00026170
_sw v0,0x18(sp)
lw a0,0xfc(sp)
lw v1,0x0(s0)
bne a0,v1,0x00026da4
_lw gp,0x20(sp)
lw ra,0x104(sp)
lw s0,0x100(sp)
jr ra
_addiu sp,sp,0x108
li v0,0x10
sw v0,0x28(sp)
addiu v0,sp,0x88
sw v0,0x2c(sp)
lw v0,-0x7fd4(gp)
addiu v0,v0,-0x2484
sw v0,0x30(sp)
addiu v0,sp,0x44
sw v0,0x34(sp)
lw v0,-0x7f18(gp)
sw v0,0x38(sp)
lw v0,-0x7f14(gp)
sw v0,0x3c(sp)
lw v0,-0x7f10(gp)
b 0x00026cdc
_sw v0,0x40(sp)
li v0,0x20
sw v0,0x28(sp)
addiu v0,sp,0x88
sw v0,0x2c(sp)
lw v0,-0x7fd4(gp)
addiu v0,v0,-0x2480
sw v0,0x30(sp)
addiu v0,sp,0x44
sw v0,0x34(sp)
lw v0,-0x7f0c(gp)
sw v0,0x38(sp)
lw v0,-0x7f08(gp)
sw v0,0x3c(sp)
lw v0,-0x7f04(gp)
b 0x00026cdc
_sw v0,0x40(sp)
lw t9,-0x7d78(gp)
jalr t9
_nop
(translation_unit "void MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)\n\n{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)\n\n{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 local_e0;" type_identifier identifier ;) (declaration "undefined1 *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "undefined *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "undefined1 *local_d4;" type_identifier (pointer_declarator "*local_d4" * identifier) ;) (declaration "undefined *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "undefined *local_cc;" type_identifier (pointer_declarator "*local_cc" * identifier) ;) (declaration "undefined *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "undefined1 auStack_c4 [68];" type_identifier (array_declarator "auStack_c4 [68]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_80 [116];" type_identifier (array_declarator "auStack_80 [116]" identifier [ number_literal ]) ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0003f2ec;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0003f2ec" identifier = identifier) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0003f2ec;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0003f2ec" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003f2ec" * (cast_expression "(int *)PTR___stack_chk_guard_0003f2ec" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" if (parenthesized_expression "(param_6 == 1)" ( (binary_expression "param_6 == 1" identifier == number_literal) )) (compound_statement "{\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }" { (expression_statement "local_e0 = 0x10;" (assignment_expression "local_e0 = 0x10" identifier = number_literal) ;) (expression_statement "local_dc = auStack_80;" (assignment_expression "local_dc = auStack_80" identifier = identifier) ;) (expression_statement "local_d8 = PTR_DAT_0003f05c + -0x2484;" (assignment_expression "local_d8 = PTR_DAT_0003f05c + -0x2484" identifier = (binary_expression "PTR_DAT_0003f05c + -0x2484" identifier + number_literal)) ;) (expression_statement "local_d4 = auStack_c4;" (assignment_expression "local_d4 = auStack_c4" identifier = identifier) ;) (expression_statement "local_d0 = PTR_LAB_0003f118;" (assignment_expression "local_d0 = PTR_LAB_0003f118" identifier = identifier) ;) (expression_statement "local_cc = PTR_LAB_0003f11c;" (assignment_expression "local_cc = PTR_LAB_0003f11c" identifier = identifier) ;) (expression_statement "local_c8 = PTR_FUN_0003f120;" (assignment_expression "local_c8 = PTR_FUN_0003f120" identifier = identifier) ;) }) (else_clause "else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" else (if_statement "if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" if (parenthesized_expression "((param_6 == 0) || (param_6 == 2))" ( (binary_expression "(param_6 == 0) || (param_6 == 2)" (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_6 == 2)" ( (binary_expression "param_6 == 2" identifier == number_literal) ))) )) (compound_statement "{\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" { (expression_statement "local_e0 = 0x20;" (assignment_expression "local_e0 = 0x20" identifier = number_literal) ;) (expression_statement "local_dc = auStack_80;" (assignment_expression "local_dc = auStack_80" identifier = identifier) ;) (expression_statement "local_d8 = PTR_DAT_0003f05c + -0x2480;" (assignment_expression "local_d8 = PTR_DAT_0003f05c + -0x2480" identifier = (binary_expression "PTR_DAT_0003f05c + -0x2480" identifier + number_literal)) ;) (expression_statement "local_d4 = auStack_c4;" (assignment_expression "local_d4 = auStack_c4" identifier = identifier) ;) (expression_statement "local_d0 = PTR_LAB_0003f124;" (assignment_expression "local_d0 = PTR_LAB_0003f124" identifier = identifier) ;) (expression_statement "local_cc = PTR_FUN_0003f128;" (assignment_expression "local_cc = PTR_FUN_0003f128" identifier = identifier) ;) (expression_statement "local_c8 = PTR_LAB_0003f12c;" (assignment_expression "local_c8 = PTR_LAB_0003f12c" identifier = identifier) ;) })))) (expression_statement "FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);" (call_expression "FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5)" identifier (argument_list "(param_1,&local_e0,param_2,param_3,param_4,0,param_5)" ( identifier , (pointer_expression "&local_e0" & identifier) , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }" if (parenthesized_expression "(local_c != *(int *)puVar1)" ( (binary_expression "local_c != *(int *)puVar1" identifier != (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }" { (expression_statement "puVar1 = PTR___stack_chk_fail_0003f2b8;" (assignment_expression "puVar1 = PTR___stack_chk_fail_0003f2b8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0003f2b8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003f2b8" * (cast_expression "(code *)PTR___stack_chk_fail_0003f2b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(puVar1 + 0x184e4))();" (call_expression "(**(code **)(puVar1 + 0x184e4))()" (parenthesized_expression "(**(code **)(puVar1 + 0x184e4))" ( (pointer_expression "**(code **)(puVar1 + 0x184e4)" * (pointer_expression "*(code **)(puVar1 + 0x184e4)" * (cast_expression "(code **)(puVar1 + 0x184e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x184e4)" ( (binary_expression "puVar1 + 0x184e4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "MHD_FLAG": Some values do not have unique names */\n/* WARNING: Enum "gnutls_pk_algorithm_t": Some values do not have unique names */\n/* WARNING: Enum "gnutls_certificate_type_t": Some values do not have unique names */\n\nint MHD_digest_auth_check2\n              (MHD_Connection *connection,char *realm,char *username,char *password,\n              uint nonce_timeout,MHD_DigestAuthAlgorithm algo)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  DigestAlgorithm da;\n  anon_union_65_2_f4d66228 skey;\n  anon_union_112_2_f4d66228 ctx;\n  int local_c;\n  \n  puVar2 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (algo == MHD_DIGEST_ALG_MD5) {\n    da.digest_size = 0x10;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2484;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120;\n  }\n  else if ((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)) {\n    da.digest_size = 0x20;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2480;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;\n  }\n  iVar1 = digest_auth_check_all(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)\n  ;\n  if (local_c != *(int *)puVar2) {\n    puVar2 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    iVar1 = (**(code **)(puVar2 + 0x184e4))();\n    return iVar1;\n  }\n  return iVar1;\n}\n\n" comment comment comment (function_definition "int MHD_digest_auth_check2\n              (MHD_Connection *connection,char *realm,char *username,char *password,\n              uint nonce_timeout,MHD_DigestAuthAlgorithm algo)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  DigestAlgorithm da;\n  anon_union_65_2_f4d66228 skey;\n  anon_union_112_2_f4d66228 ctx;\n  int local_c;\n  \n  puVar2 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (algo == MHD_DIGEST_ALG_MD5) {\n    da.digest_size = 0x10;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2484;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120;\n  }\n  else if ((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)) {\n    da.digest_size = 0x20;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2480;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;\n  }\n  iVar1 = digest_auth_check_all(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)\n  ;\n  if (local_c != *(int *)puVar2) {\n    puVar2 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    iVar1 = (**(code **)(puVar2 + 0x184e4))();\n    return iVar1;\n  }\n  return iVar1;\n}" primitive_type (function_declarator "MHD_digest_auth_check2\n              (MHD_Connection *connection,char *realm,char *username,char *password,\n              uint nonce_timeout,MHD_DigestAuthAlgorithm algo)" identifier (parameter_list "(MHD_Connection *connection,char *realm,char *username,char *password,\n              uint nonce_timeout,MHD_DigestAuthAlgorithm algo)" ( (parameter_declaration "MHD_Connection *connection" type_identifier (pointer_declarator "*connection" * identifier)) , (parameter_declaration "char *realm" primitive_type (pointer_declarator "*realm" * identifier)) , (parameter_declaration "char *username" primitive_type (pointer_declarator "*username" * identifier)) , (parameter_declaration "char *password" primitive_type (pointer_declarator "*password" * identifier)) , (parameter_declaration "uint nonce_timeout" type_identifier identifier) , (parameter_declaration "MHD_DigestAuthAlgorithm algo" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  DigestAlgorithm da;\n  anon_union_65_2_f4d66228 skey;\n  anon_union_112_2_f4d66228 ctx;\n  int local_c;\n  \n  puVar2 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (algo == MHD_DIGEST_ALG_MD5) {\n    da.digest_size = 0x10;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2484;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120;\n  }\n  else if ((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)) {\n    da.digest_size = 0x20;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2480;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;\n  }\n  iVar1 = digest_auth_check_all(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)\n  ;\n  if (local_c != *(int *)puVar2) {\n    puVar2 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    iVar1 = (**(code **)(puVar2 + 0x184e4))();\n    return iVar1;\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "DigestAlgorithm da;" type_identifier identifier ;) (declaration "anon_union_65_2_f4d66228 skey;" type_identifier identifier ;) (declaration "anon_union_112_2_f4d66228 ctx;" type_identifier identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0003f2ec;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0003f2ec" identifier = identifier) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0003f2ec;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0003f2ec" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003f2ec" * (cast_expression "(int *)PTR___stack_chk_guard_0003f2ec" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (algo == MHD_DIGEST_ALG_MD5) {\n    da.digest_size = 0x10;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2484;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120;\n  }\n  else if ((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)) {\n    da.digest_size = 0x20;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2480;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;\n  }" if (parenthesized_expression "(algo == MHD_DIGEST_ALG_MD5)" ( (binary_expression "algo == MHD_DIGEST_ALG_MD5" identifier == identifier) )) (compound_statement "{\n    da.digest_size = 0x10;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2484;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120;\n  }" { (expression_statement "da.digest_size = 0x10;" (assignment_expression "da.digest_size = 0x10" (field_expression "da.digest_size" identifier . field_identifier) = number_literal) ;) (expression_statement "da.ctx = &ctx;" (assignment_expression "da.ctx = &ctx" (field_expression "da.ctx" identifier . field_identifier) = (pointer_expression "&ctx" & identifier)) ;) (expression_statement "da.alg = PTR_DAT_0003f05c + -0x2484;" (assignment_expression "da.alg = PTR_DAT_0003f05c + -0x2484" (field_expression "da.alg" identifier . field_identifier) = (binary_expression "PTR_DAT_0003f05c + -0x2484" identifier + number_literal)) ;) (expression_statement "da.sessionkey = (char *)&skey;" (assignment_expression "da.sessionkey = (char *)&skey" (field_expression "da.sessionkey" identifier . field_identifier) = (cast_expression "(char *)&skey" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&skey" & identifier))) ;) (expression_statement "da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118;" (assignment_expression "da.init = (_func_void_void_ptr *)PTR_MD5Init_0003f118" (field_expression "da.init" identifier . field_identifier) = (cast_expression "(_func_void_void_ptr *)PTR_MD5Init_0003f118" ( (type_descriptor "_func_void_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c;" (assignment_expression "da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c" (field_expression "da.update" identifier . field_identifier) = (cast_expression "(_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_MD5Update_0003f11c" ( (type_descriptor "_func_void_void_ptr_uint8_t_ptr_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120;" (assignment_expression "da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120" (field_expression "da.digest" identifier . field_identifier) = (cast_expression "(_func_void_void_ptr_uint8_t_ptr *)PTR_MD5Final_0003f120" ( (type_descriptor "_func_void_void_ptr_uint8_t_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else if ((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)) {\n    da.digest_size = 0x20;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2480;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;\n  }" else (if_statement "if ((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)) {\n    da.digest_size = 0x20;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2480;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;\n  }" if (parenthesized_expression "((algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256))" ( (binary_expression "(algo == MHD_DIGEST_ALG_AUTO) || (algo == MHD_DIGEST_ALG_SHA256)" (parenthesized_expression "(algo == MHD_DIGEST_ALG_AUTO)" ( (binary_expression "algo == MHD_DIGEST_ALG_AUTO" identifier == identifier) )) || (parenthesized_expression "(algo == MHD_DIGEST_ALG_SHA256)" ( (binary_expression "algo == MHD_DIGEST_ALG_SHA256" identifier == identifier) ))) )) (compound_statement "{\n    da.digest_size = 0x20;\n    da.ctx = &ctx;\n    da.alg = PTR_DAT_0003f05c + -0x2480;\n    da.sessionkey = (char *)&skey;\n    da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;\n    da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;\n    da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;\n  }" { (expression_statement "da.digest_size = 0x20;" (assignment_expression "da.digest_size = 0x20" (field_expression "da.digest_size" identifier . field_identifier) = number_literal) ;) (expression_statement "da.ctx = &ctx;" (assignment_expression "da.ctx = &ctx" (field_expression "da.ctx" identifier . field_identifier) = (pointer_expression "&ctx" & identifier)) ;) (expression_statement "da.alg = PTR_DAT_0003f05c + -0x2480;" (assignment_expression "da.alg = PTR_DAT_0003f05c + -0x2480" (field_expression "da.alg" identifier . field_identifier) = (binary_expression "PTR_DAT_0003f05c + -0x2480" identifier + number_literal)) ;) (expression_statement "da.sessionkey = (char *)&skey;" (assignment_expression "da.sessionkey = (char *)&skey" (field_expression "da.sessionkey" identifier . field_identifier) = (cast_expression "(char *)&skey" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&skey" & identifier))) ;) (expression_statement "da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124;" (assignment_expression "da.init = (_func_void_void_ptr *)PTR_sha256_init_0003f124" (field_expression "da.init" identifier . field_identifier) = (cast_expression "(_func_void_void_ptr *)PTR_sha256_init_0003f124" ( (type_descriptor "_func_void_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128;" (assignment_expression "da.update = (_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128" (field_expression "da.update" identifier . field_identifier) = (cast_expression "(_func_void_void_ptr_uint8_t_ptr_size_t *)PTR_sha256_update_0003f128" ( (type_descriptor "_func_void_void_ptr_uint8_t_ptr_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c;" (assignment_expression "da.digest = (_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c" (field_expression "da.digest" identifier . field_identifier) = (cast_expression "(_func_void_void_ptr_uint8_t_ptr *)PTR_sha256_digest_0003f12c" ( (type_descriptor "_func_void_void_ptr_uint8_t_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })))) (expression_statement "iVar1 = digest_auth_check_all(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)\n  ;" (assignment_expression "iVar1 = digest_auth_check_all(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)" identifier = (call_expression "digest_auth_check_all(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)" identifier (argument_list "(connection,&da,realm,username,password,(uint8_t *)0x0,nonce_timeout)" ( identifier , (pointer_expression "&da" & identifier) , identifier , identifier , identifier , (cast_expression "(uint8_t *)0x0" ( (type_descriptor "uint8_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) (if_statement "if (local_c != *(int *)puVar2) {\n    puVar2 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    iVar1 = (**(code **)(puVar2 + 0x184e4))();\n    return iVar1;\n  }" if (parenthesized_expression "(local_c != *(int *)puVar2)" ( (binary_expression "local_c != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar2 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    iVar1 = (**(code **)(puVar2 + 0x184e4))();\n    return iVar1;\n  }" { (expression_statement "puVar2 = PTR___stack_chk_fail_0003f2b8;" (assignment_expression "puVar2 = PTR___stack_chk_fail_0003f2b8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0003f2b8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003f2b8" * (cast_expression "(code *)PTR___stack_chk_fail_0003f2b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar1 = (**(code **)(puVar2 + 0x184e4))();" (assignment_expression "iVar1 = (**(code **)(puVar2 + 0x184e4))()" identifier = (call_expression "(**(code **)(puVar2 + 0x184e4))()" (parenthesized_expression "(**(code **)(puVar2 + 0x184e4))" ( (pointer_expression "**(code **)(puVar2 + 0x184e4)" * (pointer_expression "*(code **)(puVar2 + 0x184e4)" * (cast_expression "(code **)(puVar2 + 0x184e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x184e4)" ( (binary_expression "puVar2 + 0x184e4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "void MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)\n\n{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)\n\n{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 local_e0;" type_identifier identifier ;) (declaration "undefined1 *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "undefined *local_d8;" type_identifier (pointer_declarator "*local_d8" * identifier) ;) (declaration "undefined1 *local_d4;" type_identifier (pointer_declarator "*local_d4" * identifier) ;) (declaration "undefined *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "undefined *local_cc;" type_identifier (pointer_declarator "*local_cc" * identifier) ;) (declaration "undefined *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "undefined1 auStack_c4 [68];" type_identifier (array_declarator "auStack_c4 [68]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_80 [116];" type_identifier (array_declarator "auStack_80 [116]" identifier [ number_literal ]) ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0003f2ec;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0003f2ec" identifier = identifier) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0003f2ec;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0003f2ec" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003f2ec" * (cast_expression "(int *)PTR___stack_chk_guard_0003f2ec" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" if (parenthesized_expression "(param_6 == 1)" ( (binary_expression "param_6 == 1" identifier == number_literal) )) (compound_statement "{\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }" { (expression_statement "local_e0 = 0x10;" (assignment_expression "local_e0 = 0x10" identifier = number_literal) ;) (expression_statement "local_dc = auStack_80;" (assignment_expression "local_dc = auStack_80" identifier = identifier) ;) (expression_statement "local_d8 = PTR_DAT_0003f05c + -0x2484;" (assignment_expression "local_d8 = PTR_DAT_0003f05c + -0x2484" identifier = (binary_expression "PTR_DAT_0003f05c + -0x2484" identifier + number_literal)) ;) (expression_statement "local_d4 = auStack_c4;" (assignment_expression "local_d4 = auStack_c4" identifier = identifier) ;) (expression_statement "local_d0 = PTR_LAB_0003f118;" (assignment_expression "local_d0 = PTR_LAB_0003f118" identifier = identifier) ;) (expression_statement "local_cc = PTR_LAB_0003f11c;" (assignment_expression "local_cc = PTR_LAB_0003f11c" identifier = identifier) ;) (expression_statement "local_c8 = PTR_FUN_0003f120;" (assignment_expression "local_c8 = PTR_FUN_0003f120" identifier = identifier) ;) }) (else_clause "else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" else (if_statement "if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" if (parenthesized_expression "((param_6 == 0) || (param_6 == 2))" ( (binary_expression "(param_6 == 0) || (param_6 == 2)" (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_6 == 2)" ( (binary_expression "param_6 == 2" identifier == number_literal) ))) )) (compound_statement "{\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" { (expression_statement "local_e0 = 0x20;" (assignment_expression "local_e0 = 0x20" identifier = number_literal) ;) (expression_statement "local_dc = auStack_80;" (assignment_expression "local_dc = auStack_80" identifier = identifier) ;) (expression_statement "local_d8 = PTR_DAT_0003f05c + -0x2480;" (assignment_expression "local_d8 = PTR_DAT_0003f05c + -0x2480" identifier = (binary_expression "PTR_DAT_0003f05c + -0x2480" identifier + number_literal)) ;) (expression_statement "local_d4 = auStack_c4;" (assignment_expression "local_d4 = auStack_c4" identifier = identifier) ;) (expression_statement "local_d0 = PTR_LAB_0003f124;" (assignment_expression "local_d0 = PTR_LAB_0003f124" identifier = identifier) ;) (expression_statement "local_cc = PTR_FUN_0003f128;" (assignment_expression "local_cc = PTR_FUN_0003f128" identifier = identifier) ;) (expression_statement "local_c8 = PTR_LAB_0003f12c;" (assignment_expression "local_c8 = PTR_LAB_0003f12c" identifier = identifier) ;) })))) (expression_statement "FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);" (call_expression "FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5)" identifier (argument_list "(param_1,&local_e0,param_2,param_3,param_4,0,param_5)" ( identifier , (pointer_expression "&local_e0" & identifier) , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }" if (parenthesized_expression "(local_c != *(int *)puVar1)" ( (binary_expression "local_c != *(int *)puVar1" identifier != (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }" { (expression_statement "puVar1 = PTR___stack_chk_fail_0003f2b8;" (assignment_expression "puVar1 = PTR___stack_chk_fail_0003f2b8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0003f2b8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003f2b8" * (cast_expression "(code *)PTR___stack_chk_fail_0003f2b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(puVar1 + 0x184e4))();" (call_expression "(**(code **)(puVar1 + 0x184e4))()" (parenthesized_expression "(**(code **)(puVar1 + 0x184e4))" ( (pointer_expression "**(code **)(puVar1 + 0x184e4)" * (pointer_expression "*(code **)(puVar1 + 0x184e4)" * (cast_expression "(code **)(puVar1 + 0x184e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x184e4)" ( (binary_expression "puVar1 + 0x184e4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (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 (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 ( ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)\n\n{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "MHD_digest_auth_check2\n               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)" (identifier "MHD_digest_auth_check2") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n               undefined4 param_5,int param_6)" (( "(") (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") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 local_e0;\n  undefined1 *local_dc;\n  undefined *local_d8;\n  undefined1 *local_d4;\n  undefined *local_d0;\n  undefined *local_cc;\n  undefined *local_c8;\n  undefined1 auStack_c4 [68];\n  undefined1 auStack_80 [116];\n  int local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0003f2ec;\n  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;\n  if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }\n  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);\n  if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 local_e0;" (type_identifier "undefined4") (identifier "local_e0") (; ";")) (declaration "undefined1 *local_dc;" (type_identifier "undefined1") (pointer_declarator "*local_dc" (* "*") (identifier "local_dc")) (; ";")) (declaration "undefined *local_d8;" (type_identifier "undefined") (pointer_declarator "*local_d8" (* "*") (identifier "local_d8")) (; ";")) (declaration "undefined1 *local_d4;" (type_identifier "undefined1") (pointer_declarator "*local_d4" (* "*") (identifier "local_d4")) (; ";")) (declaration "undefined *local_d0;" (type_identifier "undefined") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (declaration "undefined *local_cc;" (type_identifier "undefined") (pointer_declarator "*local_cc" (* "*") (identifier "local_cc")) (; ";")) (declaration "undefined *local_c8;" (type_identifier "undefined") (pointer_declarator "*local_c8" (* "*") (identifier "local_c8")) (; ";")) (declaration "undefined1 auStack_c4 [68];" (type_identifier "undefined1") (array_declarator "auStack_c4 [68]" (identifier "auStack_c4") ([ "[") (number_literal "68") (] "]")) (; ";")) (declaration "undefined1 auStack_80 [116];" (type_identifier "undefined1") (array_declarator "auStack_80 [116]" (identifier "auStack_80") ([ "[") (number_literal "116") (] "]")) (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_0003f2ec;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0003f2ec" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_0003f2ec")) (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0003f2ec;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0003f2ec" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0003f2ec" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0003f2ec" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0003f2ec")))) (; ";")) (if_statement "if (param_6 == 1) {\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }\n  else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" (if "if") (parenthesized_expression "(param_6 == 1)" (( "(") (binary_expression "param_6 == 1" (identifier "param_6") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    local_e0 = 0x10;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2484;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f118;\n    local_cc = PTR_LAB_0003f11c;\n    local_c8 = PTR_FUN_0003f120;\n  }" ({ "{") (expression_statement "local_e0 = 0x10;" (assignment_expression "local_e0 = 0x10" (identifier "local_e0") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "local_dc = auStack_80;" (assignment_expression "local_dc = auStack_80" (identifier "local_dc") (= "=") (identifier "auStack_80")) (; ";")) (expression_statement "local_d8 = PTR_DAT_0003f05c + -0x2484;" (assignment_expression "local_d8 = PTR_DAT_0003f05c + -0x2484" (identifier "local_d8") (= "=") (binary_expression "PTR_DAT_0003f05c + -0x2484" (identifier "PTR_DAT_0003f05c") (+ "+") (number_literal "-0x2484"))) (; ";")) (expression_statement "local_d4 = auStack_c4;" (assignment_expression "local_d4 = auStack_c4" (identifier "local_d4") (= "=") (identifier "auStack_c4")) (; ";")) (expression_statement "local_d0 = PTR_LAB_0003f118;" (assignment_expression "local_d0 = PTR_LAB_0003f118" (identifier "local_d0") (= "=") (identifier "PTR_LAB_0003f118")) (; ";")) (expression_statement "local_cc = PTR_LAB_0003f11c;" (assignment_expression "local_cc = PTR_LAB_0003f11c" (identifier "local_cc") (= "=") (identifier "PTR_LAB_0003f11c")) (; ";")) (expression_statement "local_c8 = PTR_FUN_0003f120;" (assignment_expression "local_c8 = PTR_FUN_0003f120" (identifier "local_c8") (= "=") (identifier "PTR_FUN_0003f120")) (; ";")) (} "}")) (else_clause "else if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" (else "else") (if_statement "if ((param_6 == 0) || (param_6 == 2)) {\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" (if "if") (parenthesized_expression "((param_6 == 0) || (param_6 == 2))" (( "(") (binary_expression "(param_6 == 0) || (param_6 == 2)" (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_6 == 2)" (( "(") (binary_expression "param_6 == 2" (identifier "param_6") (== "==") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n    local_e0 = 0x20;\n    local_dc = auStack_80;\n    local_d8 = PTR_DAT_0003f05c + -0x2480;\n    local_d4 = auStack_c4;\n    local_d0 = PTR_LAB_0003f124;\n    local_cc = PTR_FUN_0003f128;\n    local_c8 = PTR_LAB_0003f12c;\n  }" ({ "{") (expression_statement "local_e0 = 0x20;" (assignment_expression "local_e0 = 0x20" (identifier "local_e0") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "local_dc = auStack_80;" (assignment_expression "local_dc = auStack_80" (identifier "local_dc") (= "=") (identifier "auStack_80")) (; ";")) (expression_statement "local_d8 = PTR_DAT_0003f05c + -0x2480;" (assignment_expression "local_d8 = PTR_DAT_0003f05c + -0x2480" (identifier "local_d8") (= "=") (binary_expression "PTR_DAT_0003f05c + -0x2480" (identifier "PTR_DAT_0003f05c") (+ "+") (number_literal "-0x2480"))) (; ";")) (expression_statement "local_d4 = auStack_c4;" (assignment_expression "local_d4 = auStack_c4" (identifier "local_d4") (= "=") (identifier "auStack_c4")) (; ";")) (expression_statement "local_d0 = PTR_LAB_0003f124;" (assignment_expression "local_d0 = PTR_LAB_0003f124" (identifier "local_d0") (= "=") (identifier "PTR_LAB_0003f124")) (; ";")) (expression_statement "local_cc = PTR_FUN_0003f128;" (assignment_expression "local_cc = PTR_FUN_0003f128" (identifier "local_cc") (= "=") (identifier "PTR_FUN_0003f128")) (; ";")) (expression_statement "local_c8 = PTR_LAB_0003f12c;" (assignment_expression "local_c8 = PTR_LAB_0003f12c" (identifier "local_c8") (= "=") (identifier "PTR_LAB_0003f12c")) (; ";")) (} "}"))))) (expression_statement "FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);" (call_expression "FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5)" (identifier "FUN_00026170") (argument_list "(param_1,&local_e0,param_2,param_3,param_4,0,param_5)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_e0" (& "&") (identifier "local_e0")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (number_literal "0") (, ",") (identifier "param_5") () ")"))) (; ";")) (if_statement "if (local_c != *(int *)puVar1) {\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }" (if "if") (parenthesized_expression "(local_c != *(int *)puVar1)" (( "(") (binary_expression "local_c != *(int *)puVar1" (identifier "local_c") (!= "!=") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    puVar1 = PTR___stack_chk_fail_0003f2b8;\n    (*(code *)PTR___stack_chk_fail_0003f2b8)();\n    (**(code **)(puVar1 + 0x184e4))();\n    return;\n  }" ({ "{") (expression_statement "puVar1 = PTR___stack_chk_fail_0003f2b8;" (assignment_expression "puVar1 = PTR___stack_chk_fail_0003f2b8" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_fail_0003f2b8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0003f2b8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003f2b8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0003f2b8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0003f2b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0003f2b8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar1 + 0x184e4))();" (call_expression "(**(code **)(puVar1 + 0x184e4))()" (parenthesized_expression "(**(code **)(puVar1 + 0x184e4))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x184e4)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x184e4)" (* "*") (cast_expression "(code **)(puVar1 + 0x184e4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x184e4)" (( "(") (binary_expression "puVar1 + 0x184e4" (identifier "puVar1") (+ "+") (number_literal "0x184e4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier) (identifier) (number_literal) (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 (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 (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))) (return_statement))) (return_statement))))

void MASKED
               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
               undefined4 param_5,int param_6)

{
  undefined *puVar1;
  undefined4 local_e0;
  undefined1 *local_dc;
  undefined *local_d8;
  undefined1 *local_d4;
  undefined *local_d0;
  undefined *local_cc;
  undefined *local_c8;
  undefined1 auStack_c4 [68];
  undefined1 auStack_80 [116];
  int local_c;
  
  puVar1 = PTR___stack_chk_guard_0003f2ec;
  local_c = *(int *)PTR___stack_chk_guard_0003f2ec;
  if (param_6 == 1) {
    local_e0 = 0x10;
    local_dc = auStack_80;
    local_d8 = PTR_DAT_0003f05c + -0x2484;
    local_d4 = auStack_c4;
    local_d0 = PTR_LAB_0003f118;
    local_cc = PTR_LAB_0003f11c;
    local_c8 = PTR_FUN_0003f120;
  }
  else if ((param_6 == 0) || (param_6 == 2)) {
    local_e0 = 0x20;
    local_dc = auStack_80;
    local_d8 = PTR_DAT_0003f05c + -0x2480;
    local_d4 = auStack_c4;
    local_d0 = PTR_LAB_0003f124;
    local_cc = PTR_FUN_0003f128;
    local_c8 = PTR_LAB_0003f12c;
  }
  FUN_00026170(param_1,&local_e0,param_2,param_3,param_4,0,param_5);
  if (local_c != *(int *)puVar1) {
    puVar1 = PTR___stack_chk_fail_0003f2b8;
    (*(code *)PTR___stack_chk_fail_0003f2b8)();
    (**(code **)(puVar1 + 0x184e4))();
    return;
  }
  return;
}

