
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void close_all(Descriptors * this) */

void __thiscall gold::Descriptors::close_all(Descriptors *this)

{
  pointer pOVar1;
  Lock *pLVar2;
  char *pcVar3;
  int iVar4;
  int *piVar5;
  char *pcVar6;
  char *format;
  pointer pOVar7;
  uint __fd;
  
  pLVar2 = this->lock_;
  if (pLVar2 == (Lock *)0x0) {
    pOVar7 = (this->open_descriptors_).
             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>
             ._M_impl._M_start;
    if (pOVar7 == (this->open_descriptors_).
                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>
                  ._M_impl._M_finish) {
      this->stack_top_ = -1;
      return;
    }
  }
  else {
    (*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);
    pOVar7 = (this->open_descriptors_).
             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>
             ._M_impl._M_start;
    if (pOVar7 == (this->open_descriptors_).
                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>
                  ._M_impl._M_finish) {
      this->stack_top_ = -1;
      goto LAB_001a0b19;
    }
  }
  __fd = 0;
  do {
    pOVar1 = pOVar7 + __fd;
    if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))
    {
                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */
      iVar4 = close(__fd);
      if (iVar4 < 0) {
        piVar5 = __errno_location();
        pcVar6 = strerror(*piVar5);
        pcVar3 = pOVar1->name;
        format = (char *)gettext("while closing %s: %s");
        gold_warning(format,pcVar3,pcVar6);
      }
      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {
                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */
        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,
                      pOVar1->name);
      }
      pOVar1->name = (char *)0x0;
      pOVar1->stack_next = -1;
      pOVar1->is_on_stack = false;
      pOVar7 = (this->open_descriptors_).
               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>
               ._M_impl._M_start;
    }
    __fd = __fd + 1;
  } while (__fd < (uint)(((int)(this->open_descriptors_).
                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>
                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555));
  this->stack_top_ = -1;
  if (pLVar2 == (Lock *)0x0) {
    return;
  }
LAB_001a0b19:
                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*pLVar2->lock_->_vptr_Lock_impl[3])();
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_001a0a30(int *param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  char *pcVar5;
  undefined4 uVar6;
  uint __fd;
  
  puVar2 = (undefined4 *)*param_1;
  if (puVar2 == (undefined4 *)0x0) {
    iVar3 = param_1[6];
    if (iVar3 == param_1[7]) {
      param_1[9] = -1;
      return;
    }
  }
  else {
    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);
    iVar3 = param_1[6];
    if (iVar3 == param_1[7]) {
      param_1[9] = -1;
      goto LAB_001a0b19;
    }
  }
  __fd = 0;
  do {
    piVar1 = (int *)(iVar3 + __fd * 0xc);
    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {
                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */
      iVar3 = close(__fd);
      if (iVar3 < 0) {
        piVar4 = __errno_location();
        pcVar5 = strerror(*piVar4);
        iVar3 = *piVar1;
        uVar6 = gettext("while closing %s: %s");
        FUN_000654e0(uVar6,iVar3,pcVar5);
      }
      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {
                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */
        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);
      }
      *piVar1 = 0;
      piVar1[1] = -1;
      *(undefined1 *)((int)piVar1 + 10) = 0;
      iVar3 = param_1[6];
    }
    __fd = __fd + 1;
  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));
  param_1[9] = -1;
  if (puVar2 == (undefined4 *)0x0) {
    return;
  }
LAB_001a0b19:
                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(int *)*puVar2 + 0xc))();
  return;
}


