
int check_password(passwd *pw,char *plaintext)

{
  undefined *puVar1;
  passwd *ppVar2;
  char *salt;
  char *pcVar3;
  int iVar4;
  char *pcVar5;
  char *in_a2;
  uint uVar6;
  int *piVar7;
  undefined *puVar8;
  code *pcVar9;
  char acStack_254 [256];
  passwd *ppStack_154;
  char *pcStack_14c;
  undefined *puStack_148;
  uint uStack_144;
  char *pcStack_140;
  code *pcStack_13c;
  char buffer [256];
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  pcVar5 = buffer;
  uVar6 = 2;
  ppVar2 = *(passwd **)PTR___stack_chk_guard_0012b14c;
  salt = get_passwd(pw,pcVar5);
  pcVar3 = salt;
  if (*salt != '\0') {
    in_a2 = &DAT_00000001;
    pcVar3 = pw_encrypt(plaintext,salt,1);
    iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3);
    uVar6 = (uint)(iVar4 == 0);
    (*(code *)PTR_free_0012b168)(pcVar3);
    pcVar5 = salt;
  }
  if (ppVar2 == *(passwd **)puVar1) {
    return uVar6;
  }
  pcVar9 = ask_and_check_password_extended;
  puVar8 = PTR___stack_chk_fail_0012b0c8;
  (*(code *)PTR___stack_chk_fail_0012b0c8)();
  piVar7 = *(int **)(puVar8 + 0x434b0);
  puStack_148 = puVar1;
  iVar4 = 2;
  ppStack_154 = (passwd *)*piVar7;
  pcStack_14c = pcVar3;
  uStack_144 = uVar6;
  pcStack_140 = plaintext;
  pcStack_13c = pcVar9;
  pcVar3 = get_passwd(ppVar2,acStack_254);
  if (*pcVar3 != '\0') {
    iVar4 = -1;
    pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2);
    if (pcVar5 != (char *)0x0) {
      iVar4 = check_password(ppVar2,pcVar5);
      nuke_str(pcVar5);
    }
  }
  if (ppStack_154 == (passwd *)*piVar7) {
    return iVar4;
  }
  pcVar9 = *(code **)(puVar8 + 0x4342c);
  ppVar2 = ppStack_154;
  (*pcVar9)();
  iVar4 = ask_and_check_password_extended(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824));
  return iVar4;
}



int * FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  char *pcVar4;
  int *piVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  code *pcVar9;
  undefined *puVar10;
  int iVar11;
  undefined1 *puVar12;
  undefined4 uVar13;
  undefined1 auStack_138 [16];
  int aiStack_11c [64];
  int local_1c;
  
  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;
  piVar7 = aiStack_11c;
  piVar8 = (int *)&SUB_00000002;
  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;
  piVar1 = (int *)FUN_000e7adc();
  piVar2 = piVar1;
  if (*(char *)piVar1 != '\0') {
    param_3 = 1;
    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);
    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);
    piVar8 = (int *)(uint)(iVar3 == 0);
    (*(code *)PTR_free_0012b168)(piVar2);
    piVar7 = piVar1;
  }
  if (local_1c == *piVar5) {
    return piVar8;
  }
  uVar13 = 0xe7c9c;
  iVar3 = local_1c;
  puVar10 = PTR___stack_chk_fail_0012b0c8;
  (*(code *)PTR___stack_chk_fail_0012b0c8)();
  puVar12 = auStack_138;
  while( true ) {
    iVar6 = iVar3;
    *(int **)(puVar12 + -0xc) = piVar8;
    piVar8 = *(int **)(puVar10 + 0x434b0);
    *(int **)(puVar12 + -0x10) = piVar5;
    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;
    *(int *)(puVar12 + -8) = param_2;
    *(int **)(puVar12 + -0x14) = piVar2;
    piVar2 = (int *)&SUB_00000002;
    *(undefined4 *)(puVar12 + -4) = uVar13;
    *(int *)(puVar12 + -0x124) = param_3;
    *(int *)(puVar12 + -0x1c) = *piVar8;
    pcVar4 = (char *)FUN_000e7adc();
    iVar11 = *(int *)(puVar12 + -0x130);
    piVar5 = piVar7;
    if (*pcVar4 != '\0') {
      piVar2 = (int *)0xffffffff;
      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));
      iVar11 = *(int *)(puVar12 + -0x130);
      if (piVar5 != (int *)0x0) {
        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);
        FUN_000f2bc8(piVar5);
        iVar11 = *(int *)(puVar12 + -0x130);
      }
    }
    iVar3 = *(int *)(puVar12 + -0x1c);
    if (iVar3 == *piVar8) break;
    pcVar9 = *(code **)(iVar11 + -0x7088);
    uVar13 = 0xe7d84;
    (*pcVar9)();
    piVar7 = (int *)0x0;
    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);
    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;
    param_2 = iVar6;
    puVar12 = puVar12 + -0x140;
  }
  return piVar2;
}


