
void cwd_advance_fd(FTS *sp,int fd,_Bool chdir_down_one)

{
  int iVar1;
  undefined3 in_register_00000018;
  
  iVar1 = sp->fts_cwd_fd;
  if ((iVar1 == fd) && (fd != -100)) {
    (*(code *)PTR_abort_000332e8)();
    return;
  }
  if (CONCAT31(in_register_00000018,chdir_down_one) == 0) {
    if (((sp->fts_options & 4U) == 0) && (-1 < iVar1)) {
      (*(code *)PTR_close_000332cc)(iVar1);
      sp->fts_cwd_fd = fd;
      return;
    }
  }
  else {
    iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);
    if (-1 < iVar1) {
      (*(code *)PTR_close_000332cc)(iVar1);
      sp->fts_cwd_fd = fd;
      return;
    }
  }
  sp->fts_cwd_fd = fd;
  return;
}



void FUN_0001bbf8(int param_1,int param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x20);
  if ((iVar1 == param_2) && (param_2 != -100)) {
    (*(code *)PTR_abort_000332e8)();
    return;
  }
  if (param_3 == 0) {
    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {
      (*(code *)PTR_close_000332cc)(iVar1);
      *(int *)(param_1 + 0x20) = param_2;
      return;
    }
  }
  else {
    iVar1 = i_ring_push(param_1 + 0x3c);
    if (-1 < iVar1) {
      (*(code *)PTR_close_000332cc)(iVar1);
      *(int *)(param_1 + 0x20) = param_2;
      return;
    }
  }
  *(int *)(param_1 + 0x20) = param_2;
  return;
}