CALL 0x000559e6
ADD EAX,0x1ee5cb
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EBX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x24],EAX
MOV EAX,dword ptr [EBX]
MOV dword ptr [EBP + -0x20],EBX
MOV dword ptr [EBP + -0x28],EAX
TEST EAX,EAX
JZ 0x001a0b50
MOV EAX,dword ptr [EAX]
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x8]
MOV EDX,dword ptr [EBX + 0x18]
ADD ESP,0x10
CMP EDX,dword ptr [EBX + 0x1c]
JZ 0x001a0bba
MOV EAX,dword ptr [EBP + -0x24]
XOR ESI,ESI
LEA ECX,[EAX + 0xfff0ef4c]
LEA EAX,[EAX + 0x378]
MOV dword ptr [EBP + -0x30],ECX
MOV dword ptr [EBP + -0x2c],EAX
JMP 0x001a0aab
MOV EAX,dword ptr [EBP + -0x20]
ADD ESI,0x1
MOV EAX,dword ptr [EAX + 0x1c]
MOV dword ptr [EBP + -0x1c],EAX
SUB EAX,EDX
SAR EAX,0x2
IMUL EAX,EAX,-0x55555555
CMP ESI,EAX
JNC 0x001a0b08
LEA EAX,[ESI + ESI*0x2]
LEA EDI,[EDX + EAX*0x4]
MOV EBX,dword ptr [EDI]
TEST EBX,EBX
JZ 0x001a0a90
CMP byte ptr [EDI + 0x8],0x0
JNZ 0x001a0a90
CMP byte ptr [EDI + 0x9],0x0
JNZ 0x001a0a90
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x24]
PUSH ESI
CALL 0x00029720
ADD ESP,0x10
TEST EAX,EAX
JS 0x001a0b78
MOV EAX,dword ptr [EBP + -0x2c]
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x001a0aec
TEST byte ptr [EAX + 0x14],0x4
JNZ 0x001a0b30
MOV EAX,dword ptr [EBP + -0x20]
MOV dword ptr [EDI],0x0
MOV dword ptr [EDI + 0x4],0xffffffff
MOV byte ptr [EDI + 0xa],0x0
MOV EDX,dword ptr [EAX + 0x18]
JMP 0x001a0a90
MOV EAX,dword ptr [EBP + -0x20]
MOV dword ptr [EAX + 0x24],0xffffffff
MOV EAX,dword ptr [EBP + -0x28]
TEST EAX,EAX
JZ 0x001a0b69
MOV EAX,dword ptr [EBP + -0x28]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX]
MOV dword ptr [EBP + 0x8],EAX
MOV EAX,dword ptr [EDX + 0xc]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
JMP EAX
MOV EBX,dword ptr [EBP + -0x24]
PUSH dword ptr [EDI]
PUSH ESI
LEA EDX,[EBX + 0xfff0efa0]
PUSH EDX
PUSH dword ptr [EAX]
CALL 0x000653f0
ADD ESP,0x10
JMP 0x001a0aec
MOV EAX,dword ptr [EBP + -0x20]
MOV EDX,dword ptr [EAX + 0x18]
CMP EDX,dword ptr [EAX + 0x1c]
JNZ 0x001a0a73
MOV EAX,dword ptr [EBP + -0x20]
MOV dword ptr [EAX + 0x24],0xffffffff
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [EBP + -0x24]
CALL 0x00029090
SUB ESP,0xc
PUSH dword ptr [EAX]
CALL 0x00029100
MOV EDX,dword ptr [EDI]
MOV EBX,dword ptr [EBP + -0x24]
MOV dword ptr [EBP + -0x34],EAX
MOV dword ptr [EBP + -0x1c],EDX
POP EDX
PUSH dword ptr [EBP + -0x30]
CALL 0x000293b0
MOV ECX,dword ptr [EBP + -0x34]
MOV EDX,dword ptr [EBP + -0x1c]
ADD ESP,0xc
MOV EBX,dword ptr [EBP + -0x24]
PUSH ECX
PUSH EDX
PUSH EAX
CALL 0x000654e0
ADD ESP,0x10
JMP 0x001a0ada
MOV EAX,dword ptr [EBP + -0x20]
MOV dword ptr [EAX + 0x24],0xffffffff
JMP 0x001a0b19
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_001a0a30(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}\n\n" comment (function_definition "void FUN_001a0a30(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}" primitive_type (function_declarator "FUN_001a0a30(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint __fd;" type_identifier identifier ;) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }" { (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }" if (parenthesized_expression "(iVar3 == param_1[7])" ( (binary_expression "iVar3 == param_1[7]" identifier == (subscript_expression "param_1[7]" identifier [ number_literal ])) )) (compound_statement "{\n      param_1[9] = -1;\n      return;\n    }" { (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" else (compound_statement "{\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" { (expression_statement "(**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);" (call_expression "(**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2)" (parenthesized_expression "(**(code **)(*(int *)*puVar2 + 8))" ( (pointer_expression "**(code **)(*(int *)*puVar2 + 8)" * (pointer_expression "*(code **)(*(int *)*puVar2 + 8)" * (cast_expression "(code **)(*(int *)*puVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)*puVar2 + 8)" ( (binary_expression "*(int *)*puVar2 + 8" (pointer_expression "*(int *)*puVar2" * (cast_expression "(int *)*puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) + number_literal) ))))) )) (argument_list "((int *)*puVar2)" ( (cast_expression "(int *)*puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) ))) ;) (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }" if (parenthesized_expression "(iVar3 == param_1[7])" ( (binary_expression "iVar3 == param_1[7]" identifier == (subscript_expression "param_1[7]" identifier [ number_literal ])) )) (compound_statement "{\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }" { (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_001a0b19;" goto statement_identifier ;) })) }))) (expression_statement "__fd = 0;" (assignment_expression "__fd = 0" identifier = number_literal) ;) (do_statement "do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));" do (compound_statement "{\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  }" { (expression_statement "piVar1 = (int *)(iVar3 + __fd * 0xc);" (assignment_expression "piVar1 = (int *)(iVar3 + __fd * 0xc)" identifier = (cast_expression "(int *)(iVar3 + __fd * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + __fd * 0xc)" ( (binary_expression "iVar3 + __fd * 0xc" identifier + (binary_expression "__fd * 0xc" identifier * number_literal)) )))) ;) (if_statement "if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }" if (parenthesized_expression "(((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0'))" ( (binary_expression "((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')" (parenthesized_expression "((*piVar1 != 0) && ((char)piVar1[2] == '\0'))" ( (binary_expression "(*piVar1 != 0) && ((char)piVar1[2] == '\0')" (parenthesized_expression "(*piVar1 != 0)" ( (binary_expression "*piVar1 != 0" (pointer_expression "*piVar1" * identifier) != number_literal) )) && (parenthesized_expression "((char)piVar1[2] == '\0')" ( (binary_expression "(char)piVar1[2] == '\0'" (cast_expression "(char)piVar1[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar1[2]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(char *)((int)piVar1 + 9) == '\0')" ( (binary_expression "*(char *)((int)piVar1 + 9) == '\0'" (pointer_expression "*(char *)((int)piVar1 + 9)" * (cast_expression "(char *)((int)piVar1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar1 + 9)" ( (binary_expression "(int)piVar1 + 9" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }" { comment (expression_statement "iVar3 = close(__fd);" (assignment_expression "iVar3 = close(__fd)" identifier = (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }" { (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "iVar3 = *piVar1;" (assignment_expression "iVar3 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar6 = gettext("while closing %s: %s");" (assignment_expression "uVar6 = gettext("while closing %s: %s")" identifier = (call_expression "gettext("while closing %s: %s")" identifier (argument_list "("while closing %s: %s")" ( (string_literal ""while closing %s: %s"" " string_content ") )))) ;) (expression_statement "FUN_000654e0(uVar6,iVar3,pcVar5);" (call_expression "FUN_000654e0(uVar6,iVar3,pcVar5)" identifier (argument_list "(uVar6,iVar3,pcVar5)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }" if (parenthesized_expression "((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0))" ( (binary_expression "(DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)" (parenthesized_expression "(DAT_0038f378[2] != 0)" ( (binary_expression "DAT_0038f378[2] != 0" (subscript_expression "DAT_0038f378[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(DAT_0038f378 + 5) & 4) != 0)" ( (binary_expression "(*(byte *)(DAT_0038f378 + 5) & 4) != 0" (parenthesized_expression "(*(byte *)(DAT_0038f378 + 5) & 4)" ( (binary_expression "*(byte *)(DAT_0038f378 + 5) & 4" (pointer_expression "*(byte *)(DAT_0038f378 + 5)" * (cast_expression "(byte *)(DAT_0038f378 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 5)" ( (binary_expression "DAT_0038f378 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }" { comment (expression_statement "FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);" (call_expression "FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1)" identifier (argument_list "(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1)" ( (pointer_expression "*DAT_0038f378" * identifier) , (string_literal ""Closed descriptor %d for \"%s\" (close_all)"" " string_content escape_sequence string_content escape_sequence string_content ") , identifier , (pointer_expression "*piVar1" * identifier) ))) ;) })) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "piVar1[1] = -1;" (assignment_expression "piVar1[1] = -1" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)piVar1 + 10) = 0;" (assignment_expression "*(undefined1 *)((int)piVar1 + 10) = 0" (pointer_expression "*(undefined1 *)((int)piVar1 + 10)" * (cast_expression "(undefined1 *)((int)piVar1 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar1 + 10)" ( (binary_expression "(int)piVar1 + 10" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) })) (expression_statement "__fd = __fd + 1;" (assignment_expression "__fd = __fd + 1" identifier = (binary_expression "__fd + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555))" ( (binary_expression "__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555)" identifier < (call_expression "(uint)((param_1[7] - iVar3 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_1[7] - iVar3 >> 2) * -0x55555555)" ( (binary_expression "(param_1[7] - iVar3 >> 2) * -0x55555555" (parenthesized_expression "(param_1[7] - iVar3 >> 2)" ( (binary_expression "param_1[7] - iVar3 >> 2" (binary_expression "param_1[7] - iVar3" (subscript_expression "param_1[7]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(*(int *)*puVar2 + 0xc))();" statement_identifier : comment comment (expression_statement "(**(code **)(*(int *)*puVar2 + 0xc))();" (call_expression "(**(code **)(*(int *)*puVar2 + 0xc))()" (parenthesized_expression "(**(code **)(*(int *)*puVar2 + 0xc))" ( (pointer_expression "**(code **)(*(int *)*puVar2 + 0xc)" * (pointer_expression "*(code **)(*(int *)*puVar2 + 0xc)" * (cast_expression "(code **)(*(int *)*puVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)*puVar2 + 0xc)" ( (binary_expression "*(int *)*puVar2 + 0xc" (pointer_expression "*(int *)*puVar2" * (cast_expression "(int *)*puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void close_all(Descriptors * this) */\n\nvoid __thiscall gold::Descriptors::close_all(Descriptors *this)\n\n{\n  pointer pOVar1;\n  Lock *pLVar2;\n  char *pcVar3;\n  int iVar4;\n  int *piVar5;\n  char *pcVar6;\n  char *format;\n  pointer pOVar7;\n  uint __fd;\n  \n  pLVar2 = this->lock_;\n  if (pLVar2 == (Lock *)0x0) {\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      return;\n    }\n  }\n  else {\n    (*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    pOVar1 = pOVar7 + __fd;\n    if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))\n    {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar4 = close(__fd);\n      if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }\n      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }\n      pOVar1->name = (char *)0x0;\n      pOVar1->stack_next = -1;\n      pOVar1->is_on_stack = false;\n      pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555));\n  this->stack_top_ = -1;\n  if (pLVar2 == (Lock *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*pLVar2->lock_->_vptr_Lock_impl[3])();\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Descriptors::close_all(Descriptors *this)\n\n{\n  pointer pOVar1;\n  Lock *pLVar2;\n  char *pcVar3;\n  int iVar4;\n  int *piVar5;\n  char *pcVar6;\n  char *format;\n  pointer pOVar7;\n  uint __fd;\n  \n  pLVar2 = this->lock_;\n  if (pLVar2 == (Lock *)0x0) {\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      return;\n    }\n  }\n  else {\n    (*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    pOVar1 = pOVar7 + __fd;\n    if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))\n    {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar4 = close(__fd);\n      if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }\n      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }\n      pOVar1->name = (char *)0x0;\n      pOVar1->stack_next = -1;\n      pOVar1->is_on_stack = false;\n      pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555));\n  this->stack_top_ = -1;\n  if (pLVar2 == (Lock *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*pLVar2->lock_->_vptr_Lock_impl[3])();\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Descriptors::" identifier : : identifier : :) (function_declarator "close_all(Descriptors *this)" identifier (parameter_list "(Descriptors *this)" ( (parameter_declaration "Descriptors *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  pointer pOVar1;\n  Lock *pLVar2;\n  char *pcVar3;\n  int iVar4;\n  int *piVar5;\n  char *pcVar6;\n  char *format;\n  pointer pOVar7;\n  uint __fd;\n  \n  pLVar2 = this->lock_;\n  if (pLVar2 == (Lock *)0x0) {\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      return;\n    }\n  }\n  else {\n    (*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    pOVar1 = pOVar7 + __fd;\n    if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))\n    {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar4 = close(__fd);\n      if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }\n      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }\n      pOVar1->name = (char *)0x0;\n      pOVar1->stack_next = -1;\n      pOVar1->is_on_stack = false;\n      pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555));\n  this->stack_top_ = -1;\n  if (pLVar2 == (Lock *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*pLVar2->lock_->_vptr_Lock_impl[3])();\n  return;\n}" { (declaration "pointer pOVar1;" type_identifier identifier ;) (declaration "Lock *pLVar2;" type_identifier (pointer_declarator "*pLVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "pointer pOVar7;" type_identifier identifier ;) (declaration "uint __fd;" type_identifier identifier ;) (expression_statement "pLVar2 = this->lock_;" (assignment_expression "pLVar2 = this->lock_" identifier = (field_expression "this->lock_" identifier -> field_identifier)) ;) (if_statement "if (pLVar2 == (Lock *)0x0) {\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      return;\n    }\n  }\n  else {\n    (*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }\n  }" if (parenthesized_expression "(pLVar2 == (Lock *)0x0)" ( (binary_expression "pLVar2 == (Lock *)0x0" identifier == (cast_expression "(Lock *)0x0" ( (type_descriptor "Lock *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      return;\n    }\n  }" { (ERROR "pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::" (assignment_expression "pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold" identifier = (binary_expression "(this->open_descriptors_).\n             super__Vector_base<gold" (field_expression "(this->open_descriptors_).\n             super__Vector_base" (parenthesized_expression "(this->open_descriptors_)" ( (field_expression "this->open_descriptors_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;" statement_identifier (ERROR "::Open_descriptor,_std::allocator<gold:" : : (comma_expression "Open_descriptor,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Open_descriptor>_>\n             ._M_impl._M_start;" (field_expression "Open_descriptor>_>\n             ._M_impl._M_start" (field_expression "Open_descriptor>_>\n             ._M_impl" (binary_expression "Open_descriptor>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      return;\n    }" if (parenthesized_expression "(pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish)" ( (ERROR "pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::" (comma_expression "pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std" (binary_expression "pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold" identifier == (binary_expression "(this->open_descriptors_).\n                  super__Vector_base<gold" (field_expression "(this->open_descriptors_).\n                  super__Vector_base" (parenthesized_expression "(this->open_descriptors_)" ( (field_expression "this->open_descriptors_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Descriptors::Open_descriptor" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Open_descriptor>_>\n                  ._M_impl._M_finish" (field_expression "Open_descriptor>_>\n                  ._M_impl" (binary_expression "Open_descriptor>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n      this->stack_top_ = -1;\n      return;\n    }" { (expression_statement "this->stack_top_ = -1;" (assignment_expression "this->stack_top_ = -1" (field_expression "this->stack_top_" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    (*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }\n  }" else (compound_statement "{\n    (*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);\n    pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;\n    if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }\n  }" { (expression_statement "(*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_);" (call_expression "(*pLVar2->lock_->_vptr_Lock_impl[2])(pLVar2->lock_)" (parenthesized_expression "(*pLVar2->lock_->_vptr_Lock_impl[2])" ( (pointer_expression "*pLVar2->lock_->_vptr_Lock_impl[2]" * (subscript_expression "pLVar2->lock_->_vptr_Lock_impl[2]" (field_expression "pLVar2->lock_->_vptr_Lock_impl" (field_expression "pLVar2->lock_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "(pLVar2->lock_)" ( (field_expression "pLVar2->lock_" identifier -> field_identifier) ))) ;) (ERROR "pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold::" (assignment_expression "pOVar7 = (this->open_descriptors_).\n             super__Vector_base<gold" identifier = (binary_expression "(this->open_descriptors_).\n             super__Vector_base<gold" (field_expression "(this->open_descriptors_).\n             super__Vector_base" (parenthesized_expression "(this->open_descriptors_)" ( (field_expression "this->open_descriptors_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;" statement_identifier (ERROR "::Open_descriptor,_std::allocator<gold:" : : (comma_expression "Open_descriptor,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Descriptors::Open_descriptor>_>\n             ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Open_descriptor>_>\n             ._M_impl._M_start;" (field_expression "Open_descriptor>_>\n             ._M_impl._M_start" (field_expression "Open_descriptor>_>\n             ._M_impl" (binary_expression "Open_descriptor>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (if_statement "if (pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish) {\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }" if (parenthesized_expression "(pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                  ._M_impl._M_finish)" ( (ERROR "pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::" (comma_expression "pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold::Descriptors::Open_descriptor,_std" (binary_expression "pOVar7 == (this->open_descriptors_).\n                  super__Vector_base<gold" identifier == (binary_expression "(this->open_descriptors_).\n                  super__Vector_base<gold" (field_expression "(this->open_descriptors_).\n                  super__Vector_base" (parenthesized_expression "(this->open_descriptors_)" ( (field_expression "this->open_descriptors_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Descriptors::Open_descriptor" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Open_descriptor>_>\n                  ._M_impl._M_finish" (field_expression "Open_descriptor>_>\n                  ._M_impl" (binary_expression "Open_descriptor>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n      this->stack_top_ = -1;\n      goto LAB_001a0b19;\n    }" { (expression_statement "this->stack_top_ = -1;" (assignment_expression "this->stack_top_ = -1" (field_expression "this->stack_top_" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_001a0b19;" goto statement_identifier ;) })) }))) (expression_statement "__fd = 0;" (assignment_expression "__fd = 0" identifier = number_literal) ;) (do_statement "do {\n    pOVar1 = pOVar7 + __fd;\n    if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))\n    {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar4 = close(__fd);\n      if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }\n      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }\n      pOVar1->name = (char *)0x0;\n      pOVar1->stack_next = -1;\n      pOVar1->is_on_stack = false;\n      pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555));" do (compound_statement "{\n    pOVar1 = pOVar7 + __fd;\n    if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))\n    {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar4 = close(__fd);\n      if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }\n      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }\n      pOVar1->name = (char *)0x0;\n      pOVar1->stack_next = -1;\n      pOVar1->is_on_stack = false;\n      pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;\n    }\n    __fd = __fd + 1;\n  }" { (expression_statement "pOVar1 = pOVar7 + __fd;" (assignment_expression "pOVar1 = pOVar7 + __fd" identifier = (binary_expression "pOVar7 + __fd" identifier + identifier)) ;) (if_statement "if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))\n    {\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar4 = close(__fd);\n      if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }\n      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }\n      pOVar1->name = (char *)0x0;\n      pOVar1->stack_next = -1;\n      pOVar1->is_on_stack = false;\n      pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;\n    }" if (parenthesized_expression "(((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))" ( (binary_expression "((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false)" (parenthesized_expression "((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false))" ( (binary_expression "(pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)" (parenthesized_expression "(pOVar1->name != (char *)0x0)" ( (binary_expression "pOVar1->name != (char *)0x0" (field_expression "pOVar1->name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pOVar1->inuse == false)" ( (binary_expression "pOVar1->inuse == false" (field_expression "pOVar1->inuse" identifier -> field_identifier) == false) ))) )) && (parenthesized_expression "(pOVar1->is_write == false)" ( (binary_expression "pOVar1->is_write == false" (field_expression "pOVar1->is_write" identifier -> field_identifier) == false) ))) )) (compound_statement "{\n                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */\n      iVar4 = close(__fd);\n      if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }\n      if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }\n      pOVar1->name = (char *)0x0;\n      pOVar1->stack_next = -1;\n      pOVar1->is_on_stack = false;\n      pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;\n    }" { comment (expression_statement "iVar4 = close(__fd);" (assignment_expression "iVar4 = close(__fd)" identifier = (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier )))) ;) (if_statement "if (iVar4 < 0) {\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar5 = __errno_location();\n        pcVar6 = strerror(*piVar5);\n        pcVar3 = pOVar1->name;\n        format = (char *)gettext("while closing %s: %s");\n        gold_warning(format,pcVar3,pcVar6);\n      }" { (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = strerror(*piVar5);" (assignment_expression "pcVar6 = strerror(*piVar5)" identifier = (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) )))) ;) (expression_statement "pcVar3 = pOVar1->name;" (assignment_expression "pcVar3 = pOVar1->name" identifier = (field_expression "pOVar1->name" identifier -> field_identifier)) ;) (expression_statement "format = (char *)gettext("while closing %s: %s");" (assignment_expression "format = (char *)gettext("while closing %s: %s")" identifier = (cast_expression "(char *)gettext("while closing %s: %s")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("while closing %s: %s")" identifier (argument_list "("while closing %s: %s")" ( (string_literal ""while closing %s: %s"" " string_content ") ))))) ;) (expression_statement "gold_warning(format,pcVar3,pcVar6);" (call_expression "gold_warning(format,pcVar3,pcVar6)" identifier (argument_list "(format,pcVar3,pcVar6)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)) {\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }" if (parenthesized_expression "((parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0))" ( (binary_expression "(parameters->options_ != (General_options *)0x0) && ((parameters->debug_ & 4) != 0)" (parenthesized_expression "(parameters->options_ != (General_options *)0x0)" ( (binary_expression "parameters->options_ != (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) != (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((parameters->debug_ & 4) != 0)" ( (binary_expression "(parameters->debug_ & 4) != 0" (parenthesized_expression "(parameters->debug_ & 4)" ( (binary_expression "parameters->debug_ & 4" (field_expression "parameters->debug_" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */\n        Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);\n      }" { comment (labeled_statement "Errors::debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);" statement_identifier : (ERROR ":" :) (expression_statement "debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name);" (call_expression "debug(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name)" identifier (argument_list "(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",__fd,\n                      pOVar1->name)" ( (field_expression "parameters->errors_" identifier -> field_identifier) , (string_literal ""Closed descriptor %d for \"%s\" (close_all)"" " string_content escape_sequence string_content escape_sequence string_content ") , identifier , (field_expression "pOVar1->name" identifier -> field_identifier) ))) ;)) })) (expression_statement "pOVar1->name = (char *)0x0;" (assignment_expression "pOVar1->name = (char *)0x0" (field_expression "pOVar1->name" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOVar1->stack_next = -1;" (assignment_expression "pOVar1->stack_next = -1" (field_expression "pOVar1->stack_next" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar1->is_on_stack = false;" (assignment_expression "pOVar1->is_on_stack = false" (field_expression "pOVar1->is_on_stack" identifier -> field_identifier) = false) ;) (ERROR "pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold::" (assignment_expression "pOVar7 = (this->open_descriptors_).\n               super__Vector_base<gold" identifier = (binary_expression "(this->open_descriptors_).\n               super__Vector_base<gold" (field_expression "(this->open_descriptors_).\n               super__Vector_base" (parenthesized_expression "(this->open_descriptors_)" ( (field_expression "this->open_descriptors_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;" statement_identifier (ERROR "::Open_descriptor,_std::allocator<gold:" : : (comma_expression "Open_descriptor,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Descriptors::Open_descriptor>_>\n               ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Open_descriptor>_>\n               ._M_impl._M_start;" (field_expression "Open_descriptor>_>\n               ._M_impl._M_start" (field_expression "Open_descriptor>_>\n               ._M_impl" (binary_expression "Open_descriptor>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) })) (expression_statement "__fd = __fd + 1;" (assignment_expression "__fd = __fd + 1" identifier = (binary_expression "__fd + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__fd < (uint)(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555))" ( (binary_expression "__fd < (uint)(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555)" identifier < (call_expression "(uint)(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555)" ( (binary_expression "((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2) * -0x55555555" (parenthesized_expression "((int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2)" ( (ERROR "(int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std::allocator<gold::Descriptors::" (comma_expression "(int)(this->open_descriptors_).\n                               super__Vector_base<gold::Descriptors::Open_descriptor,_std" (binary_expression "(int)(this->open_descriptors_).\n                               super__Vector_base<gold" (cast_expression "(int)(this->open_descriptors_).\n                               super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->open_descriptors_).\n                               super__Vector_base" (parenthesized_expression "(this->open_descriptors_)" ( (field_expression "this->open_descriptors_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Descriptors::Open_descriptor" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7 >> 2" (binary_expression "Open_descriptor>_>\n                               ._M_impl._M_finish - (int)pOVar7" (field_expression "Open_descriptor>_>\n                               ._M_impl._M_finish" (field_expression "Open_descriptor>_>\n                               ._M_impl" (binary_expression "Open_descriptor>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)pOVar7" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "this->stack_top_ = -1;" (assignment_expression "this->stack_top_ = -1" (field_expression "this->stack_top_" identifier -> field_identifier) = number_literal) ;) (if_statement "if (pLVar2 == (Lock *)0x0) {\n    return;\n  }" if (parenthesized_expression "(pLVar2 == (Lock *)0x0)" ( (binary_expression "pLVar2 == (Lock *)0x0" identifier == (cast_expression "(Lock *)0x0" ( (type_descriptor "Lock *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_001a0b19:\n                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*pLVar2->lock_->_vptr_Lock_impl[3])();" statement_identifier : comment comment (expression_statement "(*pLVar2->lock_->_vptr_Lock_impl[3])();" (call_expression "(*pLVar2->lock_->_vptr_Lock_impl[3])()" (parenthesized_expression "(*pLVar2->lock_->_vptr_Lock_impl[3])" ( (pointer_expression "*pLVar2->lock_->_vptr_Lock_impl[3]" * (subscript_expression "pLVar2->lock_->_vptr_Lock_impl[3]" (field_expression "pLVar2->lock_->_vptr_Lock_impl" (field_expression "pLVar2->lock_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "()" ( ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001a0a30(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    \n                    \n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}\n\n" (function_definition "void FUN_001a0a30(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    \n                    \n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}" primitive_type (function_declarator "FUN_001a0a30(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    \n                    \n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint __fd;" type_identifier identifier ;) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }" { (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }" if (parenthesized_expression "(iVar3 == param_1[7])" ( (binary_expression "iVar3 == param_1[7]" identifier == (subscript_expression "param_1[7]" identifier [ number_literal ])) )) (compound_statement "{\n      param_1[9] = -1;\n      return;\n    }" { (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" else (compound_statement "{\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" { (expression_statement "(**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);" (call_expression "(**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2)" (parenthesized_expression "(**(code **)(*(int *)*puVar2 + 8))" ( (pointer_expression "**(code **)(*(int *)*puVar2 + 8)" * (pointer_expression "*(code **)(*(int *)*puVar2 + 8)" * (cast_expression "(code **)(*(int *)*puVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)*puVar2 + 8)" ( (binary_expression "*(int *)*puVar2 + 8" (pointer_expression "*(int *)*puVar2" * (cast_expression "(int *)*puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) + number_literal) ))))) )) (argument_list "((int *)*puVar2)" ( (cast_expression "(int *)*puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) ))) ;) (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }" if (parenthesized_expression "(iVar3 == param_1[7])" ( (binary_expression "iVar3 == param_1[7]" identifier == (subscript_expression "param_1[7]" identifier [ number_literal ])) )) (compound_statement "{\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }" { (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_001a0b19;" goto statement_identifier ;) })) }))) (expression_statement "__fd = 0;" (assignment_expression "__fd = 0" identifier = number_literal) ;) (do_statement "do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));" do (compound_statement "{\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  }" { (expression_statement "piVar1 = (int *)(iVar3 + __fd * 0xc);" (assignment_expression "piVar1 = (int *)(iVar3 + __fd * 0xc)" identifier = (cast_expression "(int *)(iVar3 + __fd * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + __fd * 0xc)" ( (binary_expression "iVar3 + __fd * 0xc" identifier + (binary_expression "__fd * 0xc" identifier * number_literal)) )))) ;) (if_statement "if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }" if (parenthesized_expression "(((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0'))" ( (binary_expression "((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')" (parenthesized_expression "((*piVar1 != 0) && ((char)piVar1[2] == '\0'))" ( (binary_expression "(*piVar1 != 0) && ((char)piVar1[2] == '\0')" (parenthesized_expression "(*piVar1 != 0)" ( (binary_expression "*piVar1 != 0" (pointer_expression "*piVar1" * identifier) != number_literal) )) && (parenthesized_expression "((char)piVar1[2] == '\0')" ( (binary_expression "(char)piVar1[2] == '\0'" (cast_expression "(char)piVar1[2]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar1[2]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(char *)((int)piVar1 + 9) == '\0')" ( (binary_expression "*(char *)((int)piVar1 + 9) == '\0'" (pointer_expression "*(char *)((int)piVar1 + 9)" * (cast_expression "(char *)((int)piVar1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar1 + 9)" ( (binary_expression "(int)piVar1 + 9" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }" { (expression_statement "iVar3 = close(__fd);" (assignment_expression "iVar3 = close(__fd)" identifier = (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }" { (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "iVar3 = *piVar1;" (assignment_expression "iVar3 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar6 = gettext("while closing %s: %s");" (assignment_expression "uVar6 = gettext("while closing %s: %s")" identifier = (call_expression "gettext("while closing %s: %s")" identifier (argument_list "("while closing %s: %s")" ( (string_literal ""while closing %s: %s"" " string_content ") )))) ;) (expression_statement "FUN_000654e0(uVar6,iVar3,pcVar5);" (call_expression "FUN_000654e0(uVar6,iVar3,pcVar5)" identifier (argument_list "(uVar6,iVar3,pcVar5)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }" if (parenthesized_expression "((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0))" ( (binary_expression "(DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)" (parenthesized_expression "(DAT_0038f378[2] != 0)" ( (binary_expression "DAT_0038f378[2] != 0" (subscript_expression "DAT_0038f378[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(DAT_0038f378 + 5) & 4) != 0)" ( (binary_expression "(*(byte *)(DAT_0038f378 + 5) & 4) != 0" (parenthesized_expression "(*(byte *)(DAT_0038f378 + 5) & 4)" ( (binary_expression "*(byte *)(DAT_0038f378 + 5) & 4" (pointer_expression "*(byte *)(DAT_0038f378 + 5)" * (cast_expression "(byte *)(DAT_0038f378 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 5)" ( (binary_expression "DAT_0038f378 + 5" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }" { (expression_statement "FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);" (call_expression "FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1)" identifier (argument_list "(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1)" ( (pointer_expression "*DAT_0038f378" * identifier) , (string_literal ""Closed descriptor %d for \"%s\" (close_all)"" " string_content escape_sequence string_content escape_sequence string_content ") , identifier , (pointer_expression "*piVar1" * identifier) ))) ;) })) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" * identifier) = number_literal) ;) (expression_statement "piVar1[1] = -1;" (assignment_expression "piVar1[1] = -1" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)piVar1 + 10) = 0;" (assignment_expression "*(undefined1 *)((int)piVar1 + 10) = 0" (pointer_expression "*(undefined1 *)((int)piVar1 + 10)" * (cast_expression "(undefined1 *)((int)piVar1 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar1 + 10)" ( (binary_expression "(int)piVar1 + 10" (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) })) (expression_statement "__fd = __fd + 1;" (assignment_expression "__fd = __fd + 1" identifier = (binary_expression "__fd + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555))" ( (binary_expression "__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555)" identifier < (call_expression "(uint)((param_1[7] - iVar3 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((param_1[7] - iVar3 >> 2) * -0x55555555)" ( (binary_expression "(param_1[7] - iVar3 >> 2) * -0x55555555" (parenthesized_expression "(param_1[7] - iVar3 >> 2)" ( (binary_expression "param_1[7] - iVar3 >> 2" (binary_expression "param_1[7] - iVar3" (subscript_expression "param_1[7]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_001a0b19:\n                    \n                    \n  (**(code **)(*(int *)*puVar2 + 0xc))();" statement_identifier : (expression_statement "(**(code **)(*(int *)*puVar2 + 0xc))();" (call_expression "(**(code **)(*(int *)*puVar2 + 0xc))()" (parenthesized_expression "(**(code **)(*(int *)*puVar2 + 0xc))" ( (pointer_expression "**(code **)(*(int *)*puVar2 + 0xc)" * (pointer_expression "*(code **)(*(int *)*puVar2 + 0xc)" * (cast_expression "(code **)(*(int *)*puVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)*puVar2 + 0xc)" ( (binary_expression "*(int *)*puVar2 + 0xc" (pointer_expression "*(int *)*puVar2" * (cast_expression "(int *)*puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * 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 IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (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) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (string_literal " string_content escape_sequence string_content escape_sequence string_content ") , IDENT , (pointer_expression * IDENT) ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) >> LIT) )) * LIT) )))) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) )) (argument_list ( ))) ;)) (return_statement return ;) })))
(function_definition "void FUN_001a0a30(int *param_1)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    \n                    \n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001a0a30(int *param_1)" (identifier "FUN_001a0a30") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  uint __fd;\n  \n  puVar2 = (undefined4 *)*param_1;\n  if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }\n  __fd = 0;\n  do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));\n  param_1[9] = -1;\n  if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }\nLAB_001a0b19:\n                    \n                    \n  (**(code **)(*(int *)*puVar2 + 0xc))();\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "uint __fd;" (type_identifier "uint") (identifier "__fd") (; ";")) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }\n  else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" (if "if") (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined4 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }\n  }" ({ "{") (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" (identifier "iVar3") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      return;\n    }" (if "if") (parenthesized_expression "(iVar3 == param_1[7])" (( "(") (binary_expression "iVar3 == param_1[7]" (identifier "iVar3") (== "==") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n      param_1[9] = -1;\n      return;\n    }" ({ "{") (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "-1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" (else "else") (compound_statement "{\n    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);\n    iVar3 = param_1[6];\n    if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }\n  }" ({ "{") (expression_statement "(**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);" (call_expression "(**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2)" (parenthesized_expression "(**(code **)(*(int *)*puVar2 + 8))" (( "(") (pointer_expression "**(code **)(*(int *)*puVar2 + 8)" (* "*") (pointer_expression "*(code **)(*(int *)*puVar2 + 8)" (* "*") (cast_expression "(code **)(*(int *)*puVar2 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)*puVar2 + 8)" (( "(") (binary_expression "*(int *)*puVar2 + 8" (pointer_expression "*(int *)*puVar2" (* "*") (cast_expression "(int *)*puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "((int *)*puVar2)" (( "(") (cast_expression "(int *)*puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) () ")"))) (; ";")) (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" (identifier "iVar3") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (iVar3 == param_1[7]) {\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }" (if "if") (parenthesized_expression "(iVar3 == param_1[7])" (( "(") (binary_expression "iVar3 == param_1[7]" (identifier "iVar3") (== "==") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n      param_1[9] = -1;\n      goto LAB_001a0b19;\n    }" ({ "{") (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "-1")) (; ";")) (goto_statement "goto LAB_001a0b19;" (goto "goto") (statement_identifier "LAB_001a0b19") (; ";")) (} "}"))) (} "}")))) (expression_statement "__fd = 0;" (assignment_expression "__fd = 0" (identifier "__fd") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));" (do "do") (compound_statement "{\n    piVar1 = (int *)(iVar3 + __fd * 0xc);\n    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }\n    __fd = __fd + 1;\n  }" ({ "{") (expression_statement "piVar1 = (int *)(iVar3 + __fd * 0xc);" (assignment_expression "piVar1 = (int *)(iVar3 + __fd * 0xc)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar3 + __fd * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + __fd * 0xc)" (( "(") (binary_expression "iVar3 + __fd * 0xc" (identifier "iVar3") (+ "+") (binary_expression "__fd * 0xc" (identifier "__fd") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (if_statement "if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }" (if "if") (parenthesized_expression "(((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0'))" (( "(") (binary_expression "((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')" (parenthesized_expression "((*piVar1 != 0) && ((char)piVar1[2] == '\0'))" (( "(") (binary_expression "(*piVar1 != 0) && ((char)piVar1[2] == '\0')" (parenthesized_expression "(*piVar1 != 0)" (( "(") (binary_expression "*piVar1 != 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((char)piVar1[2] == '\0')" (( "(") (binary_expression "(char)piVar1[2] == '\0'" (cast_expression "(char)piVar1[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)piVar1 + 9) == '\0')" (( "(") (binary_expression "*(char *)((int)piVar1 + 9) == '\0'" (pointer_expression "*(char *)((int)piVar1 + 9)" (* "*") (cast_expression "(char *)((int)piVar1 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar1 + 9)" (( "(") (binary_expression "(int)piVar1 + 9" (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1")) (+ "+") (number_literal "9")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                    \n      iVar3 = close(__fd);\n      if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }\n      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }\n      *piVar1 = 0;\n      piVar1[1] = -1;\n      *(undefined1 *)((int)piVar1 + 10) = 0;\n      iVar3 = param_1[6];\n    }" ({ "{") (expression_statement "iVar3 = close(__fd);" (assignment_expression "iVar3 = close(__fd)" (identifier "iVar3") (= "=") (call_expression "close(__fd)" (identifier "close") (argument_list "(__fd)" (( "(") (identifier "__fd") () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar4 = __errno_location();\n        pcVar5 = strerror(*piVar4);\n        iVar3 = *piVar1;\n        uVar6 = gettext("while closing %s: %s");\n        FUN_000654e0(uVar6,iVar3,pcVar5);\n      }" ({ "{") (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" (identifier "piVar4") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" (identifier "pcVar5") (= "=") (call_expression "strerror(*piVar4)" (identifier "strerror") (argument_list "(*piVar4)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")")))) (; ";")) (expression_statement "iVar3 = *piVar1;" (assignment_expression "iVar3 = *piVar1" (identifier "iVar3") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "uVar6 = gettext("while closing %s: %s");" (assignment_expression "uVar6 = gettext("while closing %s: %s")" (identifier "uVar6") (= "=") (call_expression "gettext("while closing %s: %s")" (identifier "gettext") (argument_list "("while closing %s: %s")" (( "(") (string_literal ""while closing %s: %s"" (" """) (string_content "while closing %s: %s") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654e0(uVar6,iVar3,pcVar5);" (call_expression "FUN_000654e0(uVar6,iVar3,pcVar5)" (identifier "FUN_000654e0") (argument_list "(uVar6,iVar3,pcVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "iVar3") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (} "}"))) (if_statement "if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }" (if "if") (parenthesized_expression "((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0))" (( "(") (binary_expression "(DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)" (parenthesized_expression "(DAT_0038f378[2] != 0)" (( "(") (binary_expression "DAT_0038f378[2] != 0" (subscript_expression "DAT_0038f378[2]" (identifier "DAT_0038f378") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(DAT_0038f378 + 5) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(DAT_0038f378 + 5) & 4) != 0" (parenthesized_expression "(*(byte *)(DAT_0038f378 + 5) & 4)" (( "(") (binary_expression "*(byte *)(DAT_0038f378 + 5) & 4" (pointer_expression "*(byte *)(DAT_0038f378 + 5)" (* "*") (cast_expression "(byte *)(DAT_0038f378 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 5)" (( "(") (binary_expression "DAT_0038f378 + 5" (identifier "DAT_0038f378") (+ "+") (number_literal "5")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);\n      }" ({ "{") (expression_statement "FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);" (call_expression "FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1)" (identifier "FUN_000653f0") (argument_list "(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1)" (( "(") (pointer_expression "*DAT_0038f378" (* "*") (identifier "DAT_0038f378")) (, ",") (string_literal ""Closed descriptor %d for \"%s\" (close_all)"" (" """) (string_content "Closed descriptor %d for ") (escape_sequence "\"") (string_content "%s") (escape_sequence "\"") (string_content " (close_all)") (" """)) (, ",") (identifier "__fd") (, ",") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) () ")"))) (; ";")) (} "}"))) (expression_statement "*piVar1 = 0;" (assignment_expression "*piVar1 = 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[1] = -1;" (assignment_expression "piVar1[1] = -1" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*(undefined1 *)((int)piVar1 + 10) = 0;" (assignment_expression "*(undefined1 *)((int)piVar1 + 10) = 0" (pointer_expression "*(undefined1 *)((int)piVar1 + 10)" (* "*") (cast_expression "(undefined1 *)((int)piVar1 + 10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar1 + 10)" (( "(") (binary_expression "(int)piVar1 + 10" (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1")) (+ "+") (number_literal "10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = param_1[6];" (assignment_expression "iVar3 = param_1[6]" (identifier "iVar3") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}"))) (expression_statement "__fd = __fd + 1;" (assignment_expression "__fd = __fd + 1" (identifier "__fd") (= "=") (binary_expression "__fd + 1" (identifier "__fd") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555))" (( "(") (binary_expression "__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555)" (identifier "__fd") (< "<") (call_expression "(uint)((param_1[7] - iVar3 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((param_1[7] - iVar3 >> 2) * -0x55555555)" (( "(") (binary_expression "(param_1[7] - iVar3 >> 2) * -0x55555555" (parenthesized_expression "(param_1[7] - iVar3 >> 2)" (( "(") (binary_expression "param_1[7] - iVar3 >> 2" (binary_expression "param_1[7] - iVar3" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (- "-") (identifier "iVar3")) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) () ")")))) () ")")) (; ";")) (expression_statement "param_1[9] = -1;" (assignment_expression "param_1[9] = -1" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "-1")) (; ";")) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined4 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_001a0b19:\n                    \n                    \n  (**(code **)(*(int *)*puVar2 + 0xc))();" (statement_identifier "LAB_001a0b19") (: ":") (expression_statement "(**(code **)(*(int *)*puVar2 + 0xc))();" (call_expression "(**(code **)(*(int *)*puVar2 + 0xc))()" (parenthesized_expression "(**(code **)(*(int *)*puVar2 + 0xc))" (( "(") (pointer_expression "**(code **)(*(int *)*puVar2 + 0xc)" (* "*") (pointer_expression "*(code **)(*(int *)*puVar2 + 0xc)" (* "*") (cast_expression "(code **)(*(int *)*puVar2 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)*puVar2 + 0xc)" (( "(") (binary_expression "*(int *)*puVar2 + 0xc" (pointer_expression "*(int *)*puVar2" (* "*") (cast_expression "(int *)*puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void close_all(Descriptors * this) */

void __thiscall gold::type_1::function_1(type_1 *this)

{
  type_2 pOVar1;
  type_3 *var_1;
  char *pcVar3;
  int var_7;
  int *piVar5;
  char *pcVar6;
  char *format;
  type_2 var_4;
  type_4 var_5;
  
  var_1 = this->lock_;
  if (var_1 == (type_3 *)0x0) {
    var_4 = (this->open_descriptors_).
             super__Vector_base<gold::Descriptors::var_2,_std::allocator<gold::Descriptors::var_2>var_3>
             ._M_impl._M_start;
    if (var_4 == (this->open_descriptors_).
                  super__Vector_base<gold::type_1::var_2,_std::allocator<gold::type_1::var_2>var_3>
                  ._M_impl._M_finish) {
      this->stack_top_ = -1;
      return;
    }
  }
  else {
    (*var_1->lock_->_vptr_Lock_impl[2])(var_1->lock_);
    var_4 = (this->open_descriptors_).
             super__Vector_base<gold::Descriptors::var_2,_std::allocator<gold::Descriptors::var_2>var_3>
             ._M_impl._M_start;
    if (var_4 == (this->open_descriptors_).
                  super__Vector_base<gold::type_1::var_2,_std::allocator<gold::type_1::var_2>var_3>
                  ._M_impl._M_finish) {
      this->stack_top_ = -1;
      goto LAB_001a0b19;
    }
  }
  var_5 = 0;
  do {
    pOVar1 = var_4 + var_5;
    if (((pOVar1->name != (char *)0x0) && (pOVar1->inuse == false)) && (pOVar1->is_write == false))
    {
                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */
      var_7 = var_6(var_5);
      if (var_7 < 0) {
        piVar5 = var_8();
        pcVar6 = var_9(*piVar5);
        pcVar3 = pOVar1->name;
        format = (char *)var_10("while closing %s: %s");
        var_11(format,pcVar3,pcVar6);
      }
      if ((parameters->options_ != (type_5 *)0x0) && ((parameters->debug_ & 4) != 0)) {
                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */
        Errors::var_12(parameters->errors_,"Closed descriptor %d for \"%s\" (close_all)",var_5,
                      pOVar1->name);
      }
      pOVar1->name = (char *)0x0;
      pOVar1->stack_next = -1;
      pOVar1->is_on_stack = false;
      var_4 = (this->open_descriptors_).
               super__Vector_base<gold::Descriptors::var_2,_std::allocator<gold::Descriptors::var_2>var_3>
               ._M_impl._M_start;
    }
    var_5 = var_5 + 1;
  } while (var_5 < (type_4)(((int)(this->open_descriptors_).
                               super__Vector_base<gold::type_1::var_2,_std::allocator<gold::type_1::var_2>var_3>
                               ._M_impl._M_finish - (int)var_4 >> 2) * -0x55555555));
  this->stack_top_ = -1;
  if (var_1 == (type_3 *)0x0) {
    return;
  }
LAB_001a0b19:
                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*var_1->lock_->_vptr_Lock_impl[3])();
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (number_literal))))))) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))))) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (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))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)) (identifier) (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (number_literal))))))) arguments: (argument_list)))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(int *param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  char *pcVar5;
  undefined4 uVar6;
  uint __fd;
  
  puVar2 = (undefined4 *)*param_1;
  if (puVar2 == (undefined4 *)0x0) {
    iVar3 = param_1[6];
    if (iVar3 == param_1[7]) {
      param_1[9] = -1;
      return;
    }
  }
  else {
    (**(code **)(*(int *)*puVar2 + 8))((int *)*puVar2);
    iVar3 = param_1[6];
    if (iVar3 == param_1[7]) {
      param_1[9] = -1;
      goto LAB_001a0b19;
    }
  }
  __fd = 0;
  do {
    piVar1 = (int *)(iVar3 + __fd * 0xc);
    if (((*piVar1 != 0) && ((char)piVar1[2] == '\0')) && (*(char *)((int)piVar1 + 9) == '\0')) {
                    /* try { // try from 001a0aca to 001a0ace has its CatchHandler @ 001a0bc9 */
      iVar3 = close(__fd);
      if (iVar3 < 0) {
        piVar4 = __errno_location();
        pcVar5 = strerror(*piVar4);
        iVar3 = *piVar1;
        uVar6 = gettext("while closing %s: %s");
        FUN_000654e0(uVar6,iVar3,pcVar5);
      }
      if ((DAT_0038f378[2] != 0) && ((*(byte *)(DAT_0038f378 + 5) & 4) != 0)) {
                    /* try { // try from 001a0b3f to 001a0bb1 has its CatchHandler @ 001a0bc9 */
        FUN_000653f0(*DAT_0038f378,"Closed descriptor %d for \"%s\" (close_all)",__fd,*piVar1);
      }
      *piVar1 = 0;
      piVar1[1] = -1;
      *(undefined1 *)((int)piVar1 + 10) = 0;
      iVar3 = param_1[6];
    }
    __fd = __fd + 1;
  } while (__fd < (uint)((param_1[7] - iVar3 >> 2) * -0x55555555));
  param_1[9] = -1;
  if (puVar2 == (undefined4 *)0x0) {
    return;
  }
LAB_001a0b19:
                    /* WARNING: Could not recover jumptable at 0x001a0b2d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(int *)*puVar2 + 0xc))();
  return;
}

