
int waitforjob(job *jp)

{
  char cVar1;
  int iVar2;
  
  ash_ptr_to_globals_misc->suppress_int = ash_ptr_to_globals_misc->suppress_int + 1;
  cVar1 = jp->field_0x20;
  while (cVar1 == '\0') {
    dowait(1,jp);
    cVar1 = jp->field_0x20;
  }
  int_on();
  iVar2 = getstatus(jp);
  if (((jp->field_0x21 & 2) != 0) &&
     (xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)) {
    raise(2);
  }
  if (jp->field_0x20 == '\x02') {
    freejob(jp);
  }
  return iVar2;
}



undefined4 FUN_00149f7b(long param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;
  cVar1 = *(char *)(param_1 + 0x20);
  while (cVar1 == '\0') {
    FUN_00149beb(1,param_1);
    cVar1 = *(char *)(param_1 + 0x20);
  }
  FUN_001475a4();
  uVar2 = FUN_0014703c(param_1);
  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&
     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),
     (*(byte *)(param_1 + 0x21) & 1) != 0)) {
    raise(2);
  }
  if (*(char *)(param_1 + 0x20) == '\x02') {
    FUN_00147b4d(param_1);
  }
  return uVar2;
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,RDI
MOV RDX,qword ptr [0x001c65d8]
MOV EAX,dword ptr [RDX + 0x38]
ADD EAX,0x1
MOV dword ptr [RDX + 0x38],EAX
CMP byte ptr [RDI + 0x20],0x0
JNZ 0x00149fad
MOV RSI,RBX
MOV EDI,0x1
CALL 0x00149beb
CMP byte ptr [RBX + 0x20],0x0
JZ 0x00149f9a
CALL 0x001475a4
MOV RDI,RBX
CALL 0x0014703c
MOV EBP,EAX
TEST byte ptr [RBX + 0x21],0x2
JZ 0x00149fe7
MOV RAX,qword ptr [0x001c65d8]
MOV ESI,dword ptr [RAX + 0x4]
MOV EDI,dword ptr [0x001c6270]
CALL 0x0014877f
TEST byte ptr [RBX + 0x21],0x1
JZ 0x00149fe7
MOV EDI,0x2
CALL 0x0010b0c0
CMP byte ptr [RBX + 0x20],0x2
JNZ 0x00149ff5
MOV RDI,RBX
CALL 0x00147b4d
MOV EAX,EBP
ADD RSP,0x8
POP RBX
POP RBP
RET
(translation_unit "undefined4 FUN_00149f7b(long param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined4 FUN_00149f7b(long param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00149f7b(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (expression_statement "*(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;" (assignment_expression "*(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1" (pointer_expression "*(int *)(DAT_001c65d8 + 0x38)" * (cast_expression "(int *)(DAT_001c65d8 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65d8 + 0x38)" ( (binary_expression "DAT_001c65d8 + 0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(DAT_001c65d8 + 0x38) + 1" (pointer_expression "*(int *)(DAT_001c65d8 + 0x38)" * (cast_expression "(int *)(DAT_001c65d8 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65d8 + 0x38)" ( (binary_expression "DAT_001c65d8 + 0x38" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "cVar1 = *(char *)(param_1 + 0x20);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x20)" identifier = (pointer_expression "*(char *)(param_1 + 0x20)" * (cast_expression "(char *)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }" { (expression_statement "FUN_00149beb(1,param_1);" (call_expression "FUN_00149beb(1,param_1)" identifier (argument_list "(1,param_1)" ( number_literal , identifier ))) ;) (expression_statement "cVar1 = *(char *)(param_1 + 0x20);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x20)" identifier = (pointer_expression "*(char *)(param_1 + 0x20)" * (cast_expression "(char *)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_001475a4();" (call_expression "FUN_001475a4()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar2 = FUN_0014703c(param_1);" (assignment_expression "uVar2 = FUN_0014703c(param_1)" identifier = (call_expression "FUN_0014703c(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }" if (parenthesized_expression "(((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0))" ( (binary_expression "((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0x21) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x21) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x21) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x21) & 2" (pointer_expression "*(byte *)(param_1 + 0x21)" * (cast_expression "(byte *)(param_1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)" ( (comma_expression "FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0" (call_expression "FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4))" identifier (argument_list "(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(DAT_001c65d8 + 4)" * (cast_expression "(undefined4 *)(DAT_001c65d8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65d8 + 4)" ( (binary_expression "DAT_001c65d8 + 4" identifier + number_literal) )))) ))) , (binary_expression "(*(byte *)(param_1 + 0x21) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x21) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x21) & 1" (pointer_expression "*(byte *)(param_1 + 0x21)" * (cast_expression "(byte *)(param_1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    raise(2);\n  }" { (expression_statement "raise(2);" (call_expression "raise(2)" identifier (argument_list "(2)" ( number_literal ))) ;) })) (if_statement "if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x20) == '\x02')" ( (binary_expression "*(char *)(param_1 + 0x20) == '\x02'" (pointer_expression "*(char *)(param_1 + 0x20)" * (cast_expression "(char *)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00147b4d(param_1);\n  }" { (expression_statement "FUN_00147b4d(param_1);" (call_expression "FUN_00147b4d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "int waitforjob(job *jp)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  ash_ptr_to_globals_misc->suppress_int = ash_ptr_to_globals_misc->suppress_int + 1;\n  cVar1 = jp->field_0x20;\n  while (cVar1 == '\0') {\n    dowait(1,jp);\n    cVar1 = jp->field_0x20;\n  }\n  int_on();\n  iVar2 = getstatus(jp);\n  if (((jp->field_0x21 & 2) != 0) &&\n     (xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)) {\n    raise(2);\n  }\n  if (jp->field_0x20 == '\x02') {\n    freejob(jp);\n  }\n  return iVar2;\n}\n\n" (function_definition "int waitforjob(job *jp)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  ash_ptr_to_globals_misc->suppress_int = ash_ptr_to_globals_misc->suppress_int + 1;\n  cVar1 = jp->field_0x20;\n  while (cVar1 == '\0') {\n    dowait(1,jp);\n    cVar1 = jp->field_0x20;\n  }\n  int_on();\n  iVar2 = getstatus(jp);\n  if (((jp->field_0x21 & 2) != 0) &&\n     (xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)) {\n    raise(2);\n  }\n  if (jp->field_0x20 == '\x02') {\n    freejob(jp);\n  }\n  return iVar2;\n}" primitive_type (function_declarator "waitforjob(job *jp)" identifier (parameter_list "(job *jp)" ( (parameter_declaration "job *jp" type_identifier (pointer_declarator "*jp" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  ash_ptr_to_globals_misc->suppress_int = ash_ptr_to_globals_misc->suppress_int + 1;\n  cVar1 = jp->field_0x20;\n  while (cVar1 == '\0') {\n    dowait(1,jp);\n    cVar1 = jp->field_0x20;\n  }\n  int_on();\n  iVar2 = getstatus(jp);\n  if (((jp->field_0x21 & 2) != 0) &&\n     (xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)) {\n    raise(2);\n  }\n  if (jp->field_0x20 == '\x02') {\n    freejob(jp);\n  }\n  return iVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "ash_ptr_to_globals_misc->suppress_int = ash_ptr_to_globals_misc->suppress_int + 1;" (assignment_expression "ash_ptr_to_globals_misc->suppress_int = ash_ptr_to_globals_misc->suppress_int + 1" (field_expression "ash_ptr_to_globals_misc->suppress_int" identifier -> field_identifier) = (binary_expression "ash_ptr_to_globals_misc->suppress_int + 1" (field_expression "ash_ptr_to_globals_misc->suppress_int" identifier -> field_identifier) + number_literal)) ;) (expression_statement "cVar1 = jp->field_0x20;" (assignment_expression "cVar1 = jp->field_0x20" identifier = (field_expression "jp->field_0x20" identifier -> field_identifier)) ;) (while_statement "while (cVar1 == '\0') {\n    dowait(1,jp);\n    cVar1 = jp->field_0x20;\n  }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    dowait(1,jp);\n    cVar1 = jp->field_0x20;\n  }" { (expression_statement "dowait(1,jp);" (call_expression "dowait(1,jp)" identifier (argument_list "(1,jp)" ( number_literal , identifier ))) ;) (expression_statement "cVar1 = jp->field_0x20;" (assignment_expression "cVar1 = jp->field_0x20" identifier = (field_expression "jp->field_0x20" identifier -> field_identifier)) ;) })) (expression_statement "int_on();" (call_expression "int_on()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = getstatus(jp);" (assignment_expression "iVar2 = getstatus(jp)" identifier = (call_expression "getstatus(jp)" identifier (argument_list "(jp)" ( identifier )))) ;) (if_statement "if (((jp->field_0x21 & 2) != 0) &&\n     (xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)) {\n    raise(2);\n  }" if (parenthesized_expression "(((jp->field_0x21 & 2) != 0) &&\n     (xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0))" ( (binary_expression "((jp->field_0x21 & 2) != 0) &&\n     (xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)" (parenthesized_expression "((jp->field_0x21 & 2) != 0)" ( (binary_expression "(jp->field_0x21 & 2) != 0" (parenthesized_expression "(jp->field_0x21 & 2)" ( (binary_expression "jp->field_0x21 & 2" (field_expression "jp->field_0x21" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)" ( (comma_expression "xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0" (call_expression "xtcsetpgrp(ttyfd,ash_ptr_to_globals_misc->rootpid)" identifier (argument_list "(ttyfd,ash_ptr_to_globals_misc->rootpid)" ( identifier , (field_expression "ash_ptr_to_globals_misc->rootpid" identifier -> field_identifier) ))) , (binary_expression "(jp->field_0x21 & 1) != 0" (parenthesized_expression "(jp->field_0x21 & 1)" ( (binary_expression "jp->field_0x21 & 1" (field_expression "jp->field_0x21" identifier -> field_identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    raise(2);\n  }" { (expression_statement "raise(2);" (call_expression "raise(2)" identifier (argument_list "(2)" ( number_literal ))) ;) })) (if_statement "if (jp->field_0x20 == '\x02') {\n    freejob(jp);\n  }" if (parenthesized_expression "(jp->field_0x20 == '\x02')" ( (binary_expression "jp->field_0x20 == '\x02'" (field_expression "jp->field_0x20" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    freejob(jp);\n  }" { (expression_statement "freejob(jp);" (call_expression "freejob(jp)" identifier (argument_list "(jp)" ( identifier ))) ;) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "undefined4 FUN_00149f7b(long param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined4 FUN_00149f7b(long param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00149f7b(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (expression_statement "*(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;" (assignment_expression "*(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1" (pointer_expression "*(int *)(DAT_001c65d8 + 0x38)" * (cast_expression "(int *)(DAT_001c65d8 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65d8 + 0x38)" ( (binary_expression "DAT_001c65d8 + 0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(DAT_001c65d8 + 0x38) + 1" (pointer_expression "*(int *)(DAT_001c65d8 + 0x38)" * (cast_expression "(int *)(DAT_001c65d8 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65d8 + 0x38)" ( (binary_expression "DAT_001c65d8 + 0x38" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "cVar1 = *(char *)(param_1 + 0x20);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x20)" identifier = (pointer_expression "*(char *)(param_1 + 0x20)" * (cast_expression "(char *)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }" { (expression_statement "FUN_00149beb(1,param_1);" (call_expression "FUN_00149beb(1,param_1)" identifier (argument_list "(1,param_1)" ( number_literal , identifier ))) ;) (expression_statement "cVar1 = *(char *)(param_1 + 0x20);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x20)" identifier = (pointer_expression "*(char *)(param_1 + 0x20)" * (cast_expression "(char *)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_001475a4();" (call_expression "FUN_001475a4()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar2 = FUN_0014703c(param_1);" (assignment_expression "uVar2 = FUN_0014703c(param_1)" identifier = (call_expression "FUN_0014703c(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }" if (parenthesized_expression "(((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0))" ( (binary_expression "((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0x21) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x21) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x21) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x21) & 2" (pointer_expression "*(byte *)(param_1 + 0x21)" * (cast_expression "(byte *)(param_1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)" ( (comma_expression "FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0" (call_expression "FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4))" identifier (argument_list "(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(DAT_001c65d8 + 4)" * (cast_expression "(undefined4 *)(DAT_001c65d8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001c65d8 + 4)" ( (binary_expression "DAT_001c65d8 + 4" identifier + number_literal) )))) ))) , (binary_expression "(*(byte *)(param_1 + 0x21) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x21) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x21) & 1" (pointer_expression "*(byte *)(param_1 + 0x21)" * (cast_expression "(byte *)(param_1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n    raise(2);\n  }" { (expression_statement "raise(2);" (call_expression "raise(2)" identifier (argument_list "(2)" ( number_literal ))) ;) })) (if_statement "if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x20) == '\x02')" ( (binary_expression "*(char *)(param_1 + 0x20) == '\x02'" (pointer_expression "*(char *)(param_1 + 0x20)" * (cast_expression "(char *)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00147b4d(param_1);\n  }" { (expression_statement "FUN_00147b4d(param_1);" (call_expression "FUN_00147b4d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_00149f7b(long param_1)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}" (type_identifier "undefined4") (function_declarator "FUN_00149f7b(long param_1)" (identifier "FUN_00149f7b") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  \n  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;\n  cVar1 = *(char *)(param_1 + 0x20);\n  while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }\n  FUN_001475a4();\n  uVar2 = FUN_0014703c(param_1);\n  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }\n  if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }\n  return uVar2;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (expression_statement "*(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;" (assignment_expression "*(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1" (pointer_expression "*(int *)(DAT_001c65d8 + 0x38)" (* "*") (cast_expression "(int *)(DAT_001c65d8 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001c65d8 + 0x38)" (( "(") (binary_expression "DAT_001c65d8 + 0x38" (identifier "DAT_001c65d8") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (binary_expression "*(int *)(DAT_001c65d8 + 0x38) + 1" (pointer_expression "*(int *)(DAT_001c65d8 + 0x38)" (* "*") (cast_expression "(int *)(DAT_001c65d8 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001c65d8 + 0x38)" (( "(") (binary_expression "DAT_001c65d8 + 0x38" (identifier "DAT_001c65d8") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *(char *)(param_1 + 0x20);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x20)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_1 + 0x20)" (* "*") (cast_expression "(char *)(param_1 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (while_statement "while (cVar1 == '\0') {\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }" (while "while") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_00149beb(1,param_1);\n    cVar1 = *(char *)(param_1 + 0x20);\n  }" ({ "{") (expression_statement "FUN_00149beb(1,param_1);" (call_expression "FUN_00149beb(1,param_1)" (identifier "FUN_00149beb") (argument_list "(1,param_1)" (( "(") (number_literal "1") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "cVar1 = *(char *)(param_1 + 0x20);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x20)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_1 + 0x20)" (* "*") (cast_expression "(char *)(param_1 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (expression_statement "FUN_001475a4();" (call_expression "FUN_001475a4()" (identifier "FUN_001475a4") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar2 = FUN_0014703c(param_1);" (assignment_expression "uVar2 = FUN_0014703c(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_0014703c(param_1)" (identifier "FUN_0014703c") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)) {\n    raise(2);\n  }" (if "if") (parenthesized_expression "(((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0))" (( "(") (binary_expression "((*(byte *)(param_1 + 0x21) & 2) != 0) &&\n     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0x21) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x21) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x21) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x21) & 2" (pointer_expression "*(byte *)(param_1 + 0x21)" (* "*") (cast_expression "(byte *)(param_1 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21)" (( "(") (binary_expression "param_1 + 0x21" (identifier "param_1") (+ "+") (number_literal "0x21")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0)" (( "(") (comma_expression "FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),\n     (*(byte *)(param_1 + 0x21) & 1) != 0" (call_expression "FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4))" (identifier "FUN_0014877f") (argument_list "(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4))" (( "(") (identifier "DAT_001c6270") (, ",") (pointer_expression "*(undefined4 *)(DAT_001c65d8 + 4)" (* "*") (cast_expression "(undefined4 *)(DAT_001c65d8 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001c65d8 + 4)" (( "(") (binary_expression "DAT_001c65d8 + 4" (identifier "DAT_001c65d8") (+ "+") (number_literal "4")) () ")")))) () ")"))) (, ",") (binary_expression "(*(byte *)(param_1 + 0x21) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x21) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0x21) & 1" (pointer_expression "*(byte *)(param_1 + 0x21)" (* "*") (cast_expression "(byte *)(param_1 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21)" (( "(") (binary_expression "param_1 + 0x21" (identifier "param_1") (+ "+") (number_literal "0x21")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    raise(2);\n  }" ({ "{") (expression_statement "raise(2);" (call_expression "raise(2)" (identifier "raise") (argument_list "(2)" (( "(") (number_literal "2") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(param_1 + 0x20) == '\x02') {\n    FUN_00147b4d(param_1);\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x20) == '\x02')" (( "(") (binary_expression "*(char *)(param_1 + 0x20) == '\x02'" (pointer_expression "*(char *)(param_1 + 0x20)" (* "*") (cast_expression "(char *)(param_1 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n    FUN_00147b4d(param_1);\n  }" ({ "{") (expression_statement "FUN_00147b4d(param_1);" (call_expression "FUN_00147b4d(param_1)" (identifier "FUN_00147b4d") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

int function_1(type_1 *jp)

{
  char var_1;
  int iVar2;
  
  ash_ptr_to_globals_misc->suppress_int = ash_ptr_to_globals_misc->suppress_int + 1;
  var_1 = jp->field_0x20;
  while (var_1 == '\0') {
    var_2(1,jp);
    var_1 = jp->field_0x20;
  }
  var_3();
  iVar2 = var_4(jp);
  if (((jp->field_0x21 & 2) != 0) &&
     (var_5(ttyfd,ash_ptr_to_globals_misc->rootpid), (jp->field_0x21 & 1) != 0)) {
    var_6(2);
  }
  if (jp->field_0x20 == '\x02') {
    var_7(jp);
  }
  return iVar2;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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: (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: (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))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (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 (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (call_expression function: (identifier) arguments: (argument_list (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))))))) right: (binary_expression left: (parenthesized_expression (binary_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: (number_literal))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (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: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (return_statement (identifier)))))

undefined4 MASKED(long param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  *(int *)(DAT_001c65d8 + 0x38) = *(int *)(DAT_001c65d8 + 0x38) + 1;
  cVar1 = *(char *)(param_1 + 0x20);
  while (cVar1 == '\0') {
    FUN_00149beb(1,param_1);
    cVar1 = *(char *)(param_1 + 0x20);
  }
  FUN_001475a4();
  uVar2 = FUN_0014703c(param_1);
  if (((*(byte *)(param_1 + 0x21) & 2) != 0) &&
     (FUN_0014877f(DAT_001c6270,*(undefined4 *)(DAT_001c65d8 + 4)),
     (*(byte *)(param_1 + 0x21) & 1) != 0)) {
    raise(2);
  }
  if (*(char *)(param_1 + 0x20) == '\x02') {
    FUN_00147b4d(param_1);
  }
  return uVar2;
}