lui gp,0x2
addiu gp,gp,-0xb28
addu gp,gp,t9
addiu sp,sp,-0x28
sw ra,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
or s1,a1,zero
lw a1,0x20(a0)
beq a1,s1,0x0001bc60
_or s0,a0,zero
bne a2,zero,0x0001bc74
_lw t9,-0x7e70(gp)
lw v0,0x30(s0)
andi v0,v0,0x4
bne v0,zero,0x0001bc48
_nop
bgez a1,0x0001bca4
_lw t9,-0x7e04(gp)
sw s1,0x20(s0)
lw ra,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x28
li v0,-0x64
beq s1,v0,0x0001bc28
_lw t9,-0x7de8(gp)
jalr t9
_nop
addiu a0,s0,0x3c
bal 0x000202b0
_nop
lw gp,0x10(sp)
bltz v0,0x0001bc48
_lw t9,-0x7e04(gp)
or a0,v0,zero
jalr t9
_nop
lw gp,0x10(sp)
b 0x0001bc4c
_sw s1,0x20(s0)
or a0,a1,zero
jalr t9
_nop
lw gp,0x10(sp)
b 0x0001bc4c
_sw s1,0x20(s0)
(translation_unit "void FUN_0001bbf8(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}\n\n" (function_definition "void FUN_0001bbf8(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}" primitive_type (function_declarator "FUN_0001bbf8(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x20)" identifier = (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" if (parenthesized_expression "((iVar1 == param_2) && (param_2 != -100))" ( (binary_expression "(iVar1 == param_2) && (param_2 != -100)" (parenthesized_expression "(iVar1 == param_2)" ( (binary_expression "iVar1 == param_2" identifier == identifier) )) && (parenthesized_expression "(param_2 != -100)" ( (binary_expression "param_2 != -100" identifier != number_literal) ))) )) (compound_statement "{\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" { (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" ( (pointer_expression "*(code *)PTR_abort_000332e8" * (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" { (if_statement "if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1))" ( (binary_expression "((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)" (parenthesized_expression "((*(uint *)(param_1 + 0x30) & 4) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x30) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x30) & 4)" ( (binary_expression "*(uint *)(param_1 + 0x30) & 4" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) ))) )) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" { (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" ( (pointer_expression "*(code *)PTR_close_000332cc" * (cast_expression "(code *)PTR_close_000332cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" else (compound_statement "{\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" { (expression_statement "iVar1 = i_ring_push(param_1 + 0x3c);" (assignment_expression "iVar1 = i_ring_push(param_1 + 0x3c)" identifier = (call_expression "i_ring_push(param_1 + 0x3c)" identifier (argument_list "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ;) (if_statement "if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" { (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" ( (pointer_expression "*(code *)PTR_close_000332cc" * (cast_expression "(code *)PTR_close_000332cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }))) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void cwd_advance_fd(FTS *sp,int fd,_Bool chdir_down_one)\n\n{\n  int iVar1;\n  undefined3 in_register_00000018;\n  \n  iVar1 = sp->fts_cwd_fd;\n  if ((iVar1 == fd) && (fd != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (CONCAT31(in_register_00000018,chdir_down_one) == 0) {\n    if (((sp->fts_options & 4U) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }\n  sp->fts_cwd_fd = fd;\n  return;\n}\n\n" (function_definition "void cwd_advance_fd(FTS *sp,int fd,_Bool chdir_down_one)\n\n{\n  int iVar1;\n  undefined3 in_register_00000018;\n  \n  iVar1 = sp->fts_cwd_fd;\n  if ((iVar1 == fd) && (fd != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (CONCAT31(in_register_00000018,chdir_down_one) == 0) {\n    if (((sp->fts_options & 4U) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }\n  sp->fts_cwd_fd = fd;\n  return;\n}" primitive_type (function_declarator "cwd_advance_fd(FTS *sp,int fd,_Bool chdir_down_one)" identifier (parameter_list "(FTS *sp,int fd,_Bool chdir_down_one)" ( (parameter_declaration "FTS *sp" type_identifier (pointer_declarator "*sp" * identifier)) , (parameter_declaration "int fd" primitive_type identifier) , (parameter_declaration "_Bool chdir_down_one" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined3 in_register_00000018;\n  \n  iVar1 = sp->fts_cwd_fd;\n  if ((iVar1 == fd) && (fd != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (CONCAT31(in_register_00000018,chdir_down_one) == 0) {\n    if (((sp->fts_options & 4U) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }\n  sp->fts_cwd_fd = fd;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (expression_statement "iVar1 = sp->fts_cwd_fd;" (assignment_expression "iVar1 = sp->fts_cwd_fd" identifier = (field_expression "sp->fts_cwd_fd" identifier -> field_identifier)) ;) (if_statement "if ((iVar1 == fd) && (fd != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" if (parenthesized_expression "((iVar1 == fd) && (fd != -100))" ( (binary_expression "(iVar1 == fd) && (fd != -100)" (parenthesized_expression "(iVar1 == fd)" ( (binary_expression "iVar1 == fd" identifier == identifier) )) && (parenthesized_expression "(fd != -100)" ( (binary_expression "fd != -100" identifier != number_literal) ))) )) (compound_statement "{\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" { (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" ( (pointer_expression "*(code *)PTR_abort_000332e8" * (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if (CONCAT31(in_register_00000018,chdir_down_one) == 0) {\n    if (((sp->fts_options & 4U) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }" if (parenthesized_expression "(CONCAT31(in_register_00000018,chdir_down_one) == 0)" ( (binary_expression "CONCAT31(in_register_00000018,chdir_down_one) == 0" (call_expression "CONCAT31(in_register_00000018,chdir_down_one)" identifier (argument_list "(in_register_00000018,chdir_down_one)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n    if (((sp->fts_options & 4U) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }" { (if_statement "if (((sp->fts_options & 4U) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }" if (parenthesized_expression "(((sp->fts_options & 4U) == 0) && (-1 < iVar1))" ( (binary_expression "((sp->fts_options & 4U) == 0) && (-1 < iVar1)" (parenthesized_expression "((sp->fts_options & 4U) == 0)" ( (binary_expression "(sp->fts_options & 4U) == 0" (parenthesized_expression "(sp->fts_options & 4U)" ( (binary_expression "sp->fts_options & 4U" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) ))) )) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }" { (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" ( (pointer_expression "*(code *)PTR_close_000332cc" * (cast_expression "(code *)PTR_close_000332cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "sp->fts_cwd_fd = fd;" (assignment_expression "sp->fts_cwd_fd = fd" (field_expression "sp->fts_cwd_fd" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }" else (compound_statement "{\n    iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }\n  }" { (expression_statement "iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1);" (assignment_expression "iVar1 = i_ring_push(&sp->fts_fd_ring,iVar1)" identifier = (call_expression "i_ring_push(&sp->fts_fd_ring,iVar1)" identifier (argument_list "(&sp->fts_fd_ring,iVar1)" ( (pointer_expression "&sp->fts_fd_ring" & (field_expression "sp->fts_fd_ring" identifier -> field_identifier)) , identifier )))) ;) (if_statement "if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      sp->fts_cwd_fd = fd;\n      return;\n    }" { (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" ( (pointer_expression "*(code *)PTR_close_000332cc" * (cast_expression "(code *)PTR_close_000332cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "sp->fts_cwd_fd = fd;" (assignment_expression "sp->fts_cwd_fd = fd" (field_expression "sp->fts_cwd_fd" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) }))) (expression_statement "sp->fts_cwd_fd = fd;" (assignment_expression "sp->fts_cwd_fd = fd" (field_expression "sp->fts_cwd_fd" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0001bbf8(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}\n\n" (function_definition "void FUN_0001bbf8(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}" primitive_type (function_declarator "FUN_0001bbf8(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x20)" identifier = (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" if (parenthesized_expression "((iVar1 == param_2) && (param_2 != -100))" ( (binary_expression "(iVar1 == param_2) && (param_2 != -100)" (parenthesized_expression "(iVar1 == param_2)" ( (binary_expression "iVar1 == param_2" identifier == identifier) )) && (parenthesized_expression "(param_2 != -100)" ( (binary_expression "param_2 != -100" identifier != number_literal) ))) )) (compound_statement "{\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" { (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" ( (pointer_expression "*(code *)PTR_abort_000332e8" * (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" { (if_statement "if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1))" ( (binary_expression "((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)" (parenthesized_expression "((*(uint *)(param_1 + 0x30) & 4) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x30) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x30) & 4)" ( (binary_expression "*(uint *)(param_1 + 0x30) & 4" (pointer_expression "*(uint *)(param_1 + 0x30)" * (cast_expression "(uint *)(param_1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) ))) )) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" { (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" ( (pointer_expression "*(code *)PTR_close_000332cc" * (cast_expression "(code *)PTR_close_000332cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" else (compound_statement "{\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" { (expression_statement "iVar1 = i_ring_push(param_1 + 0x3c);" (assignment_expression "iVar1 = i_ring_push(param_1 + 0x3c)" identifier = (call_expression "i_ring_push(param_1 + 0x3c)" identifier (argument_list "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ;) (if_statement "if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" { (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" ( (pointer_expression "*(code *)PTR_close_000332cc" * (cast_expression "(code *)PTR_close_000332cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) }))) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (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 (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_0001bbf8(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0001bbf8(int param_1,int param_2,int param_3)" (identifier "FUN_0001bbf8") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (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 iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0x20);\n  if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }\n  if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  *(int *)(param_1 + 0x20) = param_2;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar1 = *(int *)(param_1 + 0x20)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((iVar1 == param_2) && (param_2 != -100)) {\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" (if "if") (parenthesized_expression "((iVar1 == param_2) && (param_2 != -100))" (( "(") (binary_expression "(iVar1 == param_2) && (param_2 != -100)" (parenthesized_expression "(iVar1 == param_2)" (( "(") (binary_expression "iVar1 == param_2" (identifier "iVar1") (== "==") (identifier "param_2")) () ")")) (&& "&&") (parenthesized_expression "(param_2 != -100)" (( "(") (binary_expression "param_2 != -100" (identifier "param_2") (!= "!=") (number_literal "-100")) () ")"))) () ")")) (compound_statement "{\n    (*(code *)PTR_abort_000332e8)();\n    return;\n  }" ({ "{") (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" (( "(") (pointer_expression "*(code *)PTR_abort_000332e8" (* "*") (cast_expression "(code *)PTR_abort_000332e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_000332e8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }\n  else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" ({ "{") (if_statement "if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" (if "if") (parenthesized_expression "(((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1))" (( "(") (binary_expression "((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)" (parenthesized_expression "((*(uint *)(param_1 + 0x30) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x30) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x30) & 4)" (( "(") (binary_expression "*(uint *)(param_1 + 0x30) & 4" (pointer_expression "*(uint *)(param_1 + 0x30)" (* "*") (cast_expression "(uint *)(param_1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")"))) () ")")) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" (( "(") (pointer_expression "*(code *)PTR_close_000332cc" (* "*") (cast_expression "(code *)PTR_close_000332cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_close_000332cc"))) () ")")) (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" (else "else") (compound_statement "{\n    iVar1 = i_ring_push(param_1 + 0x3c);\n    if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }\n  }" ({ "{") (expression_statement "iVar1 = i_ring_push(param_1 + 0x3c);" (assignment_expression "iVar1 = i_ring_push(param_1 + 0x3c)" (identifier "iVar1") (= "=") (call_expression "i_ring_push(param_1 + 0x3c)" (identifier "i_ring_push") (argument_list "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (; ";")) (if_statement "if (-1 < iVar1) {\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n      (*(code *)PTR_close_000332cc)(iVar1);\n      *(int *)(param_1 + 0x20) = param_2;\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR_close_000332cc)(iVar1);" (call_expression "(*(code *)PTR_close_000332cc)(iVar1)" (parenthesized_expression "(*(code *)PTR_close_000332cc)" (( "(") (pointer_expression "*(code *)PTR_close_000332cc" (* "*") (cast_expression "(code *)PTR_close_000332cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_close_000332cc"))) () ")")) (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(int *)(param_1 + 0x20) = param_2;" (assignment_expression "*(int *)(param_1 + 0x20) = param_2" (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (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))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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 (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (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: (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))) (return_statement)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (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: (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))) (return_statement)))))) (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))) (return_statement))))

void MASKED(int param_1,int param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x20);
  if ((iVar1 == param_2) && (param_2 != -100)) {
    (*(code *)PTR_abort_000332e8)();
    return;
  }
  if (param_3 == 0) {
    if (((*(uint *)(param_1 + 0x30) & 4) == 0) && (-1 < iVar1)) {
      (*(code *)PTR_close_000332cc)(iVar1);
      *(int *)(param_1 + 0x20) = param_2;
      return;
    }
  }
  else {
    iVar1 = i_ring_push(param_1 + 0x3c);
    if (-1 < iVar1) {
      (*(code *)PTR_close_000332cc)(iVar1);
      *(int *)(param_1 + 0x20) = param_2;
      return;
    }
  }
  *(int *)(param_1 + 0x20) = param_2;
  return;
}