lui gp,0x5
addiu gp,gp,-0x5a70
addu gp,gp,t9
addiu sp,sp,-0x138
lw t9,-0x756c(gp)
sw s1,0x128(sp)
addiu t9,t9,0x7adc
lw s1,-0x7004(gp)
sw s3,0x130(sp)
or s3,a1,zero
addiu a1,sp,0x1c
sw gp,0x10(sp)
sw s2,0x12c(sp)
li s2,0x2
sw s0,0x124(sp)
sw ra,0x134(sp)
lw v0,0x0(s1)
sw v0,0x11c(sp)
bal 0x000e7adc
_nop
or s0,v0,zero
lbu v0,0x0(v0)
beq v0,zero,0x000e7c64
_lw gp,0x10(sp)
lw t9,-0x7e58(gp)
li a2,0x1
or a1,s0,zero
bal 0x000f66b4
_or a0,s3,zero
or a1,s0,zero
lw gp,0x10(sp)
or a0,v0,zero
lw t9,-0x6f88(gp)
jalr t9
_or s0,v0,zero
or a0,s0,zero
lw gp,0x10(sp)
lw t9,-0x6fe8(gp)
jalr t9
_sltiu s2,v0,0x1
lw gp,0x10(sp)
lw a0,0x11c(sp)
or v0,s2,zero
lw v1,0x0(s1)
bne a0,v1,0x000e7c90
_lw ra,0x134(sp)
lw s3,0x130(sp)
lw s2,0x12c(sp)
lw s1,0x128(sp)
lw s0,0x124(sp)
jr ra
_addiu sp,sp,0x138
lw t9,-0x7088(gp)
jalr t9
_nop
lui gp,0x5
addiu gp,gp,-0x5b4c
addu gp,gp,t9
addiu sp,sp,-0x140
lw t9,-0x756c(gp)
sw s2,0x134(sp)
addiu t9,t9,0x7adc
lw s2,-0x7004(gp)
sw s1,0x130(sp)
or s1,a1,zero
addiu a1,sp,0x24
sw gp,0x10(sp)
sw s3,0x138(sp)
or s3,a0,zero
sw s0,0x12c(sp)
li s0,0x2
sw ra,0x13c(sp)
sw a2,0x1c(sp)
lw v0,0x0(s2)
sw v0,0x124(sp)
bal 0x000e7adc
_nop
lbu v0,0x0(v0)
beq v0,zero,0x000e7d4c
_lw gp,0x10(sp)
lw t9,-0x7550(gp)
or a0,zero,zero
lw a2,0x1c(sp)
or a1,s1,zero
bal 0x000e6074
_li s0,-0x1
lw gp,0x10(sp)
beq v0,zero,0x000e7d4c
_or s1,v0,zero
lw t9,-0x7544(gp)
or a0,s3,zero
bal 0x000e7bc0
_or a1,v0,zero
or a0,s1,zero
lw gp,0x10(sp)
lw t9,-0x7554(gp)
bal 0x000f2bc8
_or s0,v0,zero
lw gp,0x10(sp)
lw a0,0x124(sp)
or v0,s0,zero
lw v1,0x0(s2)
bne a0,v1,0x000e7d78
_lw ra,0x13c(sp)
lw s3,0x138(sp)
lw s2,0x134(sp)
lw s1,0x130(sp)
lw s0,0x12c(sp)
jr ra
_addiu sp,sp,0x140
lw t9,-0x7088(gp)
jalr t9
_nop
lui gp,0x5
addiu gp,gp,-0x5c34
addu gp,gp,t9
lw a2,-0x7fc4(gp)
or a1,zero,zero
lw t9,-0x7540(gp)
b 0x000e7c9c
_addiu a2,a2,-0x824
(translation_unit "int * FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}\n\n" (function_definition "int * FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}" primitive_type (pointer_declarator "* FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)" * (function_declarator "FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "undefined1 auStack_138 [16];" type_identifier (array_declarator "auStack_138 [16]" identifier [ number_literal ]) ;) (declaration "int aiStack_11c [64];" primitive_type (array_declarator "aiStack_11c [64]" identifier [ number_literal ]) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "piVar5 = (int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "piVar5 = (int *)PTR___stack_chk_guard_0012b14c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar7 = aiStack_11c;" (assignment_expression "piVar7 = aiStack_11c" identifier = identifier) ;) (expression_statement "piVar8 = (int *)&SUB_00000002;" (assignment_expression "piVar8 = (int *)&SUB_00000002" identifier = (cast_expression "(int *)&SUB_00000002" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_00000002" & identifier))) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar1 = (int *)FUN_000e7adc();" (assignment_expression "piVar1 = (int *)FUN_000e7adc()" identifier = (cast_expression "(int *)FUN_000e7adc()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e7adc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" identifier = identifier) ;) (if_statement "if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }" if (parenthesized_expression "(*(char *)piVar1 != '\0')" ( (binary_expression "*(char *)piVar1 != '\0'" (pointer_expression "*(char *)piVar1" * (cast_expression "(char *)piVar1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }" { (expression_statement "param_3 = 1;" (assignment_expression "param_3 = 1" identifier = number_literal) ;) (expression_statement "piVar2 = (int *)FUN_000f66b4(param_2,piVar1);" (assignment_expression "piVar2 = (int *)FUN_000f66b4(param_2,piVar1)" identifier = (cast_expression "(int *)FUN_000f66b4(param_2,piVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000f66b4(param_2,piVar1)" identifier (argument_list "(param_2,piVar1)" ( identifier , identifier ))))) ;) (expression_statement "iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);" (assignment_expression "iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2)" identifier = (call_expression "(*(code *)PTR_strcmp_0012b1c8)(piVar2)" (parenthesized_expression "(*(code *)PTR_strcmp_0012b1c8)" ( (pointer_expression "*(code *)PTR_strcmp_0012b1c8" * (cast_expression "(code *)PTR_strcmp_0012b1c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar2)" ( identifier )))) ;) (expression_statement "piVar8 = (int *)(uint)(iVar3 == 0);" (assignment_expression "piVar8 = (int *)(uint)(iVar3 == 0)" identifier = (cast_expression "(int *)(uint)(iVar3 == 0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(piVar2);" (call_expression "(*(code *)PTR_free_0012b168)(piVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" identifier = identifier) ;) })) (if_statement "if (local_1c == *piVar5) {\n    return piVar8;\n  }" if (parenthesized_expression "(local_1c == *piVar5)" ( (binary_expression "local_1c == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return piVar8;\n  }" { (return_statement "return piVar8;" return identifier ;) })) (expression_statement "uVar13 = 0xe7c9c;" (assignment_expression "uVar13 = 0xe7c9c" identifier = number_literal) ;) (expression_statement "iVar3 = local_1c;" (assignment_expression "iVar3 = local_1c" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_0012b0c8;" (assignment_expression "puVar10 = PTR___stack_chk_fail_0012b0c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar12 = auStack_138;" (assignment_expression "puVar12 = auStack_138" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }" { (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" identifier = identifier) ;) (expression_statement "*(int **)(puVar12 + -0xc) = piVar8;" (assignment_expression "*(int **)(puVar12 + -0xc) = piVar8" (pointer_expression "*(int **)(puVar12 + -0xc)" * (cast_expression "(int **)(puVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(puVar10 + 0x434b0);" (assignment_expression "piVar8 = *(int **)(puVar10 + 0x434b0)" identifier = (pointer_expression "*(int **)(puVar10 + 0x434b0)" * (cast_expression "(int **)(puVar10 + 0x434b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x434b0)" ( (binary_expression "puVar10 + 0x434b0" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar12 + -0x10) = piVar5;" (assignment_expression "*(int **)(puVar12 + -0x10) = piVar5" (pointer_expression "*(int **)(puVar12 + -0x10)" * (cast_expression "(int **)(puVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;" (assignment_expression "*(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4" (pointer_expression "*(undefined **)(puVar12 + -0x130)" * (cast_expression "(undefined **)(puVar12 + -0x130)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) )))) = (binary_expression "puVar10 + 0x4a4b4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar12 + -8) = param_2;" (assignment_expression "*(int *)(puVar12 + -8) = param_2" (pointer_expression "*(int *)(puVar12 + -8)" * (cast_expression "(int *)(puVar12 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -8)" ( (binary_expression "puVar12 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0x14) = piVar2;" (assignment_expression "*(int **)(puVar12 + -0x14) = piVar2" (pointer_expression "*(int **)(puVar12 + -0x14)" * (cast_expression "(int **)(puVar12 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar2 = (int *)&SUB_00000002;" (assignment_expression "piVar2 = (int *)&SUB_00000002" identifier = (cast_expression "(int *)&SUB_00000002" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_00000002" & identifier))) ;) (expression_statement "*(undefined4 *)(puVar12 + -4) = uVar13;" (assignment_expression "*(undefined4 *)(puVar12 + -4) = uVar13" (pointer_expression "*(undefined4 *)(puVar12 + -4)" * (cast_expression "(undefined4 *)(puVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -4)" ( (binary_expression "puVar12 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar12 + -0x124) = param_3;" (assignment_expression "*(int *)(puVar12 + -0x124) = param_3" (pointer_expression "*(int *)(puVar12 + -0x124)" * (cast_expression "(int *)(puVar12 + -0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x124)" ( (binary_expression "puVar12 + -0x124" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar12 + -0x1c) = *piVar8;" (assignment_expression "*(int *)(puVar12 + -0x1c) = *piVar8" (pointer_expression "*(int *)(puVar12 + -0x1c)" * (cast_expression "(int *)(puVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x1c)" ( (binary_expression "puVar12 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "pcVar4 = (char *)FUN_000e7adc();" (assignment_expression "pcVar4 = (char *)FUN_000e7adc()" identifier = (cast_expression "(char *)FUN_000e7adc()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e7adc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" identifier = (pointer_expression "*(int *)(puVar12 + -0x130)" * (cast_expression "(int *)(puVar12 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = piVar7;" (assignment_expression "piVar5 = piVar7" identifier = identifier) ;) (if_statement "if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }" if (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }" { (expression_statement "piVar2 = (int *)0xffffffff;" (assignment_expression "piVar2 = (int *)0xffffffff" identifier = (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));" (assignment_expression "piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" identifier = (cast_expression "(int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" identifier (argument_list "(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" ( number_literal , identifier , (pointer_expression "*(undefined4 *)(puVar12 + -0x124)" * (cast_expression "(undefined4 *)(puVar12 + -0x124)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x124)" ( (binary_expression "puVar12 + -0x124" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" identifier = (pointer_expression "*(int *)(puVar12 + -0x130)" * (cast_expression "(int *)(puVar12 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }" { (expression_statement "piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);" (assignment_expression "piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5)" identifier = (cast_expression "(int *)FUN_000e7bc0(iVar6,piVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e7bc0(iVar6,piVar5)" identifier (argument_list "(iVar6,piVar5)" ( identifier , identifier ))))) ;) (expression_statement "FUN_000f2bc8(piVar5);" (call_expression "FUN_000f2bc8(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))) ;) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" identifier = (pointer_expression "*(int *)(puVar12 + -0x130)" * (cast_expression "(int *)(puVar12 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) ))))) ;) })) })) (expression_statement "iVar3 = *(int *)(puVar12 + -0x1c);" (assignment_expression "iVar3 = *(int *)(puVar12 + -0x1c)" identifier = (pointer_expression "*(int *)(puVar12 + -0x1c)" * (cast_expression "(int *)(puVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x1c)" ( (binary_expression "puVar12 + -0x1c" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == *piVar8) break;" if (parenthesized_expression "(iVar3 == *piVar8)" ( (binary_expression "iVar3 == *piVar8" identifier == (pointer_expression "*piVar8" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "pcVar9 = *(code **)(iVar11 + -0x7088);" (assignment_expression "pcVar9 = *(code **)(iVar11 + -0x7088)" identifier = (pointer_expression "*(code **)(iVar11 + -0x7088)" * (cast_expression "(code **)(iVar11 + -0x7088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + -0x7088)" ( (binary_expression "iVar11 + -0x7088" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = 0xe7d84;" (assignment_expression "uVar13 = 0xe7d84" identifier = number_literal) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar10 = *(undefined **)(pcVar9 + 0x42e8c);" (assignment_expression "puVar10 = *(undefined **)(pcVar9 + 0x42e8c)" identifier = (pointer_expression "*(undefined **)(pcVar9 + 0x42e8c)" * (cast_expression "(undefined **)(pcVar9 + 0x42e8c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x42e8c)" ( (binary_expression "pcVar9 + 0x42e8c" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;" (assignment_expression "param_3 = *(int *)(pcVar9 + 0x42408) + -0x824" identifier = (binary_expression "*(int *)(pcVar9 + 0x42408) + -0x824" (pointer_expression "*(int *)(pcVar9 + 0x42408)" * (cast_expression "(int *)(pcVar9 + 0x42408)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x42408)" ( (binary_expression "pcVar9 + 0x42408" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "param_2 = iVar6;" (assignment_expression "param_2 = iVar6" identifier = identifier) ;) (expression_statement "puVar12 = puVar12 + -0x140;" (assignment_expression "puVar12 = puVar12 + -0x140" identifier = (binary_expression "puVar12 + -0x140" identifier + number_literal)) ;) })) (return_statement "return piVar2;" return identifier ;) })))
(translation_unit "int check_password(passwd *pw,char *plaintext)\n\n{\n  undefined *puVar1;\n  passwd *ppVar2;\n  char *salt;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  char *in_a2;\n  uint uVar6;\n  int *piVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  char acStack_254 [256];\n  passwd *ppStack_154;\n  char *pcStack_14c;\n  undefined *puStack_148;\n  uint uStack_144;\n  char *pcStack_140;\n  code *pcStack_13c;\n  char buffer [256];\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar5 = buffer;\n  uVar6 = 2;\n  ppVar2 = *(passwd **)PTR___stack_chk_guard_0012b14c;\n  salt = get_passwd(pw,pcVar5);\n  pcVar3 = salt;\n  if (*salt != '\0') {\n    in_a2 = &DAT_00000001;\n    pcVar3 = pw_encrypt(plaintext,salt,1);\n    iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3);\n    uVar6 = (uint)(iVar4 == 0);\n    (*(code *)PTR_free_0012b168)(pcVar3);\n    pcVar5 = salt;\n  }\n  if (ppVar2 == *(passwd **)puVar1) {\n    return uVar6;\n  }\n  pcVar9 = ask_and_check_password_extended;\n  puVar8 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  piVar7 = *(int **)(puVar8 + 0x434b0);\n  puStack_148 = puVar1;\n  iVar4 = 2;\n  ppStack_154 = (passwd *)*piVar7;\n  pcStack_14c = pcVar3;\n  uStack_144 = uVar6;\n  pcStack_140 = plaintext;\n  pcStack_13c = pcVar9;\n  pcVar3 = get_passwd(ppVar2,acStack_254);\n  if (*pcVar3 != '\0') {\n    iVar4 = -1;\n    pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2);\n    if (pcVar5 != (char *)0x0) {\n      iVar4 = check_password(ppVar2,pcVar5);\n      nuke_str(pcVar5);\n    }\n  }\n  if (ppStack_154 == (passwd *)*piVar7) {\n    return iVar4;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x4342c);\n  ppVar2 = ppStack_154;\n  (*pcVar9)();\n  iVar4 = ask_and_check_password_extended(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824));\n  return iVar4;\n}\n\n" (function_definition "int check_password(passwd *pw,char *plaintext)\n\n{\n  undefined *puVar1;\n  passwd *ppVar2;\n  char *salt;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  char *in_a2;\n  uint uVar6;\n  int *piVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  char acStack_254 [256];\n  passwd *ppStack_154;\n  char *pcStack_14c;\n  undefined *puStack_148;\n  uint uStack_144;\n  char *pcStack_140;\n  code *pcStack_13c;\n  char buffer [256];\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar5 = buffer;\n  uVar6 = 2;\n  ppVar2 = *(passwd **)PTR___stack_chk_guard_0012b14c;\n  salt = get_passwd(pw,pcVar5);\n  pcVar3 = salt;\n  if (*salt != '\0') {\n    in_a2 = &DAT_00000001;\n    pcVar3 = pw_encrypt(plaintext,salt,1);\n    iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3);\n    uVar6 = (uint)(iVar4 == 0);\n    (*(code *)PTR_free_0012b168)(pcVar3);\n    pcVar5 = salt;\n  }\n  if (ppVar2 == *(passwd **)puVar1) {\n    return uVar6;\n  }\n  pcVar9 = ask_and_check_password_extended;\n  puVar8 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  piVar7 = *(int **)(puVar8 + 0x434b0);\n  puStack_148 = puVar1;\n  iVar4 = 2;\n  ppStack_154 = (passwd *)*piVar7;\n  pcStack_14c = pcVar3;\n  uStack_144 = uVar6;\n  pcStack_140 = plaintext;\n  pcStack_13c = pcVar9;\n  pcVar3 = get_passwd(ppVar2,acStack_254);\n  if (*pcVar3 != '\0') {\n    iVar4 = -1;\n    pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2);\n    if (pcVar5 != (char *)0x0) {\n      iVar4 = check_password(ppVar2,pcVar5);\n      nuke_str(pcVar5);\n    }\n  }\n  if (ppStack_154 == (passwd *)*piVar7) {\n    return iVar4;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x4342c);\n  ppVar2 = ppStack_154;\n  (*pcVar9)();\n  iVar4 = ask_and_check_password_extended(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824));\n  return iVar4;\n}" primitive_type (function_declarator "check_password(passwd *pw,char *plaintext)" identifier (parameter_list "(passwd *pw,char *plaintext)" ( (parameter_declaration "passwd *pw" type_identifier (pointer_declarator "*pw" * identifier)) , (parameter_declaration "char *plaintext" primitive_type (pointer_declarator "*plaintext" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  passwd *ppVar2;\n  char *salt;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  char *in_a2;\n  uint uVar6;\n  int *piVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  char acStack_254 [256];\n  passwd *ppStack_154;\n  char *pcStack_14c;\n  undefined *puStack_148;\n  uint uStack_144;\n  char *pcStack_140;\n  code *pcStack_13c;\n  char buffer [256];\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar5 = buffer;\n  uVar6 = 2;\n  ppVar2 = *(passwd **)PTR___stack_chk_guard_0012b14c;\n  salt = get_passwd(pw,pcVar5);\n  pcVar3 = salt;\n  if (*salt != '\0') {\n    in_a2 = &DAT_00000001;\n    pcVar3 = pw_encrypt(plaintext,salt,1);\n    iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3);\n    uVar6 = (uint)(iVar4 == 0);\n    (*(code *)PTR_free_0012b168)(pcVar3);\n    pcVar5 = salt;\n  }\n  if (ppVar2 == *(passwd **)puVar1) {\n    return uVar6;\n  }\n  pcVar9 = ask_and_check_password_extended;\n  puVar8 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  piVar7 = *(int **)(puVar8 + 0x434b0);\n  puStack_148 = puVar1;\n  iVar4 = 2;\n  ppStack_154 = (passwd *)*piVar7;\n  pcStack_14c = pcVar3;\n  uStack_144 = uVar6;\n  pcStack_140 = plaintext;\n  pcStack_13c = pcVar9;\n  pcVar3 = get_passwd(ppVar2,acStack_254);\n  if (*pcVar3 != '\0') {\n    iVar4 = -1;\n    pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2);\n    if (pcVar5 != (char *)0x0) {\n      iVar4 = check_password(ppVar2,pcVar5);\n      nuke_str(pcVar5);\n    }\n  }\n  if (ppStack_154 == (passwd *)*piVar7) {\n    return iVar4;\n  }\n  pcVar9 = *(code **)(puVar8 + 0x4342c);\n  ppVar2 = ppStack_154;\n  (*pcVar9)();\n  iVar4 = ask_and_check_password_extended(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824));\n  return iVar4;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "passwd *ppVar2;" type_identifier (pointer_declarator "*ppVar2" * identifier) ;) (declaration "char *salt;" primitive_type (pointer_declarator "*salt" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *in_a2;" primitive_type (pointer_declarator "*in_a2" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char acStack_254 [256];" primitive_type (array_declarator "acStack_254 [256]" identifier [ number_literal ]) ;) (declaration "passwd *ppStack_154;" type_identifier (pointer_declarator "*ppStack_154" * identifier) ;) (declaration "char *pcStack_14c;" primitive_type (pointer_declarator "*pcStack_14c" * identifier) ;) (declaration "undefined *puStack_148;" type_identifier (pointer_declarator "*puStack_148" * identifier) ;) (declaration "uint uStack_144;" type_identifier identifier ;) (declaration "char *pcStack_140;" primitive_type (pointer_declarator "*pcStack_140" * identifier) ;) (declaration "code *pcStack_13c;" type_identifier (pointer_declarator "*pcStack_13c" * identifier) ;) (declaration "char buffer [256];" primitive_type (array_declarator "buffer [256]" identifier [ number_literal ]) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "pcVar5 = buffer;" (assignment_expression "pcVar5 = buffer" identifier = identifier) ;) (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (expression_statement "ppVar2 = *(passwd **)PTR___stack_chk_guard_0012b14c;" (assignment_expression "ppVar2 = *(passwd **)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(passwd **)PTR___stack_chk_guard_0012b14c" * (cast_expression "(passwd **)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "passwd **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "salt = get_passwd(pw,pcVar5);" (assignment_expression "salt = get_passwd(pw,pcVar5)" identifier = (call_expression "get_passwd(pw,pcVar5)" identifier (argument_list "(pw,pcVar5)" ( identifier , identifier )))) ;) (expression_statement "pcVar3 = salt;" (assignment_expression "pcVar3 = salt" identifier = identifier) ;) (if_statement "if (*salt != '\0') {\n    in_a2 = &DAT_00000001;\n    pcVar3 = pw_encrypt(plaintext,salt,1);\n    iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3);\n    uVar6 = (uint)(iVar4 == 0);\n    (*(code *)PTR_free_0012b168)(pcVar3);\n    pcVar5 = salt;\n  }" if (parenthesized_expression "(*salt != '\0')" ( (binary_expression "*salt != '\0'" (pointer_expression "*salt" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    in_a2 = &DAT_00000001;\n    pcVar3 = pw_encrypt(plaintext,salt,1);\n    iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3);\n    uVar6 = (uint)(iVar4 == 0);\n    (*(code *)PTR_free_0012b168)(pcVar3);\n    pcVar5 = salt;\n  }" { (expression_statement "in_a2 = &DAT_00000001;" (assignment_expression "in_a2 = &DAT_00000001" identifier = (pointer_expression "&DAT_00000001" & identifier)) ;) (expression_statement "pcVar3 = pw_encrypt(plaintext,salt,1);" (assignment_expression "pcVar3 = pw_encrypt(plaintext,salt,1)" identifier = (call_expression "pw_encrypt(plaintext,salt,1)" identifier (argument_list "(plaintext,salt,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3);" (assignment_expression "iVar4 = (*(code *)PTR_strcmp_0012b1c8)(pcVar3)" identifier = (call_expression "(*(code *)PTR_strcmp_0012b1c8)(pcVar3)" (parenthesized_expression "(*(code *)PTR_strcmp_0012b1c8)" ( (pointer_expression "*(code *)PTR_strcmp_0012b1c8" * (cast_expression "(code *)PTR_strcmp_0012b1c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "uVar6 = (uint)(iVar4 == 0);" (assignment_expression "uVar6 = (uint)(iVar4 == 0)" identifier = (call_expression "(uint)(iVar4 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(pcVar3);" (call_expression "(*(code *)PTR_free_0012b168)(pcVar3)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "pcVar5 = salt;" (assignment_expression "pcVar5 = salt" identifier = identifier) ;) })) (if_statement "if (ppVar2 == *(passwd **)puVar1) {\n    return uVar6;\n  }" if (parenthesized_expression "(ppVar2 == *(passwd **)puVar1)" ( (binary_expression "ppVar2 == *(passwd **)puVar1" identifier == (pointer_expression "*(passwd **)puVar1" * (cast_expression "(passwd **)puVar1" ( (type_descriptor "passwd **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar6;\n  }" { (return_statement "return uVar6;" return identifier ;) })) (expression_statement "pcVar9 = ask_and_check_password_extended;" (assignment_expression "pcVar9 = ask_and_check_password_extended" identifier = identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_0012b0c8;" (assignment_expression "puVar8 = PTR___stack_chk_fail_0012b0c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(puVar8 + 0x434b0);" (assignment_expression "piVar7 = *(int **)(puVar8 + 0x434b0)" identifier = (pointer_expression "*(int **)(puVar8 + 0x434b0)" * (cast_expression "(int **)(puVar8 + 0x434b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x434b0)" ( (binary_expression "puVar8 + 0x434b0" identifier + number_literal) ))))) ;) (expression_statement "puStack_148 = puVar1;" (assignment_expression "puStack_148 = puVar1" identifier = identifier) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "ppStack_154 = (passwd *)*piVar7;" (assignment_expression "ppStack_154 = (passwd *)*piVar7" identifier = (cast_expression "(passwd *)*piVar7" ( (type_descriptor "passwd *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (expression_statement "pcStack_14c = pcVar3;" (assignment_expression "pcStack_14c = pcVar3" identifier = identifier) ;) (expression_statement "uStack_144 = uVar6;" (assignment_expression "uStack_144 = uVar6" identifier = identifier) ;) (expression_statement "pcStack_140 = plaintext;" (assignment_expression "pcStack_140 = plaintext" identifier = identifier) ;) (expression_statement "pcStack_13c = pcVar9;" (assignment_expression "pcStack_13c = pcVar9" identifier = identifier) ;) (expression_statement "pcVar3 = get_passwd(ppVar2,acStack_254);" (assignment_expression "pcVar3 = get_passwd(ppVar2,acStack_254)" identifier = (call_expression "get_passwd(ppVar2,acStack_254)" identifier (argument_list "(ppVar2,acStack_254)" ( identifier , identifier )))) ;) (if_statement "if (*pcVar3 != '\0') {\n    iVar4 = -1;\n    pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2);\n    if (pcVar5 != (char *)0x0) {\n      iVar4 = check_password(ppVar2,pcVar5);\n      nuke_str(pcVar5);\n    }\n  }" if (parenthesized_expression "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar4 = -1;\n    pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2);\n    if (pcVar5 != (char *)0x0) {\n      iVar4 = check_password(ppVar2,pcVar5);\n      nuke_str(pcVar5);\n    }\n  }" { (expression_statement "iVar4 = -1;" (assignment_expression "iVar4 = -1" identifier = number_literal) ;) (expression_statement "pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2);" (assignment_expression "pcVar5 = bb_ask_noecho(0,(int)pcVar5,in_a2)" identifier = (call_expression "bb_ask_noecho(0,(int)pcVar5,in_a2)" identifier (argument_list "(0,(int)pcVar5,in_a2)" ( number_literal , (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (if_statement "if (pcVar5 != (char *)0x0) {\n      iVar4 = check_password(ppVar2,pcVar5);\n      nuke_str(pcVar5);\n    }" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar4 = check_password(ppVar2,pcVar5);\n      nuke_str(pcVar5);\n    }" { (expression_statement "iVar4 = check_password(ppVar2,pcVar5);" (assignment_expression "iVar4 = check_password(ppVar2,pcVar5)" identifier = (call_expression "check_password(ppVar2,pcVar5)" identifier (argument_list "(ppVar2,pcVar5)" ( identifier , identifier )))) ;) (expression_statement "nuke_str(pcVar5);" (call_expression "nuke_str(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) })) })) (if_statement "if (ppStack_154 == (passwd *)*piVar7) {\n    return iVar4;\n  }" if (parenthesized_expression "(ppStack_154 == (passwd *)*piVar7)" ( (binary_expression "ppStack_154 == (passwd *)*piVar7" identifier == (cast_expression "(passwd *)*piVar7" ( (type_descriptor "passwd *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "pcVar9 = *(code **)(puVar8 + 0x4342c);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x4342c)" identifier = (pointer_expression "*(code **)(puVar8 + 0x4342c)" * (cast_expression "(code **)(puVar8 + 0x4342c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x4342c)" ( (binary_expression "puVar8 + 0x4342c" identifier + number_literal) ))))) ;) (expression_statement "ppVar2 = ppStack_154;" (assignment_expression "ppVar2 = ppStack_154" identifier = identifier) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar4 = ask_and_check_password_extended(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824));" (assignment_expression "iVar4 = ask_and_check_password_extended(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824))" identifier = (call_expression "ask_and_check_password_extended(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824))" identifier (argument_list "(ppVar2,0,(char *)(*(int *)(pcVar9 + 0x42408) + -0x824))" ( identifier , number_literal , (cast_expression "(char *)(*(int *)(pcVar9 + 0x42408) + -0x824)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar9 + 0x42408) + -0x824)" ( (binary_expression "*(int *)(pcVar9 + 0x42408) + -0x824" (pointer_expression "*(int *)(pcVar9 + 0x42408)" * (cast_expression "(int *)(pcVar9 + 0x42408)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x42408)" ( (binary_expression "pcVar9 + 0x42408" identifier + number_literal) )))) + number_literal) ))) )))) ;) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "int * FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}\n\n" (function_definition "int * FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}" primitive_type (pointer_declarator "* FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)" * (function_declarator "FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "undefined1 auStack_138 [16];" type_identifier (array_declarator "auStack_138 [16]" identifier [ number_literal ]) ;) (declaration "int aiStack_11c [64];" primitive_type (array_declarator "aiStack_11c [64]" identifier [ number_literal ]) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "piVar5 = (int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "piVar5 = (int *)PTR___stack_chk_guard_0012b14c" identifier = (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar7 = aiStack_11c;" (assignment_expression "piVar7 = aiStack_11c" identifier = identifier) ;) (expression_statement "piVar8 = (int *)&SUB_00000002;" (assignment_expression "piVar8 = (int *)&SUB_00000002" identifier = (cast_expression "(int *)&SUB_00000002" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_00000002" & identifier))) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar1 = (int *)FUN_000e7adc();" (assignment_expression "piVar1 = (int *)FUN_000e7adc()" identifier = (cast_expression "(int *)FUN_000e7adc()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e7adc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" identifier = identifier) ;) (if_statement "if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }" if (parenthesized_expression "(*(char *)piVar1 != '\0')" ( (binary_expression "*(char *)piVar1 != '\0'" (pointer_expression "*(char *)piVar1" * (cast_expression "(char *)piVar1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }" { (expression_statement "param_3 = 1;" (assignment_expression "param_3 = 1" identifier = number_literal) ;) (expression_statement "piVar2 = (int *)FUN_000f66b4(param_2,piVar1);" (assignment_expression "piVar2 = (int *)FUN_000f66b4(param_2,piVar1)" identifier = (cast_expression "(int *)FUN_000f66b4(param_2,piVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000f66b4(param_2,piVar1)" identifier (argument_list "(param_2,piVar1)" ( identifier , identifier ))))) ;) (expression_statement "iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);" (assignment_expression "iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2)" identifier = (call_expression "(*(code *)PTR_strcmp_0012b1c8)(piVar2)" (parenthesized_expression "(*(code *)PTR_strcmp_0012b1c8)" ( (pointer_expression "*(code *)PTR_strcmp_0012b1c8" * (cast_expression "(code *)PTR_strcmp_0012b1c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar2)" ( identifier )))) ;) (expression_statement "piVar8 = (int *)(uint)(iVar3 == 0);" (assignment_expression "piVar8 = (int *)(uint)(iVar3 == 0)" identifier = (cast_expression "(int *)(uint)(iVar3 == 0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(piVar2);" (call_expression "(*(code *)PTR_free_0012b168)(piVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" identifier = identifier) ;) })) (if_statement "if (local_1c == *piVar5) {\n    return piVar8;\n  }" if (parenthesized_expression "(local_1c == *piVar5)" ( (binary_expression "local_1c == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return piVar8;\n  }" { (return_statement "return piVar8;" return identifier ;) })) (expression_statement "uVar13 = 0xe7c9c;" (assignment_expression "uVar13 = 0xe7c9c" identifier = number_literal) ;) (expression_statement "iVar3 = local_1c;" (assignment_expression "iVar3 = local_1c" identifier = identifier) ;) (expression_statement "puVar10 = PTR___stack_chk_fail_0012b0c8;" (assignment_expression "puVar10 = PTR___stack_chk_fail_0012b0c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar12 = auStack_138;" (assignment_expression "puVar12 = auStack_138" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }" { (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" identifier = identifier) ;) (expression_statement "*(int **)(puVar12 + -0xc) = piVar8;" (assignment_expression "*(int **)(puVar12 + -0xc) = piVar8" (pointer_expression "*(int **)(puVar12 + -0xc)" * (cast_expression "(int **)(puVar12 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0xc)" ( (binary_expression "puVar12 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(puVar10 + 0x434b0);" (assignment_expression "piVar8 = *(int **)(puVar10 + 0x434b0)" identifier = (pointer_expression "*(int **)(puVar10 + 0x434b0)" * (cast_expression "(int **)(puVar10 + 0x434b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x434b0)" ( (binary_expression "puVar10 + 0x434b0" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar12 + -0x10) = piVar5;" (assignment_expression "*(int **)(puVar12 + -0x10) = piVar5" (pointer_expression "*(int **)(puVar12 + -0x10)" * (cast_expression "(int **)(puVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x10)" ( (binary_expression "puVar12 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;" (assignment_expression "*(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4" (pointer_expression "*(undefined **)(puVar12 + -0x130)" * (cast_expression "(undefined **)(puVar12 + -0x130)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) )))) = (binary_expression "puVar10 + 0x4a4b4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar12 + -8) = param_2;" (assignment_expression "*(int *)(puVar12 + -8) = param_2" (pointer_expression "*(int *)(puVar12 + -8)" * (cast_expression "(int *)(puVar12 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -8)" ( (binary_expression "puVar12 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar12 + -0x14) = piVar2;" (assignment_expression "*(int **)(puVar12 + -0x14) = piVar2" (pointer_expression "*(int **)(puVar12 + -0x14)" * (cast_expression "(int **)(puVar12 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + -0x14)" ( (binary_expression "puVar12 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar2 = (int *)&SUB_00000002;" (assignment_expression "piVar2 = (int *)&SUB_00000002" identifier = (cast_expression "(int *)&SUB_00000002" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_00000002" & identifier))) ;) (expression_statement "*(undefined4 *)(puVar12 + -4) = uVar13;" (assignment_expression "*(undefined4 *)(puVar12 + -4) = uVar13" (pointer_expression "*(undefined4 *)(puVar12 + -4)" * (cast_expression "(undefined4 *)(puVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -4)" ( (binary_expression "puVar12 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar12 + -0x124) = param_3;" (assignment_expression "*(int *)(puVar12 + -0x124) = param_3" (pointer_expression "*(int *)(puVar12 + -0x124)" * (cast_expression "(int *)(puVar12 + -0x124)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x124)" ( (binary_expression "puVar12 + -0x124" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar12 + -0x1c) = *piVar8;" (assignment_expression "*(int *)(puVar12 + -0x1c) = *piVar8" (pointer_expression "*(int *)(puVar12 + -0x1c)" * (cast_expression "(int *)(puVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x1c)" ( (binary_expression "puVar12 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "pcVar4 = (char *)FUN_000e7adc();" (assignment_expression "pcVar4 = (char *)FUN_000e7adc()" identifier = (cast_expression "(char *)FUN_000e7adc()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e7adc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" identifier = (pointer_expression "*(int *)(puVar12 + -0x130)" * (cast_expression "(int *)(puVar12 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = piVar7;" (assignment_expression "piVar5 = piVar7" identifier = identifier) ;) (if_statement "if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }" if (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }" { (expression_statement "piVar2 = (int *)0xffffffff;" (assignment_expression "piVar2 = (int *)0xffffffff" identifier = (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));" (assignment_expression "piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" identifier = (cast_expression "(int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" identifier (argument_list "(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" ( number_literal , identifier , (pointer_expression "*(undefined4 *)(puVar12 + -0x124)" * (cast_expression "(undefined4 *)(puVar12 + -0x124)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x124)" ( (binary_expression "puVar12 + -0x124" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" identifier = (pointer_expression "*(int *)(puVar12 + -0x130)" * (cast_expression "(int *)(puVar12 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }" { (expression_statement "piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);" (assignment_expression "piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5)" identifier = (cast_expression "(int *)FUN_000e7bc0(iVar6,piVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000e7bc0(iVar6,piVar5)" identifier (argument_list "(iVar6,piVar5)" ( identifier , identifier ))))) ;) (expression_statement "FUN_000f2bc8(piVar5);" (call_expression "FUN_000f2bc8(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))) ;) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" identifier = (pointer_expression "*(int *)(puVar12 + -0x130)" * (cast_expression "(int *)(puVar12 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x130)" ( (binary_expression "puVar12 + -0x130" identifier + number_literal) ))))) ;) })) })) (expression_statement "iVar3 = *(int *)(puVar12 + -0x1c);" (assignment_expression "iVar3 = *(int *)(puVar12 + -0x1c)" identifier = (pointer_expression "*(int *)(puVar12 + -0x1c)" * (cast_expression "(int *)(puVar12 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x1c)" ( (binary_expression "puVar12 + -0x1c" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 == *piVar8) break;" if (parenthesized_expression "(iVar3 == *piVar8)" ( (binary_expression "iVar3 == *piVar8" identifier == (pointer_expression "*piVar8" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "pcVar9 = *(code **)(iVar11 + -0x7088);" (assignment_expression "pcVar9 = *(code **)(iVar11 + -0x7088)" identifier = (pointer_expression "*(code **)(iVar11 + -0x7088)" * (cast_expression "(code **)(iVar11 + -0x7088)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + -0x7088)" ( (binary_expression "iVar11 + -0x7088" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = 0xe7d84;" (assignment_expression "uVar13 = 0xe7d84" identifier = number_literal) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar10 = *(undefined **)(pcVar9 + 0x42e8c);" (assignment_expression "puVar10 = *(undefined **)(pcVar9 + 0x42e8c)" identifier = (pointer_expression "*(undefined **)(pcVar9 + 0x42e8c)" * (cast_expression "(undefined **)(pcVar9 + 0x42e8c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x42e8c)" ( (binary_expression "pcVar9 + 0x42e8c" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;" (assignment_expression "param_3 = *(int *)(pcVar9 + 0x42408) + -0x824" identifier = (binary_expression "*(int *)(pcVar9 + 0x42408) + -0x824" (pointer_expression "*(int *)(pcVar9 + 0x42408)" * (cast_expression "(int *)(pcVar9 + 0x42408)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x42408)" ( (binary_expression "pcVar9 + 0x42408" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "param_2 = iVar6;" (assignment_expression "param_2 = iVar6" identifier = identifier) ;) (expression_statement "puVar12 = puVar12 + -0x140;" (assignment_expression "puVar12 = puVar12 + -0x140" identifier = (binary_expression "puVar12 + -0x140" identifier + number_literal)) ;) })) (return_statement "return piVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = 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 = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (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 (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (break_statement break ;)) (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 = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (return_statement return IDENT ;) })))
(function_definition "int * FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}" (primitive_type "int") (pointer_declarator "* FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)" (* "*") (function_declarator "FUN_000e7bc0(undefined4 param_1,int param_2,int param_3)" (identifier "FUN_000e7bc0") (parameter_list "(undefined4 param_1,int param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")")))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  code *pcVar9;\n  undefined *puVar10;\n  int iVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  undefined1 auStack_138 [16];\n  int aiStack_11c [64];\n  int local_1c;\n  \n  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;\n  piVar7 = aiStack_11c;\n  piVar8 = (int *)&SUB_00000002;\n  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;\n  piVar1 = (int *)FUN_000e7adc();\n  piVar2 = piVar1;\n  if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }\n  if (local_1c == *piVar5) {\n    return piVar8;\n  }\n  uVar13 = 0xe7c9c;\n  iVar3 = local_1c;\n  puVar10 = PTR___stack_chk_fail_0012b0c8;\n  (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  puVar12 = auStack_138;\n  while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }\n  return piVar2;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "code *pcVar9;" (type_identifier "code") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "undefined1 auStack_138 [16];" (type_identifier "undefined1") (array_declarator "auStack_138 [16]" (identifier "auStack_138") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int aiStack_11c [64];" (primitive_type "int") (array_declarator "aiStack_11c [64]" (identifier "aiStack_11c") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "piVar5 = (int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "piVar5 = (int *)PTR___stack_chk_guard_0012b14c" (identifier "piVar5") (= "=") (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0012b14c"))) (; ";")) (expression_statement "piVar7 = aiStack_11c;" (assignment_expression "piVar7 = aiStack_11c" (identifier "piVar7") (= "=") (identifier "aiStack_11c")) (; ";")) (expression_statement "piVar8 = (int *)&SUB_00000002;" (assignment_expression "piVar8 = (int *)&SUB_00000002" (identifier "piVar8") (= "=") (cast_expression "(int *)&SUB_00000002" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&SUB_00000002" (& "&") (identifier "SUB_00000002")))) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0012b14c" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0012b14c")))) (; ";")) (expression_statement "piVar1 = (int *)FUN_000e7adc();" (assignment_expression "piVar1 = (int *)FUN_000e7adc()" (identifier "piVar1") (= "=") (cast_expression "(int *)FUN_000e7adc()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000e7adc()" (identifier "FUN_000e7adc") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" (identifier "piVar2") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (*(char *)piVar1 != '\0') {\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }" (if "if") (parenthesized_expression "(*(char *)piVar1 != '\0')" (( "(") (binary_expression "*(char *)piVar1 != '\0'" (pointer_expression "*(char *)piVar1" (* "*") (cast_expression "(char *)piVar1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar1"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    param_3 = 1;\n    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);\n    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);\n    piVar8 = (int *)(uint)(iVar3 == 0);\n    (*(code *)PTR_free_0012b168)(piVar2);\n    piVar7 = piVar1;\n  }" ({ "{") (expression_statement "param_3 = 1;" (assignment_expression "param_3 = 1" (identifier "param_3") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar2 = (int *)FUN_000f66b4(param_2,piVar1);" (assignment_expression "piVar2 = (int *)FUN_000f66b4(param_2,piVar1)" (identifier "piVar2") (= "=") (cast_expression "(int *)FUN_000f66b4(param_2,piVar1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000f66b4(param_2,piVar1)" (identifier "FUN_000f66b4") (argument_list "(param_2,piVar1)" (( "(") (identifier "param_2") (, ",") (identifier "piVar1") () ")"))))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);" (assignment_expression "iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_strcmp_0012b1c8)(piVar2)" (parenthesized_expression "(*(code *)PTR_strcmp_0012b1c8)" (( "(") (pointer_expression "*(code *)PTR_strcmp_0012b1c8" (* "*") (cast_expression "(code *)PTR_strcmp_0012b1c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcmp_0012b1c8"))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")")))) (; ";")) (expression_statement "piVar8 = (int *)(uint)(iVar3 == 0);" (assignment_expression "piVar8 = (int *)(uint)(iVar3 == 0)" (identifier "piVar8") (= "=") (cast_expression "(int *)(uint)(iVar3 == 0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "(*(code *)PTR_free_0012b168)(piVar2);" (call_expression "(*(code *)PTR_free_0012b168)(piVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" (( "(") (pointer_expression "*(code *)PTR_free_0012b168" (* "*") (cast_expression "(code *)PTR_free_0012b168" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0012b168"))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")"))) (; ";")) (expression_statement "piVar7 = piVar1;" (assignment_expression "piVar7 = piVar1" (identifier "piVar7") (= "=") (identifier "piVar1")) (; ";")) (} "}"))) (if_statement "if (local_1c == *piVar5) {\n    return piVar8;\n  }" (if "if") (parenthesized_expression "(local_1c == *piVar5)" (( "(") (binary_expression "local_1c == *piVar5" (identifier "local_1c") (== "==") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n    return piVar8;\n  }" ({ "{") (return_statement "return piVar8;" (return "return") (identifier "piVar8") (; ";")) (} "}"))) (expression_statement "uVar13 = 0xe7c9c;" (assignment_expression "uVar13 = 0xe7c9c" (identifier "uVar13") (= "=") (number_literal "0xe7c9c")) (; ";")) (expression_statement "iVar3 = local_1c;" (assignment_expression "iVar3 = local_1c" (identifier "iVar3") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar10 = PTR___stack_chk_fail_0012b0c8;" (assignment_expression "puVar10 = PTR___stack_chk_fail_0012b0c8" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_fail_0012b0c8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0012b0c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar12 = auStack_138;" (assignment_expression "puVar12 = auStack_138" (identifier "puVar12") (= "=") (identifier "auStack_138")) (; ";")) (while_statement "while( true ) {\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar6 = iVar3;\n    *(int **)(puVar12 + -0xc) = piVar8;\n    piVar8 = *(int **)(puVar10 + 0x434b0);\n    *(int **)(puVar12 + -0x10) = piVar5;\n    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;\n    *(int *)(puVar12 + -8) = param_2;\n    *(int **)(puVar12 + -0x14) = piVar2;\n    piVar2 = (int *)&SUB_00000002;\n    *(undefined4 *)(puVar12 + -4) = uVar13;\n    *(int *)(puVar12 + -0x124) = param_3;\n    *(int *)(puVar12 + -0x1c) = *piVar8;\n    pcVar4 = (char *)FUN_000e7adc();\n    iVar11 = *(int *)(puVar12 + -0x130);\n    piVar5 = piVar7;\n    if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }\n    iVar3 = *(int *)(puVar12 + -0x1c);\n    if (iVar3 == *piVar8) break;\n    pcVar9 = *(code **)(iVar11 + -0x7088);\n    uVar13 = 0xe7d84;\n    (*pcVar9)();\n    piVar7 = (int *)0x0;\n    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);\n    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;\n    param_2 = iVar6;\n    puVar12 = puVar12 + -0x140;\n  }" ({ "{") (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" (identifier "iVar6") (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(int **)(puVar12 + -0xc) = piVar8;" (assignment_expression "*(int **)(puVar12 + -0xc) = piVar8" (pointer_expression "*(int **)(puVar12 + -0xc)" (* "*") (cast_expression "(int **)(puVar12 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0xc)" (( "(") (binary_expression "puVar12 + -0xc" (identifier "puVar12") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "piVar8 = *(int **)(puVar10 + 0x434b0);" (assignment_expression "piVar8 = *(int **)(puVar10 + 0x434b0)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(puVar10 + 0x434b0)" (* "*") (cast_expression "(int **)(puVar10 + 0x434b0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x434b0)" (( "(") (binary_expression "puVar10 + 0x434b0" (identifier "puVar10") (+ "+") (number_literal "0x434b0")) () ")"))))) (; ";")) (expression_statement "*(int **)(puVar12 + -0x10) = piVar5;" (assignment_expression "*(int **)(puVar12 + -0x10) = piVar5" (pointer_expression "*(int **)(puVar12 + -0x10)" (* "*") (cast_expression "(int **)(puVar12 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x10)" (( "(") (binary_expression "puVar12 + -0x10" (identifier "puVar12") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "*(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;" (assignment_expression "*(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4" (pointer_expression "*(undefined **)(puVar12 + -0x130)" (* "*") (cast_expression "(undefined **)(puVar12 + -0x130)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x130)" (( "(") (binary_expression "puVar12 + -0x130" (identifier "puVar12") (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (binary_expression "puVar10 + 0x4a4b4" (identifier "puVar10") (+ "+") (number_literal "0x4a4b4"))) (; ";")) (expression_statement "*(int *)(puVar12 + -8) = param_2;" (assignment_expression "*(int *)(puVar12 + -8) = param_2" (pointer_expression "*(int *)(puVar12 + -8)" (* "*") (cast_expression "(int *)(puVar12 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -8)" (( "(") (binary_expression "puVar12 + -8" (identifier "puVar12") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(puVar12 + -0x14) = piVar2;" (assignment_expression "*(int **)(puVar12 + -0x14) = piVar2" (pointer_expression "*(int **)(puVar12 + -0x14)" (* "*") (cast_expression "(int **)(puVar12 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + -0x14)" (( "(") (binary_expression "puVar12 + -0x14" (identifier "puVar12") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "piVar2")) (; ";")) (expression_statement "piVar2 = (int *)&SUB_00000002;" (assignment_expression "piVar2 = (int *)&SUB_00000002" (identifier "piVar2") (= "=") (cast_expression "(int *)&SUB_00000002" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&SUB_00000002" (& "&") (identifier "SUB_00000002")))) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + -4) = uVar13;" (assignment_expression "*(undefined4 *)(puVar12 + -4) = uVar13" (pointer_expression "*(undefined4 *)(puVar12 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -4)" (( "(") (binary_expression "puVar12 + -4" (identifier "puVar12") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(int *)(puVar12 + -0x124) = param_3;" (assignment_expression "*(int *)(puVar12 + -0x124) = param_3" (pointer_expression "*(int *)(puVar12 + -0x124)" (* "*") (cast_expression "(int *)(puVar12 + -0x124)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x124)" (( "(") (binary_expression "puVar12 + -0x124" (identifier "puVar12") (+ "+") (number_literal "-0x124")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(int *)(puVar12 + -0x1c) = *piVar8;" (assignment_expression "*(int *)(puVar12 + -0x1c) = *piVar8" (pointer_expression "*(int *)(puVar12 + -0x1c)" (* "*") (cast_expression "(int *)(puVar12 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x1c)" (( "(") (binary_expression "puVar12 + -0x1c" (identifier "puVar12") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "pcVar4 = (char *)FUN_000e7adc();" (assignment_expression "pcVar4 = (char *)FUN_000e7adc()" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_000e7adc()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000e7adc()" (identifier "FUN_000e7adc") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar12 + -0x130)" (* "*") (cast_expression "(int *)(puVar12 + -0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x130)" (( "(") (binary_expression "puVar12 + -0x130" (identifier "puVar12") (+ "+") (number_literal "-0x130")) () ")"))))) (; ";")) (expression_statement "piVar5 = piVar7;" (assignment_expression "piVar5 = piVar7" (identifier "piVar5") (= "=") (identifier "piVar7")) (; ";")) (if_statement "if (*pcVar4 != '\0') {\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }" (if "if") (parenthesized_expression "(*pcVar4 != '\0')" (( "(") (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      piVar2 = (int *)0xffffffff;\n      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));\n      iVar11 = *(int *)(puVar12 + -0x130);\n      if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }\n    }" ({ "{") (expression_statement "piVar2 = (int *)0xffffffff;" (assignment_expression "piVar2 = (int *)0xffffffff" (identifier "piVar2") (= "=") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));" (assignment_expression "piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" (identifier "FUN_000e6074") (argument_list "(0,piVar7,*(undefined4 *)(puVar12 + -0x124))" (( "(") (number_literal "0") (, ",") (identifier "piVar7") (, ",") (pointer_expression "*(undefined4 *)(puVar12 + -0x124)" (* "*") (cast_expression "(undefined4 *)(puVar12 + -0x124)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x124)" (( "(") (binary_expression "puVar12 + -0x124" (identifier "puVar12") (+ "+") (number_literal "-0x124")) () ")")))) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar12 + -0x130)" (* "*") (cast_expression "(int *)(puVar12 + -0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x130)" (( "(") (binary_expression "puVar12 + -0x130" (identifier "puVar12") (+ "+") (number_literal "-0x130")) () ")"))))) (; ";")) (if_statement "if (piVar5 != (int *)0x0) {\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }" (if "if") (parenthesized_expression "(piVar5 != (int *)0x0)" (( "(") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);\n        FUN_000f2bc8(piVar5);\n        iVar11 = *(int *)(puVar12 + -0x130);\n      }" ({ "{") (expression_statement "piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5);" (assignment_expression "piVar2 = (int *)FUN_000e7bc0(iVar6,piVar5)" (identifier "piVar2") (= "=") (cast_expression "(int *)FUN_000e7bc0(iVar6,piVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000e7bc0(iVar6,piVar5)" (identifier "FUN_000e7bc0") (argument_list "(iVar6,piVar5)" (( "(") (identifier "iVar6") (, ",") (identifier "piVar5") () ")"))))) (; ";")) (expression_statement "FUN_000f2bc8(piVar5);" (call_expression "FUN_000f2bc8(piVar5)" (identifier "FUN_000f2bc8") (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")"))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar12 + -0x130);" (assignment_expression "iVar11 = *(int *)(puVar12 + -0x130)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar12 + -0x130)" (* "*") (cast_expression "(int *)(puVar12 + -0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x130)" (( "(") (binary_expression "puVar12 + -0x130" (identifier "puVar12") (+ "+") (number_literal "-0x130")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar3 = *(int *)(puVar12 + -0x1c);" (assignment_expression "iVar3 = *(int *)(puVar12 + -0x1c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(puVar12 + -0x1c)" (* "*") (cast_expression "(int *)(puVar12 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + -0x1c)" (( "(") (binary_expression "puVar12 + -0x1c" (identifier "puVar12") (+ "+") (number_literal "-0x1c")) () ")"))))) (; ";")) (if_statement "if (iVar3 == *piVar8) break;" (if "if") (parenthesized_expression "(iVar3 == *piVar8)" (( "(") (binary_expression "iVar3 == *piVar8" (identifier "iVar3") (== "==") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar9 = *(code **)(iVar11 + -0x7088);" (assignment_expression "pcVar9 = *(code **)(iVar11 + -0x7088)" (identifier "pcVar9") (= "=") (pointer_expression "*(code **)(iVar11 + -0x7088)" (* "*") (cast_expression "(code **)(iVar11 + -0x7088)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + -0x7088)" (( "(") (binary_expression "iVar11 + -0x7088" (identifier "iVar11") (+ "+") (number_literal "-0x7088")) () ")"))))) (; ";")) (expression_statement "uVar13 = 0xe7d84;" (assignment_expression "uVar13 = 0xe7d84" (identifier "uVar13") (= "=") (number_literal "0xe7d84")) (; ";")) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" (( "(") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar10 = *(undefined **)(pcVar9 + 0x42e8c);" (assignment_expression "puVar10 = *(undefined **)(pcVar9 + 0x42e8c)" (identifier "puVar10") (= "=") (pointer_expression "*(undefined **)(pcVar9 + 0x42e8c)" (* "*") (cast_expression "(undefined **)(pcVar9 + 0x42e8c)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar9 + 0x42e8c)" (( "(") (binary_expression "pcVar9 + 0x42e8c" (identifier "pcVar9") (+ "+") (number_literal "0x42e8c")) () ")"))))) (; ";")) (expression_statement "param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;" (assignment_expression "param_3 = *(int *)(pcVar9 + 0x42408) + -0x824" (identifier "param_3") (= "=") (binary_expression "*(int *)(pcVar9 + 0x42408) + -0x824" (pointer_expression "*(int *)(pcVar9 + 0x42408)" (* "*") (cast_expression "(int *)(pcVar9 + 0x42408)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar9 + 0x42408)" (( "(") (binary_expression "pcVar9 + 0x42408" (identifier "pcVar9") (+ "+") (number_literal "0x42408")) () ")")))) (+ "+") (number_literal "-0x824"))) (; ";")) (expression_statement "param_2 = iVar6;" (assignment_expression "param_2 = iVar6" (identifier "param_2") (= "=") (identifier "iVar6")) (; ";")) (expression_statement "puVar12 = puVar12 + -0x140;" (assignment_expression "puVar12 = puVar12 + -0x140" (identifier "puVar12") (= "=") (binary_expression "puVar12 + -0x140" (identifier "puVar12") (+ "+") (number_literal "-0x140"))) (; ";")) (} "}"))) (return_statement "return piVar2;" (return "return") (identifier "piVar2") (; ";")) (} "}")))

int function_1(type_1 *pw,char *plaintext)

{
  type_2 *puVar1;
  type_1 *var_4;
  char *salt;
  char *pcVar3;
  int var_3;
  char *var_7;
  char *in_a2;
  type_3 uVar6;
  int *piVar7;
  type_2 *var_5;
  type_4 *var_11;
  char acStack_254 [256];
  type_1 *var_9;
  char *pcStack_14c;
  type_2 *puStack_148;
  type_3 uStack_144;
  char *pcStack_140;
  type_4 *pcStack_13c;
  char buffer [256];
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  var_7 = buffer;
  uVar6 = 2;
  var_4 = *(type_1 **)PTR___stack_chk_guard_0012b14c;
  salt = var_1(pw,var_7);
  pcVar3 = salt;
  if (*salt != '\0') {
    in_a2 = &DAT_00000001;
    pcVar3 = var_2(plaintext,salt,1);
    var_3 = (*(type_4 *)PTR_strcmp_0012b1c8)(pcVar3);
    uVar6 = (type_3)(var_3 == 0);
    (*(type_4 *)PTR_free_0012b168)(pcVar3);
    var_7 = salt;
  }
  if (var_4 == *(type_1 **)puVar1) {
    return uVar6;
  }
  var_11 = var_10;
  var_5 = PTR___stack_chk_fail_0012b0c8;
  (*(type_4 *)PTR___stack_chk_fail_0012b0c8)();
  piVar7 = *(int **)(var_5 + 0x434b0);
  puStack_148 = puVar1;
  var_3 = 2;
  var_9 = (type_1 *)*piVar7;
  pcStack_14c = pcVar3;
  uStack_144 = uVar6;
  pcStack_140 = plaintext;
  pcStack_13c = var_11;
  pcVar3 = var_1(var_4,acStack_254);
  if (*pcVar3 != '\0') {
    var_3 = -1;
    var_7 = var_6(0,(int)var_7,in_a2);
    if (var_7 != (char *)0x0) {
      var_3 = function_1(var_4,var_7);
      var_8(var_7);
    }
  }
  if (var_9 == (type_1 *)*piVar7) {
    return var_3;
  }
  var_11 = *(type_4 **)(var_5 + 0x4342c);
  var_4 = var_9;
  (*var_11)();
  var_3 = var_10(var_4,0,(char *)(*(int *)(var_11 + 0x42408) + -0x824));
  return var_3;
}


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

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

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  char *pcVar4;
  int *piVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  code *pcVar9;
  undefined *puVar10;
  int iVar11;
  undefined1 *puVar12;
  undefined4 uVar13;
  undefined1 auStack_138 [16];
  int aiStack_11c [64];
  int local_1c;
  
  piVar5 = (int *)PTR___stack_chk_guard_0012b14c;
  piVar7 = aiStack_11c;
  piVar8 = (int *)&SUB_00000002;
  local_1c = *(int *)PTR___stack_chk_guard_0012b14c;
  piVar1 = (int *)FUN_000e7adc();
  piVar2 = piVar1;
  if (*(char *)piVar1 != '\0') {
    param_3 = 1;
    piVar2 = (int *)FUN_000f66b4(param_2,piVar1);
    iVar3 = (*(code *)PTR_strcmp_0012b1c8)(piVar2);
    piVar8 = (int *)(uint)(iVar3 == 0);
    (*(code *)PTR_free_0012b168)(piVar2);
    piVar7 = piVar1;
  }
  if (local_1c == *piVar5) {
    return piVar8;
  }
  uVar13 = 0xe7c9c;
  iVar3 = local_1c;
  puVar10 = PTR___stack_chk_fail_0012b0c8;
  (*(code *)PTR___stack_chk_fail_0012b0c8)();
  puVar12 = auStack_138;
  while( true ) {
    iVar6 = iVar3;
    *(int **)(puVar12 + -0xc) = piVar8;
    piVar8 = *(int **)(puVar10 + 0x434b0);
    *(int **)(puVar12 + -0x10) = piVar5;
    *(undefined **)(puVar12 + -0x130) = puVar10 + 0x4a4b4;
    *(int *)(puVar12 + -8) = param_2;
    *(int **)(puVar12 + -0x14) = piVar2;
    piVar2 = (int *)&SUB_00000002;
    *(undefined4 *)(puVar12 + -4) = uVar13;
    *(int *)(puVar12 + -0x124) = param_3;
    *(int *)(puVar12 + -0x1c) = *piVar8;
    pcVar4 = (char *)FUN_000e7adc();
    iVar11 = *(int *)(puVar12 + -0x130);
    piVar5 = piVar7;
    if (*pcVar4 != '\0') {
      piVar2 = (int *)0xffffffff;
      piVar5 = (int *)FUN_000e6074(0,piVar7,*(undefined4 *)(puVar12 + -0x124));
      iVar11 = *(int *)(puVar12 + -0x130);
      if (piVar5 != (int *)0x0) {
        piVar2 = (int *)MASKED(iVar6,piVar5);
        FUN_000f2bc8(piVar5);
        iVar11 = *(int *)(puVar12 + -0x130);
      }
    }
    iVar3 = *(int *)(puVar12 + -0x1c);
    if (iVar3 == *piVar8) break;
    pcVar9 = *(code **)(iVar11 + -0x7088);
    uVar13 = 0xe7d84;
    (*pcVar9)();
    piVar7 = (int *)0x0;
    puVar10 = *(undefined **)(pcVar9 + 0x42e8c);
    param_3 = *(int *)(pcVar9 + 0x42408) + -0x824;
    param_2 = iVar6;
    puVar12 = puVar12 + -0x140;
  }
  return piVar2;
}

