
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

NODE * do_close(int nargs)

{
  char **ppcVar1;
  wchar_t wVar2;
  byte bVar3;
  char cVar4;
  size_t __n;
  size_t sVar5;
  _func_void_char_ptr_varargs *p_Var6;
  _func_NODE_ptr_double *p_Var7;
  NODETYPE NVar8;
  NODE *pNVar9;
  size_t sVar10;
  int iVar11;
  char *pcVar12;
  char *pcVar13;
  redirect *rp;
  two_way_close_type local_28;
  
  iVar11 = CONVFMTidx;
  pcVar13 = CONVFMT;
  local_28 = CLOSE_ALL;
  pNVar9 = stack_ptr->rptr;
  stack_ptr = stack_ptr + -1;
  NVar8 = pNVar9->type;
  if (nargs == 2) {
    if (NVar8 == Node_var_array) {
      set_loc("awk.h",0x72b);
      array_vname(pNVar9);
      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      r_fatal(pcVar12);
    }
    if (((pNVar9->flags & 4) == 0) ||
       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {
      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);
    }
    pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen;
    cVar4 = *pcVar13;
    *pcVar13 = '\0';
    pcVar13 = (pNVar9->sub).val.sp;
    iVar11 = strcasecmp(pcVar13,"to");
    local_28 = CLOSE_TO;
    if (iVar11 != 0) {
      iVar11 = strcasecmp(pcVar13,"from");
      local_28 = CLOSE_FROM;
      if (iVar11 != 0) {
        ppcVar1 = &(pNVar9->sub).nodep.name;
        *ppcVar1 = *ppcVar1 + -1;
        if (*ppcVar1 == (char *)0x0) {
          r_unref(pNVar9);
        }
        set_loc("io.c",0x4b3);
        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);
        r_fatal(pcVar13);
        pcVar13 = (pNVar9->sub).val.sp;
        local_28 = CLOSE_ALL;
      }
    }
    pcVar13[(pNVar9->sub).val.slen] = cVar4;
    ppcVar1 = &(pNVar9->sub).nodep.name;
    *ppcVar1 = *ppcVar1 + -1;
    if (*ppcVar1 == (char *)0x0) {
      r_unref(pNVar9);
      pNVar9 = stack_ptr->rptr;
      stack_ptr = stack_ptr + -1;
      NVar8 = pNVar9->type;
    }
    else {
      pNVar9 = stack_ptr->rptr;
      stack_ptr = stack_ptr + -1;
      NVar8 = pNVar9->type;
    }
  }
  iVar11 = CONVFMTidx;
  pcVar13 = CONVFMT;
  if (NVar8 == Node_var_array) {
    set_loc("awk.h",0x72b);
    array_vname(pNVar9);
    pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
    r_fatal(pcVar12);
    bVar3 = (byte)pNVar9->flags;
  }
  else {
    bVar3 = (byte)pNVar9->flags;
  }
  if (((bVar3 & 4) == 0) ||
     ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {
    pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);
  }
  if (red_head != (redirect *)0x0) {
    __n = (pNVar9->sub).val.slen;
    rp = red_head;
    do {
      pcVar13 = rp->value;
      sVar10 = strlen(pcVar13);
      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {
        ppcVar1 = &(pNVar9->sub).nodep.name;
        *ppcVar1 = *ppcVar1 + -1;
        if (*ppcVar1 == (char *)0x0) {
          r_unref(pNVar9);
        }
        fflush(*(FILE **)PTR_stdout_000befc8);
        p_Var7 = make_number;
        iVar11 = close_redir(rp,false,local_28);
        pNVar9 = (*p_Var7)((double)iVar11);
        if ((do_flags & 0x20U) != 0) {
          if ((pNVar9 != (NODE *)0x0) &&
             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,
             wVar2 < L'\x01')) {
            r_unref(pNVar9);
          }
          pNVar9 = (*make_number)(0.0);
        }
        return pNVar9;
      }
      rp = rp->next;
    } while (rp != (redirect *)0x0);
  }
  if ((do_flags & 5U) != 0) {
    set_loc("io.c",0x4c5);
    p_Var6 = lintfunc;
    pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);
    (*p_Var6)(pcVar13);
  }
  if ((do_flags & 0x10U) == 0) {
    pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5);
    update_ERRNO_string(pcVar13);
    ppcVar1 = &(pNVar9->sub).nodep.name;
    *ppcVar1 = *ppcVar1 + -1;
    pcVar13 = *ppcVar1;
  }
  else {
    ppcVar1 = &(pNVar9->sub).nodep.name;
    *ppcVar1 = *ppcVar1 + -1;
    pcVar13 = *ppcVar1;
  }
  if (pcVar13 == (char *)0x0) {
    r_unref(pNVar9);
  }
  pNVar9 = (*make_number)(-1.0);
  return pNVar9;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_00060b60(int param_1)

{
  int *piVar1;
  byte bVar2;
  char cVar3;
  size_t __n;
  undefined4 uVar4;
  undefined *puVar5;
  int iVar6;
  size_t sVar7;
  int iVar8;
  char *pcVar9;
  int iVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  
  iVar8 = DAT_000c4994;
  puVar5 = PTR_DAT_000bf8f0;
  iVar6 = *DAT_000c13c8;
  DAT_000c13c8 = DAT_000c13c8 + -1;
  iVar10 = *(int *)(iVar6 + 0x28);
  if (param_1 == 2) {
    if (iVar10 == 5) {
      FUN_000660d0("awk.h");
      FUN_00018020(iVar6);
      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      FUN_00066470(uVar11);
    }
    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||
       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {
      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);
    }
    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));
    cVar3 = *pcVar9;
    *pcVar9 = '\0';
    pcVar9 = *(char **)(iVar6 + 8);
    iVar10 = strcasecmp(pcVar9,"to");
    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {
      piVar1 = (int *)(iVar6 + 0x10);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        FUN_000668b0(iVar6);
      }
      FUN_000660d0(&DAT_0009269c);
      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);
      FUN_00066470(uVar11);
      pcVar9 = *(char **)(iVar6 + 8);
    }
    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;
    piVar1 = (int *)(iVar6 + 0x10);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      FUN_000668b0(iVar6);
      iVar6 = *DAT_000c13c8;
      DAT_000c13c8 = DAT_000c13c8 + -1;
      iVar10 = *(int *)(iVar6 + 0x28);
    }
    else {
      iVar6 = *DAT_000c13c8;
      DAT_000c13c8 = DAT_000c13c8 + -1;
      iVar10 = *(int *)(iVar6 + 0x28);
    }
  }
  iVar8 = DAT_000c4994;
  puVar5 = PTR_DAT_000bf8f0;
  if (iVar10 == 5) {
    FUN_000660d0("awk.h");
    FUN_00018020(iVar6);
    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
    FUN_00066470(uVar11);
    bVar2 = *(byte *)(iVar6 + 0x2c);
  }
  else {
    bVar2 = *(byte *)(iVar6 + 0x2c);
  }
  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {
    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);
  }
  if (DAT_000c3748 != 0) {
    __n = *(size_t *)(iVar6 + 0xc);
    iVar10 = DAT_000c3748;
    do {
      pcVar9 = *(char **)(iVar10 + 4);
      sVar7 = strlen(pcVar9);
      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {
        piVar1 = (int *)(iVar6 + 0x10);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          FUN_000668b0(iVar6);
        }
        fflush(*(FILE **)PTR_stdout_000befc8);
        puVar5 = PTR_FUN_000bf94c;
        iVar6 = FUN_00060820();
        iVar6 = (*(code *)puVar5)((double)iVar6);
        if ((_DAT_000c3760 & 0x20) != 0) {
          if ((iVar6 != 0) &&
             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {
            FUN_000668b0(iVar6);
          }
          (*(code *)PTR_FUN_000bf94c)(0,0);
        }
        return;
      }
      iVar10 = *(int *)(iVar10 + 0x1c);
    } while (iVar10 != 0);
  }
  if ((_DAT_000c3760 & 5) != 0) {
    FUN_000660d0(&DAT_0009269c,0x4c5);
    puVar5 = PTR_FUN_000bf8e8;
    uVar11 = *(undefined4 *)(iVar6 + 8);
    uVar4 = *(undefined4 *)(iVar6 + 0xc);
    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);
    (*(code *)puVar5)(uVar12,uVar4,uVar11);
  }
  if ((_DAT_000c3760 & 0x10) == 0) {
    uVar11 = dcgettext(0,"close of redirection that was never opened",5);
    FUN_000490e0(uVar11);
    piVar1 = (int *)(iVar6 + 0x10);
    *piVar1 = *piVar1 + -1;
    iVar10 = *piVar1;
  }
  else {
    piVar1 = (int *)(iVar6 + 0x10);
    *piVar1 = *piVar1 + -1;
    iVar10 = *piVar1;
  }
  if (iVar10 == 0) {
    FUN_000668b0(iVar6);
  }
  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016f50
ADD EBX,0x5e17b
SUB ESP,0x1c
LEA EAX,[EBX + 0x5cb0]
LEA ESI,[EBX + 0x26e4]
CMP dword ptr [ESP + 0x30],0x2
MOV dword ptr [ESP + 0x4],0x0
MOV dword ptr [ESP + 0x8],EAX
MOV EBP,dword ptr [EAX]
LEA EAX,[EBX + 0xc0c]
MOV dword ptr [ESP],EAX
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESI]
MOV EDI,dword ptr [EAX]
LEA EDX,[EAX + -0x4]
MOV EAX,dword ptr [EDI + 0x28]
JZ 0x00060d70
CMP EAX,0x5
MOV dword ptr [ESI],EDX
JZ 0x00060d00
TEST byte ptr [EDI + 0x2c],0x4
JNZ 0x00060d4d
SUB ESP,0x4
LEA EAX,[EBX + 0xc60]
PUSH EDI
PUSH EBP
PUSH ECX
CALL dword ptr [EAX]
ADD ESP,0x10
MOV EDI,EAX
MOV ESI,dword ptr [EBX + 0x4a64]
TEST ESI,ESI
JZ 0x00060ca3
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [ESP],EDI
MOV EBP,EAX
JMP 0x00060bfb
MOV ESI,dword ptr [ESI + 0x1c]
TEST ESI,ESI
JZ 0x00060ca0
MOV EDI,dword ptr [ESI + 0x4]
SUB ESP,0xc
PUSH EDI
CALL 0x00014230
ADD ESP,0x10
CMP EAX,EBP
JNZ 0x00060bf0
SUB ESP,0x4
PUSH EBP
MOV EAX,dword ptr [ESP + 0x8]
PUSH dword ptr [EAX + 0x8]
PUSH EDI
CALL 0x00013f00
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00060bf0
MOV EDI,dword ptr [ESP]
SUB dword ptr [EDI + 0x10],0x1
JZ 0x00060ce8
MOV EAX,dword ptr [EBX + 0x2e4]
SUB ESP,0xc
PUSH dword ptr [EAX]
CALL 0x00013df0
MOV ECX,dword ptr [ESP + 0x14]
LEA EDI,[EBX + 0xc68]
XOR EDX,EDX
MOV EAX,ESI
MOV EBP,dword ptr [EDI]
CALL 0x00060820
MOV dword ptr [ESP + 0x10],EAX
FILD dword ptr [ESP + 0x10]
FSTP qword ptr [ESP]
CALL EBP
LEA EDX,[EBX + 0x4a7c]
ADD ESP,0x10
TEST byte ptr [EDX],0x20
JZ 0x00060c94
TEST EAX,EAX
JZ 0x00060c88
MOV ECX,dword ptr [EAX + 0x10]
LEA EDX,[ECX + -0x1]
TEST EDX,EDX
MOV dword ptr [EAX + 0x10],EDX
JLE 0x00060f26
SUB ESP,0x8
PUSH 0x0
PUSH 0x0
CALL dword ptr [EDI]
ADD ESP,0x10
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP]
LEA ESI,[EBX + 0x4a7c]
MOV EAX,dword ptr [ESI]
TEST AL,0x5
JNZ 0x00060ea8
TEST AL,0x10
JZ 0x00060e78
SUB dword ptr [EDI + 0x10],0x1
JZ 0x00060e60
SUB ESP,0x8
LEA EAX,[EBX + 0xc68]
PUSH 0xbff00000
PUSH 0x0
CALL dword ptr [EAX]
ADD ESP,0x10
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH EDI
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00060c33
LEA EAX,[EBX + 0xfffc8f86]
MOV dword ptr [ESP],ECX
SUB ESP,0x8
PUSH 0x72b
PUSH EAX
CALL 0x000660d0
MOV dword ptr [ESP],EDI
CALL 0x00018020
MOV ESI,EAX
LEA EAX,[EBX + 0xfffc916c]
ADD ESP,0xc
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x00066470
ADD ESP,0x10
TEST byte ptr [EDI + 0x2c],0x4
MOV ECX,dword ptr [ESP]
JZ 0x00060bc1
MOV EAX,dword ptr [EDI + 0x14]
CMP EAX,EBP
JZ 0x00060bd4
CMP EAX,-0x1
JNZ 0x00060bc1
JMP 0x00060bd4
CMP EAX,0x5
MOV dword ptr [ESI],EDX
JZ 0x00060f37
TEST byte ptr [EDI + 0x2c],0x4
JNZ 0x00060f87
SUB ESP,0x4
LEA EAX,[EBX + 0xc60]
PUSH EDI
PUSH EBP
PUSH ECX
CALL dword ptr [EAX]
ADD ESP,0x10
MOV EDI,EAX
MOV EAX,dword ptr [EDI + 0xc]
ADD EAX,dword ptr [EDI + 0x8]
SUB ESP,0x8
MOVZX ECX,byte ptr [EAX]
MOV byte ptr [EAX],0x0
LEA EAX,[EBX + 0xfffc96b6]
MOV EBP,dword ptr [EDI + 0x8]
MOV byte ptr [ESP + 0x14],CL
PUSH EAX
PUSH EBP
CALL 0x00014280
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ESP + 0x4],0x1
JZ 0x00060e30
LEA EAX,[EBX + 0xfffc944d]
SUB ESP,0x8
PUSH EAX
PUSH EBP
CALL 0x00014280
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ESP + 0x4],0x2
JZ 0x00060e30
SUB dword ptr [EDI + 0x10],0x1
JZ 0x00060fa0
LEA EAX,[EBX + 0xfffd39b8]
SUB ESP,0x8
PUSH 0x4b3
PUSH EAX
CALL 0x000660d0
LEA EAX,[EBX + 0xfffd4028]
ADD ESP,0xc
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
MOV dword ptr [ESP],EAX
CALL 0x00066470
MOV EBP,dword ptr [EDI + 0x8]
ADD ESP,0x10
MOV dword ptr [ESP + 0x4],0x0
MOVZX ECX,byte ptr [ESP + 0xc]
MOV EAX,dword ptr [EDI + 0xc]
MOV byte ptr [EBP + EAX*0x1],CL
SUB dword ptr [EDI + 0x10],0x1
JZ 0x00060eff
MOV EAX,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [EAX]
MOV EAX,dword ptr [ESP]
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESI]
MOV EDI,dword ptr [EAX]
LEA EDX,[EAX + -0x4]
MOV EAX,dword ptr [EDI + 0x28]
JMP 0x00060bac
SUB ESP,0xc
PUSH EDI
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00060cc5
LEA EAX,[EBX + 0xfffd4090]
SUB ESP,0x4
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
MOV dword ptr [ESP],EAX
CALL 0x000490e0
ADD ESP,0x10
SUB dword ptr [EDI + 0x10],0x1
JNZ 0x00060cc5
JMP 0x00060e60
LEA EAX,[EBX + 0xfffd39b8]
SUB ESP,0x8
PUSH 0x4c5
PUSH EAX
CALL 0x000660d0
LEA EAX,[EBX + 0xc04]
MOV ECX,dword ptr [EDI + 0x8]
MOV EDX,dword ptr [EDI + 0xc]
MOV EBP,dword ptr [EAX]
LEA EAX,[EBX + 0xfffd4058]
MOV dword ptr [ESP + 0x14],ECX
MOV dword ptr [ESP + 0x10],EDX
ADD ESP,0xc
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
ADD ESP,0xc
MOV ECX,dword ptr [ESP + 0x8]
PUSH ECX
MOV EDX,dword ptr [ESP + 0x8]
PUSH EDX
PUSH EAX
CALL EBP
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
JMP 0x00060cb3
SUB ESP,0xc
PUSH EDI
CALL 0x000668b0
MOV EAX,dword ptr [ESP + 0x18]
MOV EBP,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x10]
ADD ESP,0x10
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESI]
MOV EDI,dword ptr [EAX]
LEA EDX,[EAX + -0x4]
MOV EAX,dword ptr [EDI + 0x28]
JMP 0x00060bac
SUB ESP,0xc
PUSH EAX
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00060c88
LEA EAX,[EBX + 0xfffc8f86]
MOV dword ptr [ESP + 0xc],ECX
SUB ESP,0x8
PUSH 0x72b
PUSH EAX
CALL 0x000660d0
MOV dword ptr [ESP],EDI
CALL 0x00018020
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[EBX + 0xfffc916c]
ADD ESP,0xc
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
POP EDX
POP ECX
MOV EDX,dword ptr [ESP + 0xc]
PUSH EDX
PUSH EAX
CALL 0x00066470
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0xc]
JMP 0x00060d7b
MOV EAX,dword ptr [EDI + 0x14]
CMP EAX,EBP
JZ 0x00060d98
CMP EAX,-0x1
JNZ 0x00060d85
JMP 0x00060d98
SUB ESP,0xc
PUSH EDI
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00060df3
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid FUN_00060b60(int param_1)\n\n{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}\n\n" comment comment (function_definition "void FUN_00060b60(int param_1)\n\n{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}" primitive_type (function_declarator "FUN_00060b60(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (expression_statement "iVar8 = DAT_000c4994;" (assignment_expression "iVar8 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar5 = PTR_DAT_000bf8f0;" (assignment_expression "puVar5 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" identifier = (pointer_expression "*(int *)(iVar6 + 0x28)" * (cast_expression "(int *)(iVar6 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x28)" ( (binary_expression "iVar6 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }" if (parenthesized_expression "(param_1 == 2)" ( (binary_expression "param_1 == 2" identifier == number_literal) )) (compound_statement "{\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }" { (if_statement "if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }" if (parenthesized_expression "(iVar10 == 5)" ( (binary_expression "iVar10 == 5" identifier == number_literal) )) (compound_statement "{\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }" { (expression_statement "FUN_000660d0("awk.h");" (call_expression "FUN_000660d0("awk.h")" identifier (argument_list "("awk.h")" ( (string_literal ""awk.h"" " string_content ") ))) ;) (expression_statement "FUN_00018020(iVar6);" (call_expression "FUN_00018020(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) })) (if_statement "if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }" if (parenthesized_expression "(((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))))" ( (binary_expression "((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar6 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar6 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar6 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar6 + 0x2c)" * (cast_expression "(byte *)(iVar6 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2c)" ( (binary_expression "iVar6 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" ( (parenthesized_expression "(*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))" ( (binary_expression "*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)" (binary_expression "*(int *)(iVar6 + 0x14) != iVar8" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != identifier) && (parenthesized_expression "(*(int *)(iVar6 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar6 + 0x14) != -1" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }" { (expression_statement "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);" (assignment_expression "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,iVar8,iVar6)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));" (assignment_expression "pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" identifier = (cast_expression "(char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" ( (binary_expression "*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8)" (pointer_expression "*(int *)(iVar6 + 0xc)" * (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) )))) ;) (expression_statement "cVar3 = *pcVar9;" (assignment_expression "cVar3 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (expression_statement "*pcVar9 = '\0';" (assignment_expression "*pcVar9 = '\0'" (pointer_expression "*pcVar9" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar9 = *(char **)(iVar6 + 8);" (assignment_expression "pcVar9 = *(char **)(iVar6 + 8)" identifier = (pointer_expression "*(char **)(iVar6 + 8)" * (cast_expression "(char **)(iVar6 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = strcasecmp(pcVar9,"to");" (assignment_expression "iVar10 = strcasecmp(pcVar9,"to")" identifier = (call_expression "strcasecmp(pcVar9,"to")" identifier (argument_list "(pcVar9,"to")" ( identifier , (string_literal ""to"" " string_content ") )))) ;) (if_statement "if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }" if (parenthesized_expression "((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0))" ( (binary_expression "(iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)" ( (comma_expression "iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0" (assignment_expression "iVar10 = strcasecmp(pcVar9,"from")" identifier = (call_expression "strcasecmp(pcVar9,"from")" identifier (argument_list "(pcVar9,"from")" ( identifier , (string_literal ""from"" " string_content ") )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }" { (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n        FUN_000668b0(iVar6);\n      }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "FUN_000660d0(&DAT_0009269c);" (call_expression "FUN_000660d0(&DAT_0009269c)" identifier (argument_list "(&DAT_0009269c)" ( (pointer_expression "&DAT_0009269c" & identifier) ))) ;) (expression_statement "uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);" (assignment_expression "uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5)" identifier = (call_expression "dcgettext(0,"close: second argument must be `to\' or `from\'",5)" identifier (argument_list "(0,"close: second argument must be `to\' or `from\'",5)" ( number_literal , (string_literal ""close: second argument must be `to\' or `from\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "pcVar9 = *(char **)(iVar6 + 8);" (assignment_expression "pcVar9 = *(char **)(iVar6 + 8)" identifier = (pointer_expression "*(char **)(iVar6 + 8)" * (cast_expression "(char **)(iVar6 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;" (assignment_expression "pcVar9[*(int *)(iVar6 + 0xc)] = cVar3" (subscript_expression "pcVar9[*(int *)(iVar6 + 0xc)]" identifier [ (pointer_expression "*(int *)(iVar6 + 0xc)" * (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) ]) = identifier) ;) (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" identifier = (pointer_expression "*(int *)(iVar6 + 0x28)" * (cast_expression "(int *)(iVar6 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x28)" ( (binary_expression "iVar6 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" else (compound_statement "{\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" { (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" identifier = (pointer_expression "*(int *)(iVar6 + 0x28)" * (cast_expression "(int *)(iVar6 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x28)" ( (binary_expression "iVar6 + 0x28" identifier + number_literal) ))))) ;) }))) })) (expression_statement "iVar8 = DAT_000c4994;" (assignment_expression "iVar8 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar5 = PTR_DAT_000bf8f0;" (assignment_expression "puVar5 = PTR_DAT_000bf8f0" identifier = identifier) ;) (if_statement "if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" if (parenthesized_expression "(iVar10 == 5)" ( (binary_expression "iVar10 == 5" identifier == number_literal) )) (compound_statement "{\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" { (expression_statement "FUN_000660d0("awk.h");" (call_expression "FUN_000660d0("awk.h")" identifier (argument_list "("awk.h")" ( (string_literal ""awk.h"" " string_content ") ))) ;) (expression_statement "FUN_00018020(iVar6);" (call_expression "FUN_00018020(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "bVar2 = *(byte *)(iVar6 + 0x2c);" (assignment_expression "bVar2 = *(byte *)(iVar6 + 0x2c)" identifier = (pointer_expression "*(byte *)(iVar6 + 0x2c)" * (cast_expression "(byte *)(iVar6 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2c)" ( (binary_expression "iVar6 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" else (compound_statement "{\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" { (expression_statement "bVar2 = *(byte *)(iVar6 + 0x2c);" (assignment_expression "bVar2 = *(byte *)(iVar6 + 0x2c)" identifier = (pointer_expression "*(byte *)(iVar6 + 0x2c)" * (cast_expression "(byte *)(iVar6 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2c)" ( (binary_expression "iVar6 + 0x2c" identifier + number_literal) ))))) ;) }))) (if_statement "if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))))" ( (binary_expression "((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" ( (parenthesized_expression "(*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))" ( (binary_expression "*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)" (binary_expression "*(int *)(iVar6 + 0x14) != iVar8" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != identifier) && (parenthesized_expression "(*(int *)(iVar6 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar6 + 0x14) != -1" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }" { (expression_statement "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);" (assignment_expression "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,iVar8,iVar6)" ( identifier , identifier , identifier )))) ;) })) (if_statement "if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(DAT_000c3748 != 0)" ( (binary_expression "DAT_000c3748 != 0" identifier != number_literal) )) (compound_statement "{\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }" { (expression_statement "__n = *(size_t *)(iVar6 + 0xc);" (assignment_expression "__n = *(size_t *)(iVar6 + 0xc)" identifier = (pointer_expression "*(size_t *)(iVar6 + 0xc)" * (cast_expression "(size_t *)(iVar6 + 0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = DAT_000c3748;" (assignment_expression "iVar10 = DAT_000c3748" identifier = identifier) ;) (do_statement "do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);" do (compound_statement "{\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    }" { (expression_statement "pcVar9 = *(char **)(iVar10 + 4);" (assignment_expression "pcVar9 = *(char **)(iVar10 + 4)" identifier = (pointer_expression "*(char **)(iVar10 + 4)" * (cast_expression "(char **)(iVar10 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 4)" ( (binary_expression "iVar10 + 4" identifier + number_literal) ))))) ;) (expression_statement "sVar7 = strlen(pcVar9);" (assignment_expression "sVar7 = strlen(pcVar9)" identifier = (call_expression "strlen(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;) (if_statement "if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }" if (parenthesized_expression "((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0))" ( (binary_expression "(sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)" (parenthesized_expression "(sVar7 == __n)" ( (binary_expression "sVar7 == __n" identifier == identifier) )) && (parenthesized_expression "(iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)" ( (comma_expression "iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0" (assignment_expression "iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n)" identifier = (call_expression "memcmp(pcVar9,*(void **)(iVar6 + 8),__n)" identifier (argument_list "(pcVar9,*(void **)(iVar6 + 8),__n)" ( identifier , (pointer_expression "*(void **)(iVar6 + 8)" * (cast_expression "(void **)(iVar6 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }" { (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n          FUN_000668b0(iVar6);\n        }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "fflush(*(FILE **)PTR_stdout_000befc8);" (call_expression "fflush(*(FILE **)PTR_stdout_000befc8)" identifier (argument_list "(*(FILE **)PTR_stdout_000befc8)" ( (pointer_expression "*(FILE **)PTR_stdout_000befc8" * (cast_expression "(FILE **)PTR_stdout_000befc8" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "puVar5 = PTR_FUN_000bf94c;" (assignment_expression "puVar5 = PTR_FUN_000bf94c" identifier = identifier) ;) (expression_statement "iVar6 = FUN_00060820();" (assignment_expression "iVar6 = FUN_00060820()" identifier = (call_expression "FUN_00060820()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = (*(code *)puVar5)((double)iVar6);" (assignment_expression "iVar6 = (*(code *)puVar5)((double)iVar6)" identifier = (call_expression "(*(code *)puVar5)((double)iVar6)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((double)iVar6)" ( (cast_expression "(double)iVar6" ( (type_descriptor "double" primitive_type) ) identifier) )))) ;) (if_statement "if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }" if (parenthesized_expression "((_DAT_000c3760 & 0x20) != 0)" ( (binary_expression "(_DAT_000c3760 & 0x20) != 0" (parenthesized_expression "(_DAT_000c3760 & 0x20)" ( (binary_expression "_DAT_000c3760 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }" { (if_statement "if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }" if (parenthesized_expression "((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1))" ( (binary_expression "(iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)" ( (comma_expression "iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar6 + 0x10) + -1" (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) + number_literal)) , (comma_expression "*(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1" (assignment_expression "*(int *)(iVar6 + 0x10) = iVar10" (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) = identifier) , (binary_expression "iVar10 < 1" identifier < number_literal))) ))) )) (compound_statement "{\n            FUN_000668b0(iVar6);\n          }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "(*(code *)PTR_FUN_000bf94c)(0,0);" (call_expression "(*(code *)PTR_FUN_000bf94c)(0,0)" (parenthesized_expression "(*(code *)PTR_FUN_000bf94c)" ( (pointer_expression "*(code *)PTR_FUN_000bf94c" * (cast_expression "(code *)PTR_FUN_000bf94c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0)" ( number_literal , number_literal ))) ;) })) (return_statement "return;" return ;) })) (expression_statement "iVar10 = *(int *)(iVar10 + 0x1c);" (assignment_expression "iVar10 = *(int *)(iVar10 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar10 + 0x1c)" * (cast_expression "(int *)(iVar10 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (if_statement "if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }" if (parenthesized_expression "((_DAT_000c3760 & 5) != 0)" ( (binary_expression "(_DAT_000c3760 & 5) != 0" (parenthesized_expression "(_DAT_000c3760 & 5)" ( (binary_expression "_DAT_000c3760 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }" { (expression_statement "FUN_000660d0(&DAT_0009269c,0x4c5);" (call_expression "FUN_000660d0(&DAT_0009269c,0x4c5)" identifier (argument_list "(&DAT_0009269c,0x4c5)" ( (pointer_expression "&DAT_0009269c" & identifier) , number_literal ))) ;) (expression_statement "puVar5 = PTR_FUN_000bf8e8;" (assignment_expression "puVar5 = PTR_FUN_000bf8e8" identifier = identifier) ;) (expression_statement "uVar11 = *(undefined4 *)(iVar6 + 8);" (assignment_expression "uVar11 = *(undefined4 *)(iVar6 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar6 + 0xc);" (assignment_expression "uVar4 = *(undefined4 *)(iVar6 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" * (cast_expression "(undefined4 *)(iVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);" (assignment_expression "uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" identifier = (call_expression "dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" identifier (argument_list "(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" ( number_literal , (string_literal ""close: `%.*s\' is not an open file, pipe or co-process"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "(*(code *)puVar5)(uVar12,uVar4,uVar11);" (call_expression "(*(code *)puVar5)(uVar12,uVar4,uVar11)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar12,uVar4,uVar11)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" if (parenthesized_expression "((_DAT_000c3760 & 0x10) == 0)" ( (binary_expression "(_DAT_000c3760 & 0x10) == 0" (parenthesized_expression "(_DAT_000c3760 & 0x10)" ( (binary_expression "_DAT_000c3760 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" { (expression_statement "uVar11 = dcgettext(0,"close of redirection that was never opened",5);" (assignment_expression "uVar11 = dcgettext(0,"close of redirection that was never opened",5)" identifier = (call_expression "dcgettext(0,"close of redirection that was never opened",5)" identifier (argument_list "(0,"close of redirection that was never opened",5)" ( number_literal , (string_literal ""close of redirection that was never opened"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_000490e0(uVar11);" (call_expression "FUN_000490e0(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "iVar10 = *piVar1;" (assignment_expression "iVar10 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }) (else_clause "else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" else (compound_statement "{\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" { (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "iVar10 = *piVar1;" (assignment_expression "iVar10 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }))) (if_statement "if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000668b0(iVar6);\n  }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "(*(code *)PTR_FUN_000bf94c)(0,0xbff00000);" (call_expression "(*(code *)PTR_FUN_000bf94c)(0,0xbff00000)" (parenthesized_expression "(*(code *)PTR_FUN_000bf94c)" ( (pointer_expression "*(code *)PTR_FUN_000bf94c" * (cast_expression "(code *)PTR_FUN_000bf94c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0xbff00000)" ( number_literal , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nNODE * do_close(int nargs)\n\n{\n  char **ppcVar1;\n  wchar_t wVar2;\n  byte bVar3;\n  char cVar4;\n  size_t __n;\n  size_t sVar5;\n  _func_void_char_ptr_varargs *p_Var6;\n  _func_NODE_ptr_double *p_Var7;\n  NODETYPE NVar8;\n  NODE *pNVar9;\n  size_t sVar10;\n  int iVar11;\n  char *pcVar12;\n  char *pcVar13;\n  redirect *rp;\n  two_way_close_type local_28;\n  \n  iVar11 = CONVFMTidx;\n  pcVar13 = CONVFMT;\n  local_28 = CLOSE_ALL;\n  pNVar9 = stack_ptr->rptr;\n  stack_ptr = stack_ptr + -1;\n  NVar8 = pNVar9->type;\n  if (nargs == 2) {\n    if (NVar8 == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      array_vname(pNVar9);\n      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar12);\n    }\n    if (((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n    }\n    pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen;\n    cVar4 = *pcVar13;\n    *pcVar13 = '\0';\n    pcVar13 = (pNVar9->sub).val.sp;\n    iVar11 = strcasecmp(pcVar13,"to");\n    local_28 = CLOSE_TO;\n    if (iVar11 != 0) {\n      iVar11 = strcasecmp(pcVar13,"from");\n      local_28 = CLOSE_FROM;\n      if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }\n    }\n    pcVar13[(pNVar9->sub).val.slen] = cVar4;\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    if (*ppcVar1 == (char *)0x0) {\n      r_unref(pNVar9);\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n    else {\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n  }\n  iVar11 = CONVFMTidx;\n  pcVar13 = CONVFMT;\n  if (NVar8 == Node_var_array) {\n    set_loc("awk.h",0x72b);\n    array_vname(pNVar9);\n    pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(pcVar12);\n    bVar3 = (byte)pNVar9->flags;\n  }\n  else {\n    bVar3 = (byte)pNVar9->flags;\n  }\n  if (((bVar3 & 4) == 0) ||\n     ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n    pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n  }\n  if (red_head != (redirect *)0x0) {\n    __n = (pNVar9->sub).val.slen;\n    rp = red_head;\n    do {\n      pcVar13 = rp->value;\n      sVar10 = strlen(pcVar13);\n      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }\n      rp = rp->next;\n    } while (rp != (redirect *)0x0);\n  }\n  if ((do_flags & 5U) != 0) {\n    set_loc("io.c",0x4c5);\n    p_Var6 = lintfunc;\n    pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*p_Var6)(pcVar13);\n  }\n  if ((do_flags & 0x10U) == 0) {\n    pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5);\n    update_ERRNO_string(pcVar13);\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }\n  else {\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }\n  if (pcVar13 == (char *)0x0) {\n    r_unref(pNVar9);\n  }\n  pNVar9 = (*make_number)(-1.0);\n  return pNVar9;\n}\n\n" comment comment (function_definition "NODE * do_close(int nargs)\n\n{\n  char **ppcVar1;\n  wchar_t wVar2;\n  byte bVar3;\n  char cVar4;\n  size_t __n;\n  size_t sVar5;\n  _func_void_char_ptr_varargs *p_Var6;\n  _func_NODE_ptr_double *p_Var7;\n  NODETYPE NVar8;\n  NODE *pNVar9;\n  size_t sVar10;\n  int iVar11;\n  char *pcVar12;\n  char *pcVar13;\n  redirect *rp;\n  two_way_close_type local_28;\n  \n  iVar11 = CONVFMTidx;\n  pcVar13 = CONVFMT;\n  local_28 = CLOSE_ALL;\n  pNVar9 = stack_ptr->rptr;\n  stack_ptr = stack_ptr + -1;\n  NVar8 = pNVar9->type;\n  if (nargs == 2) {\n    if (NVar8 == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      array_vname(pNVar9);\n      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar12);\n    }\n    if (((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n    }\n    pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen;\n    cVar4 = *pcVar13;\n    *pcVar13 = '\0';\n    pcVar13 = (pNVar9->sub).val.sp;\n    iVar11 = strcasecmp(pcVar13,"to");\n    local_28 = CLOSE_TO;\n    if (iVar11 != 0) {\n      iVar11 = strcasecmp(pcVar13,"from");\n      local_28 = CLOSE_FROM;\n      if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }\n    }\n    pcVar13[(pNVar9->sub).val.slen] = cVar4;\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    if (*ppcVar1 == (char *)0x0) {\n      r_unref(pNVar9);\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n    else {\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n  }\n  iVar11 = CONVFMTidx;\n  pcVar13 = CONVFMT;\n  if (NVar8 == Node_var_array) {\n    set_loc("awk.h",0x72b);\n    array_vname(pNVar9);\n    pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(pcVar12);\n    bVar3 = (byte)pNVar9->flags;\n  }\n  else {\n    bVar3 = (byte)pNVar9->flags;\n  }\n  if (((bVar3 & 4) == 0) ||\n     ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n    pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n  }\n  if (red_head != (redirect *)0x0) {\n    __n = (pNVar9->sub).val.slen;\n    rp = red_head;\n    do {\n      pcVar13 = rp->value;\n      sVar10 = strlen(pcVar13);\n      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }\n      rp = rp->next;\n    } while (rp != (redirect *)0x0);\n  }\n  if ((do_flags & 5U) != 0) {\n    set_loc("io.c",0x4c5);\n    p_Var6 = lintfunc;\n    pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*p_Var6)(pcVar13);\n  }\n  if ((do_flags & 0x10U) == 0) {\n    pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5);\n    update_ERRNO_string(pcVar13);\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }\n  else {\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }\n  if (pcVar13 == (char *)0x0) {\n    r_unref(pNVar9);\n  }\n  pNVar9 = (*make_number)(-1.0);\n  return pNVar9;\n}" type_identifier (pointer_declarator "* do_close(int nargs)" * (function_declarator "do_close(int nargs)" identifier (parameter_list "(int nargs)" ( (parameter_declaration "int nargs" primitive_type identifier) )))) (compound_statement "{\n  char **ppcVar1;\n  wchar_t wVar2;\n  byte bVar3;\n  char cVar4;\n  size_t __n;\n  size_t sVar5;\n  _func_void_char_ptr_varargs *p_Var6;\n  _func_NODE_ptr_double *p_Var7;\n  NODETYPE NVar8;\n  NODE *pNVar9;\n  size_t sVar10;\n  int iVar11;\n  char *pcVar12;\n  char *pcVar13;\n  redirect *rp;\n  two_way_close_type local_28;\n  \n  iVar11 = CONVFMTidx;\n  pcVar13 = CONVFMT;\n  local_28 = CLOSE_ALL;\n  pNVar9 = stack_ptr->rptr;\n  stack_ptr = stack_ptr + -1;\n  NVar8 = pNVar9->type;\n  if (nargs == 2) {\n    if (NVar8 == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      array_vname(pNVar9);\n      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar12);\n    }\n    if (((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n    }\n    pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen;\n    cVar4 = *pcVar13;\n    *pcVar13 = '\0';\n    pcVar13 = (pNVar9->sub).val.sp;\n    iVar11 = strcasecmp(pcVar13,"to");\n    local_28 = CLOSE_TO;\n    if (iVar11 != 0) {\n      iVar11 = strcasecmp(pcVar13,"from");\n      local_28 = CLOSE_FROM;\n      if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }\n    }\n    pcVar13[(pNVar9->sub).val.slen] = cVar4;\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    if (*ppcVar1 == (char *)0x0) {\n      r_unref(pNVar9);\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n    else {\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n  }\n  iVar11 = CONVFMTidx;\n  pcVar13 = CONVFMT;\n  if (NVar8 == Node_var_array) {\n    set_loc("awk.h",0x72b);\n    array_vname(pNVar9);\n    pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(pcVar12);\n    bVar3 = (byte)pNVar9->flags;\n  }\n  else {\n    bVar3 = (byte)pNVar9->flags;\n  }\n  if (((bVar3 & 4) == 0) ||\n     ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n    pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n  }\n  if (red_head != (redirect *)0x0) {\n    __n = (pNVar9->sub).val.slen;\n    rp = red_head;\n    do {\n      pcVar13 = rp->value;\n      sVar10 = strlen(pcVar13);\n      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }\n      rp = rp->next;\n    } while (rp != (redirect *)0x0);\n  }\n  if ((do_flags & 5U) != 0) {\n    set_loc("io.c",0x4c5);\n    p_Var6 = lintfunc;\n    pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*p_Var6)(pcVar13);\n  }\n  if ((do_flags & 0x10U) == 0) {\n    pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5);\n    update_ERRNO_string(pcVar13);\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }\n  else {\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }\n  if (pcVar13 == (char *)0x0) {\n    r_unref(pNVar9);\n  }\n  pNVar9 = (*make_number)(-1.0);\n  return pNVar9;\n}" { (declaration "char **ppcVar1;" primitive_type (pointer_declarator "**ppcVar1" * (pointer_declarator "*ppcVar1" * identifier)) ;) (declaration "wchar_t wVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "_func_void_char_ptr_varargs *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "_func_NODE_ptr_double *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "NODETYPE NVar8;" type_identifier identifier ;) (declaration "NODE *pNVar9;" type_identifier (pointer_declarator "*pNVar9" * identifier) ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "redirect *rp;" type_identifier (pointer_declarator "*rp" * identifier) ;) (declaration "two_way_close_type local_28;" type_identifier identifier ;) (expression_statement "iVar11 = CONVFMTidx;" (assignment_expression "iVar11 = CONVFMTidx" identifier = identifier) ;) (expression_statement "pcVar13 = CONVFMT;" (assignment_expression "pcVar13 = CONVFMT" identifier = identifier) ;) (expression_statement "local_28 = CLOSE_ALL;" (assignment_expression "local_28 = CLOSE_ALL" identifier = identifier) ;) (expression_statement "pNVar9 = stack_ptr->rptr;" (assignment_expression "pNVar9 = stack_ptr->rptr" identifier = (field_expression "stack_ptr->rptr" identifier -> field_identifier)) ;) (expression_statement "stack_ptr = stack_ptr + -1;" (assignment_expression "stack_ptr = stack_ptr + -1" identifier = (binary_expression "stack_ptr + -1" identifier + number_literal)) ;) (expression_statement "NVar8 = pNVar9->type;" (assignment_expression "NVar8 = pNVar9->type" identifier = (field_expression "pNVar9->type" identifier -> field_identifier)) ;) (if_statement "if (nargs == 2) {\n    if (NVar8 == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      array_vname(pNVar9);\n      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar12);\n    }\n    if (((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n    }\n    pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen;\n    cVar4 = *pcVar13;\n    *pcVar13 = '\0';\n    pcVar13 = (pNVar9->sub).val.sp;\n    iVar11 = strcasecmp(pcVar13,"to");\n    local_28 = CLOSE_TO;\n    if (iVar11 != 0) {\n      iVar11 = strcasecmp(pcVar13,"from");\n      local_28 = CLOSE_FROM;\n      if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }\n    }\n    pcVar13[(pNVar9->sub).val.slen] = cVar4;\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    if (*ppcVar1 == (char *)0x0) {\n      r_unref(pNVar9);\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n    else {\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n  }" if (parenthesized_expression "(nargs == 2)" ( (binary_expression "nargs == 2" identifier == number_literal) )) (compound_statement "{\n    if (NVar8 == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      array_vname(pNVar9);\n      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar12);\n    }\n    if (((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n    }\n    pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen;\n    cVar4 = *pcVar13;\n    *pcVar13 = '\0';\n    pcVar13 = (pNVar9->sub).val.sp;\n    iVar11 = strcasecmp(pcVar13,"to");\n    local_28 = CLOSE_TO;\n    if (iVar11 != 0) {\n      iVar11 = strcasecmp(pcVar13,"from");\n      local_28 = CLOSE_FROM;\n      if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }\n    }\n    pcVar13[(pNVar9->sub).val.slen] = cVar4;\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    if (*ppcVar1 == (char *)0x0) {\n      r_unref(pNVar9);\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n    else {\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n  }" { (if_statement "if (NVar8 == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      array_vname(pNVar9);\n      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar12);\n    }" if (parenthesized_expression "(NVar8 == Node_var_array)" ( (binary_expression "NVar8 == Node_var_array" identifier == identifier) )) (compound_statement "{\n      set_loc("awk.h",0x72b);\n      array_vname(pNVar9);\n      pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar12);\n    }" { (expression_statement "set_loc("awk.h",0x72b);" (call_expression "set_loc("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "array_vname(pNVar9);" (call_expression "array_vname(pNVar9)" identifier (argument_list "(pNVar9)" ( identifier ))) ;) (expression_statement "pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar12);" (call_expression "r_fatal(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier ))) ;) })) (if_statement "if (((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n    }" if (parenthesized_expression "(((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff))))" ( (binary_expression "((pNVar9->flags & 4) == 0) ||\n       ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))" (parenthesized_expression "((pNVar9->flags & 4) == 0)" ( (binary_expression "(pNVar9->flags & 4) == 0" (parenthesized_expression "(pNVar9->flags & 4)" ( (binary_expression "pNVar9->flags & 4" (field_expression "pNVar9->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))" ( (parenthesized_expression "(sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff))" ( (comma_expression "sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)" (assignment_expression "sVar5 = (pNVar9->sub).nodep.reserved" identifier = (field_expression "(pNVar9->sub).nodep.reserved" (field_expression "(pNVar9->sub).nodep" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "sVar5 != iVar11 && (sVar5 != 0xffffffff)" (binary_expression "sVar5 != iVar11" identifier != identifier) && (parenthesized_expression "(sVar5 != 0xffffffff)" ( (binary_expression "sVar5 != 0xffffffff" identifier != number_literal) )))) )) ))) )) (compound_statement "{\n      pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n    }" { (expression_statement "pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);" (assignment_expression "pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9)" identifier = (call_expression "(*format_val)(pcVar13,iVar11,pNVar9)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(pcVar13,iVar11,pNVar9)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen;" (assignment_expression "pcVar13 = (pNVar9->sub).val.sp + (pNVar9->sub).val.slen" identifier = (binary_expression "(pNVar9->sub).val.sp + (pNVar9->sub).val.slen" (field_expression "(pNVar9->sub).val.sp" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (field_expression "(pNVar9->sub).val.slen" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "cVar4 = *pcVar13;" (assignment_expression "cVar4 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "*pcVar13 = '\0';" (assignment_expression "*pcVar13 = '\0'" (pointer_expression "*pcVar13" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar13 = (pNVar9->sub).val.sp;" (assignment_expression "pcVar13 = (pNVar9->sub).val.sp" identifier = (field_expression "(pNVar9->sub).val.sp" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "iVar11 = strcasecmp(pcVar13,"to");" (assignment_expression "iVar11 = strcasecmp(pcVar13,"to")" identifier = (call_expression "strcasecmp(pcVar13,"to")" identifier (argument_list "(pcVar13,"to")" ( identifier , (string_literal ""to"" " string_content ") )))) ;) (expression_statement "local_28 = CLOSE_TO;" (assignment_expression "local_28 = CLOSE_TO" identifier = identifier) ;) (if_statement "if (iVar11 != 0) {\n      iVar11 = strcasecmp(pcVar13,"from");\n      local_28 = CLOSE_FROM;\n      if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }\n    }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar11 = strcasecmp(pcVar13,"from");\n      local_28 = CLOSE_FROM;\n      if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }\n    }" { (expression_statement "iVar11 = strcasecmp(pcVar13,"from");" (assignment_expression "iVar11 = strcasecmp(pcVar13,"from")" identifier = (call_expression "strcasecmp(pcVar13,"from")" identifier (argument_list "(pcVar13,"from")" ( identifier , (string_literal ""from"" " string_content ") )))) ;) (expression_statement "local_28 = CLOSE_FROM;" (assignment_expression "local_28 = CLOSE_FROM" identifier = identifier) ;) (if_statement "if (iVar11 != 0) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        set_loc("io.c",0x4b3);\n        pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n        r_fatal(pcVar13);\n        pcVar13 = (pNVar9->sub).val.sp;\n        local_28 = CLOSE_ALL;\n      }" { (expression_statement "ppcVar1 = &(pNVar9->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar9->sub).nodep.name" identifier = (pointer_expression "&(pNVar9->sub).nodep.name" & (field_expression "(pNVar9->sub).nodep.name" (field_expression "(pNVar9->sub).nodep" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (if_statement "if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }" if (parenthesized_expression "(*ppcVar1 == (char *)0x0)" ( (binary_expression "*ppcVar1 == (char *)0x0" (pointer_expression "*ppcVar1" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          r_unref(pNVar9);\n        }" { (expression_statement "r_unref(pNVar9);" (call_expression "r_unref(pNVar9)" identifier (argument_list "(pNVar9)" ( identifier ))) ;) })) (expression_statement "set_loc("io.c",0x4b3);" (call_expression "set_loc("io.c",0x4b3)" identifier (argument_list "("io.c",0x4b3)" ( (string_literal ""io.c"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5);" (assignment_expression "pcVar13 = (char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"close: second argument must be `to\' or `from\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"close: second argument must be `to\' or `from\'",5)" identifier (argument_list "(0,"close: second argument must be `to\' or `from\'",5)" ( number_literal , (string_literal ""close: second argument must be `to\' or `from\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar13);" (call_expression "r_fatal(pcVar13)" identifier (argument_list "(pcVar13)" ( identifier ))) ;) (expression_statement "pcVar13 = (pNVar9->sub).val.sp;" (assignment_expression "pcVar13 = (pNVar9->sub).val.sp" identifier = (field_expression "(pNVar9->sub).val.sp" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "local_28 = CLOSE_ALL;" (assignment_expression "local_28 = CLOSE_ALL" identifier = identifier) ;) })) })) (expression_statement "pcVar13[(pNVar9->sub).val.slen] = cVar4;" (assignment_expression "pcVar13[(pNVar9->sub).val.slen] = cVar4" (subscript_expression "pcVar13[(pNVar9->sub).val.slen]" identifier [ (field_expression "(pNVar9->sub).val.slen" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) ]) = identifier) ;) (expression_statement "ppcVar1 = &(pNVar9->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar9->sub).nodep.name" identifier = (pointer_expression "&(pNVar9->sub).nodep.name" & (field_expression "(pNVar9->sub).nodep.name" (field_expression "(pNVar9->sub).nodep" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (if_statement "if (*ppcVar1 == (char *)0x0) {\n      r_unref(pNVar9);\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }\n    else {\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }" if (parenthesized_expression "(*ppcVar1 == (char *)0x0)" ( (binary_expression "*ppcVar1 == (char *)0x0" (pointer_expression "*ppcVar1" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      r_unref(pNVar9);\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }" { (expression_statement "r_unref(pNVar9);" (call_expression "r_unref(pNVar9)" identifier (argument_list "(pNVar9)" ( identifier ))) ;) (expression_statement "pNVar9 = stack_ptr->rptr;" (assignment_expression "pNVar9 = stack_ptr->rptr" identifier = (field_expression "stack_ptr->rptr" identifier -> field_identifier)) ;) (expression_statement "stack_ptr = stack_ptr + -1;" (assignment_expression "stack_ptr = stack_ptr + -1" identifier = (binary_expression "stack_ptr + -1" identifier + number_literal)) ;) (expression_statement "NVar8 = pNVar9->type;" (assignment_expression "NVar8 = pNVar9->type" identifier = (field_expression "pNVar9->type" identifier -> field_identifier)) ;) }) (else_clause "else {\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }" else (compound_statement "{\n      pNVar9 = stack_ptr->rptr;\n      stack_ptr = stack_ptr + -1;\n      NVar8 = pNVar9->type;\n    }" { (expression_statement "pNVar9 = stack_ptr->rptr;" (assignment_expression "pNVar9 = stack_ptr->rptr" identifier = (field_expression "stack_ptr->rptr" identifier -> field_identifier)) ;) (expression_statement "stack_ptr = stack_ptr + -1;" (assignment_expression "stack_ptr = stack_ptr + -1" identifier = (binary_expression "stack_ptr + -1" identifier + number_literal)) ;) (expression_statement "NVar8 = pNVar9->type;" (assignment_expression "NVar8 = pNVar9->type" identifier = (field_expression "pNVar9->type" identifier -> field_identifier)) ;) }))) })) (expression_statement "iVar11 = CONVFMTidx;" (assignment_expression "iVar11 = CONVFMTidx" identifier = identifier) ;) (expression_statement "pcVar13 = CONVFMT;" (assignment_expression "pcVar13 = CONVFMT" identifier = identifier) ;) (if_statement "if (NVar8 == Node_var_array) {\n    set_loc("awk.h",0x72b);\n    array_vname(pNVar9);\n    pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(pcVar12);\n    bVar3 = (byte)pNVar9->flags;\n  }\n  else {\n    bVar3 = (byte)pNVar9->flags;\n  }" if (parenthesized_expression "(NVar8 == Node_var_array)" ( (binary_expression "NVar8 == Node_var_array" identifier == identifier) )) (compound_statement "{\n    set_loc("awk.h",0x72b);\n    array_vname(pNVar9);\n    pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(pcVar12);\n    bVar3 = (byte)pNVar9->flags;\n  }" { (expression_statement "set_loc("awk.h",0x72b);" (call_expression "set_loc("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "array_vname(pNVar9);" (call_expression "array_vname(pNVar9)" identifier (argument_list "(pNVar9)" ( identifier ))) ;) (expression_statement "pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "pcVar12 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar12);" (call_expression "r_fatal(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier ))) ;) (expression_statement "bVar3 = (byte)pNVar9->flags;" (assignment_expression "bVar3 = (byte)pNVar9->flags" identifier = (cast_expression "(byte)pNVar9->flags" ( (type_descriptor "byte" type_identifier) ) (field_expression "pNVar9->flags" identifier -> field_identifier))) ;) }) (else_clause "else {\n    bVar3 = (byte)pNVar9->flags;\n  }" else (compound_statement "{\n    bVar3 = (byte)pNVar9->flags;\n  }" { (expression_statement "bVar3 = (byte)pNVar9->flags;" (assignment_expression "bVar3 = (byte)pNVar9->flags" identifier = (cast_expression "(byte)pNVar9->flags" ( (type_descriptor "byte" type_identifier) ) (field_expression "pNVar9->flags" identifier -> field_identifier))) ;) }))) (if_statement "if (((bVar3 & 4) == 0) ||\n     ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))) {\n    pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n  }" if (parenthesized_expression "(((bVar3 & 4) == 0) ||\n     ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff))))" ( (binary_expression "((bVar3 & 4) == 0) ||\n     ((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))" (parenthesized_expression "((bVar3 & 4) == 0)" ( (binary_expression "(bVar3 & 4) == 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)))" ( (parenthesized_expression "(sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff))" ( (comma_expression "sVar5 = (pNVar9->sub).nodep.reserved, sVar5 != iVar11 && (sVar5 != 0xffffffff)" (assignment_expression "sVar5 = (pNVar9->sub).nodep.reserved" identifier = (field_expression "(pNVar9->sub).nodep.reserved" (field_expression "(pNVar9->sub).nodep" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "sVar5 != iVar11 && (sVar5 != 0xffffffff)" (binary_expression "sVar5 != iVar11" identifier != identifier) && (parenthesized_expression "(sVar5 != 0xffffffff)" ( (binary_expression "sVar5 != 0xffffffff" identifier != number_literal) )))) )) ))) )) (compound_statement "{\n    pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);\n  }" { (expression_statement "pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9);" (assignment_expression "pNVar9 = (*format_val)(pcVar13,iVar11,pNVar9)" identifier = (call_expression "(*format_val)(pcVar13,iVar11,pNVar9)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(pcVar13,iVar11,pNVar9)" ( identifier , identifier , identifier )))) ;) })) (if_statement "if (red_head != (redirect *)0x0) {\n    __n = (pNVar9->sub).val.slen;\n    rp = red_head;\n    do {\n      pcVar13 = rp->value;\n      sVar10 = strlen(pcVar13);\n      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }\n      rp = rp->next;\n    } while (rp != (redirect *)0x0);\n  }" if (parenthesized_expression "(red_head != (redirect *)0x0)" ( (binary_expression "red_head != (redirect *)0x0" identifier != (cast_expression "(redirect *)0x0" ( (type_descriptor "redirect *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __n = (pNVar9->sub).val.slen;\n    rp = red_head;\n    do {\n      pcVar13 = rp->value;\n      sVar10 = strlen(pcVar13);\n      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }\n      rp = rp->next;\n    } while (rp != (redirect *)0x0);\n  }" { (expression_statement "__n = (pNVar9->sub).val.slen;" (assignment_expression "__n = (pNVar9->sub).val.slen" identifier = (field_expression "(pNVar9->sub).val.slen" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "rp = red_head;" (assignment_expression "rp = red_head" identifier = identifier) ;) (do_statement "do {\n      pcVar13 = rp->value;\n      sVar10 = strlen(pcVar13);\n      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }\n      rp = rp->next;\n    } while (rp != (redirect *)0x0);" do (compound_statement "{\n      pcVar13 = rp->value;\n      sVar10 = strlen(pcVar13);\n      if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }\n      rp = rp->next;\n    }" { (expression_statement "pcVar13 = rp->value;" (assignment_expression "pcVar13 = rp->value" identifier = (field_expression "rp->value" identifier -> field_identifier)) ;) (expression_statement "sVar10 = strlen(pcVar13);" (assignment_expression "sVar10 = strlen(pcVar13)" identifier = (call_expression "strlen(pcVar13)" identifier (argument_list "(pcVar13)" ( identifier )))) ;) (if_statement "if ((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)) {\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }" if (parenthesized_expression "((sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0))" ( (binary_expression "(sVar10 == __n) && (iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)" (parenthesized_expression "(sVar10 == __n)" ( (binary_expression "sVar10 == __n" identifier == identifier) )) && (parenthesized_expression "(iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0)" ( (comma_expression "iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n), iVar11 == 0" (assignment_expression "iVar11 = memcmp(pcVar13,(pNVar9->sub).val.sp,__n)" identifier = (call_expression "memcmp(pcVar13,(pNVar9->sub).val.sp,__n)" identifier (argument_list "(pcVar13,(pNVar9->sub).val.sp,__n)" ( identifier , (field_expression "(pNVar9->sub).val.sp" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) , identifier )))) , (binary_expression "iVar11 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        ppcVar1 = &(pNVar9->sub).nodep.name;\n        *ppcVar1 = *ppcVar1 + -1;\n        if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        p_Var7 = make_number;\n        iVar11 = close_redir(rp,false,local_28);\n        pNVar9 = (*p_Var7)((double)iVar11);\n        if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }\n        return pNVar9;\n      }" { (expression_statement "ppcVar1 = &(pNVar9->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar9->sub).nodep.name" identifier = (pointer_expression "&(pNVar9->sub).nodep.name" & (field_expression "(pNVar9->sub).nodep.name" (field_expression "(pNVar9->sub).nodep" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (if_statement "if (*ppcVar1 == (char *)0x0) {\n          r_unref(pNVar9);\n        }" if (parenthesized_expression "(*ppcVar1 == (char *)0x0)" ( (binary_expression "*ppcVar1 == (char *)0x0" (pointer_expression "*ppcVar1" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          r_unref(pNVar9);\n        }" { (expression_statement "r_unref(pNVar9);" (call_expression "r_unref(pNVar9)" identifier (argument_list "(pNVar9)" ( identifier ))) ;) })) (expression_statement "fflush(*(FILE **)PTR_stdout_000befc8);" (call_expression "fflush(*(FILE **)PTR_stdout_000befc8)" identifier (argument_list "(*(FILE **)PTR_stdout_000befc8)" ( (pointer_expression "*(FILE **)PTR_stdout_000befc8" * (cast_expression "(FILE **)PTR_stdout_000befc8" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "p_Var7 = make_number;" (assignment_expression "p_Var7 = make_number" identifier = identifier) ;) (expression_statement "iVar11 = close_redir(rp,false,local_28);" (assignment_expression "iVar11 = close_redir(rp,false,local_28)" identifier = (call_expression "close_redir(rp,false,local_28)" identifier (argument_list "(rp,false,local_28)" ( identifier , false , identifier )))) ;) (expression_statement "pNVar9 = (*p_Var7)((double)iVar11);" (assignment_expression "pNVar9 = (*p_Var7)((double)iVar11)" identifier = (call_expression "(*p_Var7)((double)iVar11)" (parenthesized_expression "(*p_Var7)" ( (pointer_expression "*p_Var7" * identifier) )) (argument_list "((double)iVar11)" ( (cast_expression "(double)iVar11" ( (type_descriptor "double" primitive_type) ) identifier) )))) ;) (if_statement "if ((do_flags & 0x20U) != 0) {\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }" if (parenthesized_expression "((do_flags & 0x20U) != 0)" ( (binary_expression "(do_flags & 0x20U) != 0" (parenthesized_expression "(do_flags & 0x20U)" ( (binary_expression "do_flags & 0x20U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }\n          pNVar9 = (*make_number)(0.0);\n        }" { (if_statement "if ((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')) {\n            r_unref(pNVar9);\n          }" if (parenthesized_expression "((pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01'))" ( (binary_expression "(pNVar9 != (NODE *)0x0) &&\n             (wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')" (parenthesized_expression "(pNVar9 != (NODE *)0x0)" ( (binary_expression "pNVar9 != (NODE *)0x0" identifier != (cast_expression "(NODE *)0x0" ( (type_descriptor "NODE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01')" ( (comma_expression "wVar2 = (pNVar9->sub).val.sref + L'\xffffffff', (pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01'" (assignment_expression "wVar2 = (pNVar9->sub).val.sref + L'\xffffffff'" identifier = (binary_expression "(pNVar9->sub).val.sref + L'\xffffffff'" (field_expression "(pNVar9->sub).val.sref" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (char_literal "L'\xffffffff'" L' escape_sequence character character character character '))) , (comma_expression "(pNVar9->sub).val.sref = wVar2,\n             wVar2 < L'\x01'" (assignment_expression "(pNVar9->sub).val.sref = wVar2" (field_expression "(pNVar9->sub).val.sref" (field_expression "(pNVar9->sub).val" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) , (binary_expression "wVar2 < L'\x01'" identifier < (char_literal "L'\x01'" L' escape_sequence ')))) ))) )) (compound_statement "{\n            r_unref(pNVar9);\n          }" { (expression_statement "r_unref(pNVar9);" (call_expression "r_unref(pNVar9)" identifier (argument_list "(pNVar9)" ( identifier ))) ;) })) (expression_statement "pNVar9 = (*make_number)(0.0);" (assignment_expression "pNVar9 = (*make_number)(0.0)" identifier = (call_expression "(*make_number)(0.0)" (parenthesized_expression "(*make_number)" ( (pointer_expression "*make_number" * identifier) )) (argument_list "(0.0)" ( number_literal )))) ;) })) (return_statement "return pNVar9;" return identifier ;) })) (expression_statement "rp = rp->next;" (assignment_expression "rp = rp->next" identifier = (field_expression "rp->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(rp != (redirect *)0x0)" ( (binary_expression "rp != (redirect *)0x0" identifier != (cast_expression "(redirect *)0x0" ( (type_descriptor "redirect *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (if_statement "if ((do_flags & 5U) != 0) {\n    set_loc("io.c",0x4c5);\n    p_Var6 = lintfunc;\n    pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*p_Var6)(pcVar13);\n  }" if (parenthesized_expression "((do_flags & 5U) != 0)" ( (binary_expression "(do_flags & 5U) != 0" (parenthesized_expression "(do_flags & 5U)" ( (binary_expression "do_flags & 5U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    set_loc("io.c",0x4c5);\n    p_Var6 = lintfunc;\n    pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*p_Var6)(pcVar13);\n  }" { (expression_statement "set_loc("io.c",0x4c5);" (call_expression "set_loc("io.c",0x4c5)" identifier (argument_list "("io.c",0x4c5)" ( (string_literal ""io.c"" " string_content ") , number_literal ))) ;) (expression_statement "p_Var6 = lintfunc;" (assignment_expression "p_Var6 = lintfunc" identifier = identifier) ;) (expression_statement "pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);" (assignment_expression "pcVar13 = (char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" identifier = (cast_expression "(char *)dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" identifier (argument_list "(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" ( number_literal , (string_literal ""close: `%.*s\' is not an open file, pipe or co-process"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "(*p_Var6)(pcVar13);" (call_expression "(*p_Var6)(pcVar13)" (parenthesized_expression "(*p_Var6)" ( (pointer_expression "*p_Var6" * identifier) )) (argument_list "(pcVar13)" ( identifier ))) ;) })) (if_statement "if ((do_flags & 0x10U) == 0) {\n    pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5);\n    update_ERRNO_string(pcVar13);\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }\n  else {\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }" if (parenthesized_expression "((do_flags & 0x10U) == 0)" ( (binary_expression "(do_flags & 0x10U) == 0" (parenthesized_expression "(do_flags & 0x10U)" ( (binary_expression "do_flags & 0x10U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5);\n    update_ERRNO_string(pcVar13);\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }" { (expression_statement "pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5);" (assignment_expression "pcVar13 = (char *)dcgettext(0,"close of redirection that was never opened",5)" identifier = (cast_expression "(char *)dcgettext(0,"close of redirection that was never opened",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"close of redirection that was never opened",5)" identifier (argument_list "(0,"close of redirection that was never opened",5)" ( number_literal , (string_literal ""close of redirection that was never opened"" " string_content ") , number_literal ))))) ;) (expression_statement "update_ERRNO_string(pcVar13);" (call_expression "update_ERRNO_string(pcVar13)" identifier (argument_list "(pcVar13)" ( identifier ))) ;) (expression_statement "ppcVar1 = &(pNVar9->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar9->sub).nodep.name" identifier = (pointer_expression "&(pNVar9->sub).nodep.name" & (field_expression "(pNVar9->sub).nodep.name" (field_expression "(pNVar9->sub).nodep" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (expression_statement "pcVar13 = *ppcVar1;" (assignment_expression "pcVar13 = *ppcVar1" identifier = (pointer_expression "*ppcVar1" * identifier)) ;) }) (else_clause "else {\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }" else (compound_statement "{\n    ppcVar1 = &(pNVar9->sub).nodep.name;\n    *ppcVar1 = *ppcVar1 + -1;\n    pcVar13 = *ppcVar1;\n  }" { (expression_statement "ppcVar1 = &(pNVar9->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar9->sub).nodep.name" identifier = (pointer_expression "&(pNVar9->sub).nodep.name" & (field_expression "(pNVar9->sub).nodep.name" (field_expression "(pNVar9->sub).nodep" (parenthesized_expression "(pNVar9->sub)" ( (field_expression "pNVar9->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (expression_statement "pcVar13 = *ppcVar1;" (assignment_expression "pcVar13 = *ppcVar1" identifier = (pointer_expression "*ppcVar1" * identifier)) ;) }))) (if_statement "if (pcVar13 == (char *)0x0) {\n    r_unref(pNVar9);\n  }" if (parenthesized_expression "(pcVar13 == (char *)0x0)" ( (binary_expression "pcVar13 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    r_unref(pNVar9);\n  }" { (expression_statement "r_unref(pNVar9);" (call_expression "r_unref(pNVar9)" identifier (argument_list "(pNVar9)" ( identifier ))) ;) })) (expression_statement "pNVar9 = (*make_number)(-1.0);" (assignment_expression "pNVar9 = (*make_number)(-1.0)" identifier = (call_expression "(*make_number)(-1.0)" (parenthesized_expression "(*make_number)" ( (pointer_expression "*make_number" * identifier) )) (argument_list "(-1.0)" ( number_literal )))) ;) (return_statement "return pNVar9;" return identifier ;) })))
(translation_unit "void FUN_00060b60(int param_1)\n\n{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}\n\n" (function_definition "void FUN_00060b60(int param_1)\n\n{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}" primitive_type (function_declarator "FUN_00060b60(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (expression_statement "iVar8 = DAT_000c4994;" (assignment_expression "iVar8 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar5 = PTR_DAT_000bf8f0;" (assignment_expression "puVar5 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" identifier = (pointer_expression "*(int *)(iVar6 + 0x28)" * (cast_expression "(int *)(iVar6 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x28)" ( (binary_expression "iVar6 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }" if (parenthesized_expression "(param_1 == 2)" ( (binary_expression "param_1 == 2" identifier == number_literal) )) (compound_statement "{\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }" { (if_statement "if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }" if (parenthesized_expression "(iVar10 == 5)" ( (binary_expression "iVar10 == 5" identifier == number_literal) )) (compound_statement "{\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }" { (expression_statement "FUN_000660d0("awk.h");" (call_expression "FUN_000660d0("awk.h")" identifier (argument_list "("awk.h")" ( (string_literal ""awk.h"" " string_content ") ))) ;) (expression_statement "FUN_00018020(iVar6);" (call_expression "FUN_00018020(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) })) (if_statement "if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }" if (parenthesized_expression "(((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))))" ( (binary_expression "((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar6 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar6 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar6 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar6 + 0x2c)" * (cast_expression "(byte *)(iVar6 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2c)" ( (binary_expression "iVar6 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" ( (parenthesized_expression "(*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))" ( (binary_expression "*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)" (binary_expression "*(int *)(iVar6 + 0x14) != iVar8" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != identifier) && (parenthesized_expression "(*(int *)(iVar6 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar6 + 0x14) != -1" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }" { (expression_statement "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);" (assignment_expression "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,iVar8,iVar6)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));" (assignment_expression "pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" identifier = (cast_expression "(char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" ( (binary_expression "*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8)" (pointer_expression "*(int *)(iVar6 + 0xc)" * (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) )))) ;) (expression_statement "cVar3 = *pcVar9;" (assignment_expression "cVar3 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (expression_statement "*pcVar9 = '\0';" (assignment_expression "*pcVar9 = '\0'" (pointer_expression "*pcVar9" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar9 = *(char **)(iVar6 + 8);" (assignment_expression "pcVar9 = *(char **)(iVar6 + 8)" identifier = (pointer_expression "*(char **)(iVar6 + 8)" * (cast_expression "(char **)(iVar6 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = strcasecmp(pcVar9,"to");" (assignment_expression "iVar10 = strcasecmp(pcVar9,"to")" identifier = (call_expression "strcasecmp(pcVar9,"to")" identifier (argument_list "(pcVar9,"to")" ( identifier , (string_literal ""to"" " string_content ") )))) ;) (if_statement "if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }" if (parenthesized_expression "((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0))" ( (binary_expression "(iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)" ( (comma_expression "iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0" (assignment_expression "iVar10 = strcasecmp(pcVar9,"from")" identifier = (call_expression "strcasecmp(pcVar9,"from")" identifier (argument_list "(pcVar9,"from")" ( identifier , (string_literal ""from"" " string_content ") )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }" { (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n        FUN_000668b0(iVar6);\n      }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "FUN_000660d0(&DAT_0009269c);" (call_expression "FUN_000660d0(&DAT_0009269c)" identifier (argument_list "(&DAT_0009269c)" ( (pointer_expression "&DAT_0009269c" & identifier) ))) ;) (expression_statement "uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);" (assignment_expression "uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5)" identifier = (call_expression "dcgettext(0,"close: second argument must be `to\' or `from\'",5)" identifier (argument_list "(0,"close: second argument must be `to\' or `from\'",5)" ( number_literal , (string_literal ""close: second argument must be `to\' or `from\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "pcVar9 = *(char **)(iVar6 + 8);" (assignment_expression "pcVar9 = *(char **)(iVar6 + 8)" identifier = (pointer_expression "*(char **)(iVar6 + 8)" * (cast_expression "(char **)(iVar6 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;" (assignment_expression "pcVar9[*(int *)(iVar6 + 0xc)] = cVar3" (subscript_expression "pcVar9[*(int *)(iVar6 + 0xc)]" identifier [ (pointer_expression "*(int *)(iVar6 + 0xc)" * (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) ]) = identifier) ;) (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" identifier = (pointer_expression "*(int *)(iVar6 + 0x28)" * (cast_expression "(int *)(iVar6 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x28)" ( (binary_expression "iVar6 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" else (compound_statement "{\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" { (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" identifier = (pointer_expression "*(int *)(iVar6 + 0x28)" * (cast_expression "(int *)(iVar6 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x28)" ( (binary_expression "iVar6 + 0x28" identifier + number_literal) ))))) ;) }))) })) (expression_statement "iVar8 = DAT_000c4994;" (assignment_expression "iVar8 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar5 = PTR_DAT_000bf8f0;" (assignment_expression "puVar5 = PTR_DAT_000bf8f0" identifier = identifier) ;) (if_statement "if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" if (parenthesized_expression "(iVar10 == 5)" ( (binary_expression "iVar10 == 5" identifier == number_literal) )) (compound_statement "{\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" { (expression_statement "FUN_000660d0("awk.h");" (call_expression "FUN_000660d0("awk.h")" identifier (argument_list "("awk.h")" ( (string_literal ""awk.h"" " string_content ") ))) ;) (expression_statement "FUN_00018020(iVar6);" (call_expression "FUN_00018020(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "bVar2 = *(byte *)(iVar6 + 0x2c);" (assignment_expression "bVar2 = *(byte *)(iVar6 + 0x2c)" identifier = (pointer_expression "*(byte *)(iVar6 + 0x2c)" * (cast_expression "(byte *)(iVar6 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2c)" ( (binary_expression "iVar6 + 0x2c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" else (compound_statement "{\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" { (expression_statement "bVar2 = *(byte *)(iVar6 + 0x2c);" (assignment_expression "bVar2 = *(byte *)(iVar6 + 0x2c)" identifier = (pointer_expression "*(byte *)(iVar6 + 0x2c)" * (cast_expression "(byte *)(iVar6 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2c)" ( (binary_expression "iVar6 + 0x2c" identifier + number_literal) ))))) ;) }))) (if_statement "if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))))" ( (binary_expression "((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" ( (parenthesized_expression "(*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))" ( (binary_expression "*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)" (binary_expression "*(int *)(iVar6 + 0x14) != iVar8" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != identifier) && (parenthesized_expression "(*(int *)(iVar6 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar6 + 0x14) != -1" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }" { (expression_statement "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);" (assignment_expression "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,iVar8,iVar6)" ( identifier , identifier , identifier )))) ;) })) (if_statement "if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(DAT_000c3748 != 0)" ( (binary_expression "DAT_000c3748 != 0" identifier != number_literal) )) (compound_statement "{\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }" { (expression_statement "__n = *(size_t *)(iVar6 + 0xc);" (assignment_expression "__n = *(size_t *)(iVar6 + 0xc)" identifier = (pointer_expression "*(size_t *)(iVar6 + 0xc)" * (cast_expression "(size_t *)(iVar6 + 0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = DAT_000c3748;" (assignment_expression "iVar10 = DAT_000c3748" identifier = identifier) ;) (do_statement "do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);" do (compound_statement "{\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    }" { (expression_statement "pcVar9 = *(char **)(iVar10 + 4);" (assignment_expression "pcVar9 = *(char **)(iVar10 + 4)" identifier = (pointer_expression "*(char **)(iVar10 + 4)" * (cast_expression "(char **)(iVar10 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + 4)" ( (binary_expression "iVar10 + 4" identifier + number_literal) ))))) ;) (expression_statement "sVar7 = strlen(pcVar9);" (assignment_expression "sVar7 = strlen(pcVar9)" identifier = (call_expression "strlen(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;) (if_statement "if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }" if (parenthesized_expression "((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0))" ( (binary_expression "(sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)" (parenthesized_expression "(sVar7 == __n)" ( (binary_expression "sVar7 == __n" identifier == identifier) )) && (parenthesized_expression "(iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)" ( (comma_expression "iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0" (assignment_expression "iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n)" identifier = (call_expression "memcmp(pcVar9,*(void **)(iVar6 + 8),__n)" identifier (argument_list "(pcVar9,*(void **)(iVar6 + 8),__n)" ( identifier , (pointer_expression "*(void **)(iVar6 + 8)" * (cast_expression "(void **)(iVar6 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }" { (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n          FUN_000668b0(iVar6);\n        }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "fflush(*(FILE **)PTR_stdout_000befc8);" (call_expression "fflush(*(FILE **)PTR_stdout_000befc8)" identifier (argument_list "(*(FILE **)PTR_stdout_000befc8)" ( (pointer_expression "*(FILE **)PTR_stdout_000befc8" * (cast_expression "(FILE **)PTR_stdout_000befc8" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "puVar5 = PTR_FUN_000bf94c;" (assignment_expression "puVar5 = PTR_FUN_000bf94c" identifier = identifier) ;) (expression_statement "iVar6 = FUN_00060820();" (assignment_expression "iVar6 = FUN_00060820()" identifier = (call_expression "FUN_00060820()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = (*(code *)puVar5)((double)iVar6);" (assignment_expression "iVar6 = (*(code *)puVar5)((double)iVar6)" identifier = (call_expression "(*(code *)puVar5)((double)iVar6)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((double)iVar6)" ( (cast_expression "(double)iVar6" ( (type_descriptor "double" primitive_type) ) identifier) )))) ;) (if_statement "if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }" if (parenthesized_expression "((_DAT_000c3760 & 0x20) != 0)" ( (binary_expression "(_DAT_000c3760 & 0x20) != 0" (parenthesized_expression "(_DAT_000c3760 & 0x20)" ( (binary_expression "_DAT_000c3760 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }" { (if_statement "if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }" if (parenthesized_expression "((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1))" ( (binary_expression "(iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)" ( (comma_expression "iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar6 + 0x10) + -1" (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) + number_literal)) , (comma_expression "*(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1" (assignment_expression "*(int *)(iVar6 + 0x10) = iVar10" (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) = identifier) , (binary_expression "iVar10 < 1" identifier < number_literal))) ))) )) (compound_statement "{\n            FUN_000668b0(iVar6);\n          }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "(*(code *)PTR_FUN_000bf94c)(0,0);" (call_expression "(*(code *)PTR_FUN_000bf94c)(0,0)" (parenthesized_expression "(*(code *)PTR_FUN_000bf94c)" ( (pointer_expression "*(code *)PTR_FUN_000bf94c" * (cast_expression "(code *)PTR_FUN_000bf94c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0)" ( number_literal , number_literal ))) ;) })) (return_statement "return;" return ;) })) (expression_statement "iVar10 = *(int *)(iVar10 + 0x1c);" (assignment_expression "iVar10 = *(int *)(iVar10 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar10 + 0x1c)" * (cast_expression "(int *)(iVar10 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (if_statement "if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }" if (parenthesized_expression "((_DAT_000c3760 & 5) != 0)" ( (binary_expression "(_DAT_000c3760 & 5) != 0" (parenthesized_expression "(_DAT_000c3760 & 5)" ( (binary_expression "_DAT_000c3760 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }" { (expression_statement "FUN_000660d0(&DAT_0009269c,0x4c5);" (call_expression "FUN_000660d0(&DAT_0009269c,0x4c5)" identifier (argument_list "(&DAT_0009269c,0x4c5)" ( (pointer_expression "&DAT_0009269c" & identifier) , number_literal ))) ;) (expression_statement "puVar5 = PTR_FUN_000bf8e8;" (assignment_expression "puVar5 = PTR_FUN_000bf8e8" identifier = identifier) ;) (expression_statement "uVar11 = *(undefined4 *)(iVar6 + 8);" (assignment_expression "uVar11 = *(undefined4 *)(iVar6 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar6 + 0xc);" (assignment_expression "uVar4 = *(undefined4 *)(iVar6 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" * (cast_expression "(undefined4 *)(iVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);" (assignment_expression "uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" identifier = (call_expression "dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" identifier (argument_list "(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" ( number_literal , (string_literal ""close: `%.*s\' is not an open file, pipe or co-process"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "(*(code *)puVar5)(uVar12,uVar4,uVar11);" (call_expression "(*(code *)puVar5)(uVar12,uVar4,uVar11)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar12,uVar4,uVar11)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" if (parenthesized_expression "((_DAT_000c3760 & 0x10) == 0)" ( (binary_expression "(_DAT_000c3760 & 0x10) == 0" (parenthesized_expression "(_DAT_000c3760 & 0x10)" ( (binary_expression "_DAT_000c3760 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" { (expression_statement "uVar11 = dcgettext(0,"close of redirection that was never opened",5);" (assignment_expression "uVar11 = dcgettext(0,"close of redirection that was never opened",5)" identifier = (call_expression "dcgettext(0,"close of redirection that was never opened",5)" identifier (argument_list "(0,"close of redirection that was never opened",5)" ( number_literal , (string_literal ""close of redirection that was never opened"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_000490e0(uVar11);" (call_expression "FUN_000490e0(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "iVar10 = *piVar1;" (assignment_expression "iVar10 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }) (else_clause "else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" else (compound_statement "{\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" { (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" identifier = (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "iVar10 = *piVar1;" (assignment_expression "iVar10 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }))) (if_statement "if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000668b0(iVar6);\n  }" { (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) })) (expression_statement "(*(code *)PTR_FUN_000bf94c)(0,0xbff00000);" (call_expression "(*(code *)PTR_FUN_000bf94c)(0,0xbff00000)" (parenthesized_expression "(*(code *)PTR_FUN_000bf94c)" ( (pointer_expression "*(code *)PTR_FUN_000bf94c" * (cast_expression "(code *)PTR_FUN_000bf94c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0xbff00000)" ( number_literal , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) , (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) , (binary_expression IDENT < LIT))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT ))) ;) })) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00060b60(int param_1)\n\n{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00060b60(int param_1)" (identifier "FUN_00060b60") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  char cVar3;\n  size_t __n;\n  undefined4 uVar4;\n  undefined *puVar5;\n  int iVar6;\n  size_t sVar7;\n  int iVar8;\n  char *pcVar9;\n  int iVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  \n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  iVar6 = *DAT_000c13c8;\n  DAT_000c13c8 = DAT_000c13c8 + -1;\n  iVar10 = *(int *)(iVar6 + 0x28);\n  if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }\n  iVar8 = DAT_000c4994;\n  puVar5 = PTR_DAT_000bf8f0;\n  if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }\n  if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }\n  if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }\n  if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }\n  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "size_t sVar7;" (primitive_type "size_t") (identifier "sVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (expression_statement "iVar8 = DAT_000c4994;" (assignment_expression "iVar8 = DAT_000c4994" (identifier "iVar8") (= "=") (identifier "DAT_000c4994")) (; ";")) (expression_statement "puVar5 = PTR_DAT_000bf8f0;" (assignment_expression "puVar5 = PTR_DAT_000bf8f0" (identifier "puVar5") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";")) (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" (identifier "iVar6") (= "=") (pointer_expression "*DAT_000c13c8" (* "*") (identifier "DAT_000c13c8"))) (; ";")) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (= "=") (binary_expression "DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar6 + 0x28)" (* "*") (cast_expression "(int *)(iVar6 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x28)" (( "(") (binary_expression "iVar6 + 0x28" (identifier "iVar6") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (param_1 == 2) {\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }" (if "if") (parenthesized_expression "(param_1 == 2)" (( "(") (binary_expression "param_1 == 2" (identifier "param_1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }\n    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }\n    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));\n    cVar3 = *pcVar9;\n    *pcVar9 = '\0';\n    pcVar9 = *(char **)(iVar6 + 8);\n    iVar10 = strcasecmp(pcVar9,"to");\n    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }\n    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n  }" ({ "{") (if_statement "if (iVar10 == 5) {\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }" (if "if") (parenthesized_expression "(iVar10 == 5)" (( "(") (binary_expression "iVar10 == 5" (identifier "iVar10") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n      FUN_000660d0("awk.h");\n      FUN_00018020(iVar6);\n      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar11);\n    }" ({ "{") (expression_statement "FUN_000660d0("awk.h");" (call_expression "FUN_000660d0("awk.h")" (identifier "FUN_000660d0") (argument_list "("awk.h")" (( "(") (string_literal ""awk.h"" (" """) (string_content "awk.h") (" """)) () ")"))) (; ";")) (expression_statement "FUN_00018020(iVar6);" (call_expression "FUN_00018020(iVar6)" (identifier "FUN_00018020") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar11") (= "=") (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use array `%s\' in a scalar context"" (" """) (string_content "attempt to use array `%s") (escape_sequence "\'") (string_content " in a scalar context") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" (identifier "FUN_00066470") (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")"))) (; ";")) (} "}"))) (if_statement "if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }" (if "if") (parenthesized_expression "(((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))))" (( "(") (binary_expression "((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||\n       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar6 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar6 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar6 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar6 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar6 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar6 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2c)" (( "(") (binary_expression "iVar6 + 0x2c" (identifier "iVar6") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (( "(") (parenthesized_expression "(*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))" (( "(") (binary_expression "*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)" (binary_expression "*(int *)(iVar6 + 0x14) != iVar8" (pointer_expression "*(int *)(iVar6 + 0x14)" (* "*") (cast_expression "(int *)(iVar6 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (identifier "iVar8")) (&& "&&") (parenthesized_expression "(*(int *)(iVar6 + 0x14) != -1)" (( "(") (binary_expression "*(int *)(iVar6 + 0x14) != -1" (pointer_expression "*(int *)(iVar6 + 0x14)" (* "*") (cast_expression "(int *)(iVar6 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n    }" ({ "{") (expression_statement "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);" (assignment_expression "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(puVar5,iVar8,iVar6)" (( "(") (identifier "puVar5") (, ",") (identifier "iVar8") (, ",") (identifier "iVar6") () ")")))) (; ";")) (} "}"))) (expression_statement "pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));" (assignment_expression "pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" (identifier "pcVar9") (= "=") (cast_expression "(char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8))" (( "(") (binary_expression "*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8)" (pointer_expression "*(int *)(iVar6 + 0xc)" (* "*") (cast_expression "(int *)(iVar6 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (pointer_expression "*(int *)(iVar6 + 8)" (* "*") (cast_expression "(int *)(iVar6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) () ")")))) (; ";")) (expression_statement "cVar3 = *pcVar9;" (assignment_expression "cVar3 = *pcVar9" (identifier "cVar3") (= "=") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9"))) (; ";")) (expression_statement "*pcVar9 = '\0';" (assignment_expression "*pcVar9 = '\0'" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar9 = *(char **)(iVar6 + 8);" (assignment_expression "pcVar9 = *(char **)(iVar6 + 8)" (identifier "pcVar9") (= "=") (pointer_expression "*(char **)(iVar6 + 8)" (* "*") (cast_expression "(char **)(iVar6 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar10 = strcasecmp(pcVar9,"to");" (assignment_expression "iVar10 = strcasecmp(pcVar9,"to")" (identifier "iVar10") (= "=") (call_expression "strcasecmp(pcVar9,"to")" (identifier "strcasecmp") (argument_list "(pcVar9,"to")" (( "(") (identifier "pcVar9") (, ",") (string_literal ""to"" (" """) (string_content "to") (" """)) () ")")))) (; ";")) (if_statement "if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }" (if "if") (parenthesized_expression "((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0))" (( "(") (binary_expression "(iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)" (( "(") (comma_expression "iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0" (assignment_expression "iVar10 = strcasecmp(pcVar9,"from")" (identifier "iVar10") (= "=") (call_expression "strcasecmp(pcVar9,"from")" (identifier "strcasecmp") (argument_list "(pcVar9,"from")" (( "(") (identifier "pcVar9") (, ",") (string_literal ""from"" (" """) (string_content "from") (" """)) () ")")))) (, ",") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      piVar1 = (int *)(iVar6 + 0x10);\n      *piVar1 = *piVar1 + -1;\n      if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }\n      FUN_000660d0(&DAT_0009269c);\n      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);\n      FUN_00066470(uVar11);\n      pcVar9 = *(char **)(iVar6 + 8);\n    }" ({ "{") (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar1 == 0) {\n        FUN_000668b0(iVar6);\n      }" (if "if") (parenthesized_expression "(*piVar1 == 0)" (( "(") (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_000668b0(iVar6);\n      }" ({ "{") (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" (identifier "FUN_000668b0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000660d0(&DAT_0009269c);" (call_expression "FUN_000660d0(&DAT_0009269c)" (identifier "FUN_000660d0") (argument_list "(&DAT_0009269c)" (( "(") (pointer_expression "&DAT_0009269c" (& "&") (identifier "DAT_0009269c")) () ")"))) (; ";")) (expression_statement "uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);" (assignment_expression "uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5)" (identifier "uVar11") (= "=") (call_expression "dcgettext(0,"close: second argument must be `to\' or `from\'",5)" (identifier "dcgettext") (argument_list "(0,"close: second argument must be `to\' or `from\'",5)" (( "(") (number_literal "0") (, ",") (string_literal ""close: second argument must be `to\' or `from\'"" (" """) (string_content "close: second argument must be `to") (escape_sequence "\'") (string_content " or `from") (escape_sequence "\'") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" (identifier "FUN_00066470") (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "pcVar9 = *(char **)(iVar6 + 8);" (assignment_expression "pcVar9 = *(char **)(iVar6 + 8)" (identifier "pcVar9") (= "=") (pointer_expression "*(char **)(iVar6 + 8)" (* "*") (cast_expression "(char **)(iVar6 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;" (assignment_expression "pcVar9[*(int *)(iVar6 + 0xc)] = cVar3" (subscript_expression "pcVar9[*(int *)(iVar6 + 0xc)]" (identifier "pcVar9") ([ "[") (pointer_expression "*(int *)(iVar6 + 0xc)" (* "*") (cast_expression "(int *)(iVar6 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (] "]")) (= "=") (identifier "cVar3")) (; ";")) (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar1 == 0) {\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }\n    else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" (if "if") (parenthesized_expression "(*piVar1 == 0)" (( "(") (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000668b0(iVar6);\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" ({ "{") (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" (identifier "FUN_000668b0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" (identifier "iVar6") (= "=") (pointer_expression "*DAT_000c13c8" (* "*") (identifier "DAT_000c13c8"))) (; ";")) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (= "=") (binary_expression "DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar6 + 0x28)" (* "*") (cast_expression "(int *)(iVar6 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x28)" (( "(") (binary_expression "iVar6 + 0x28" (identifier "iVar6") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" (else "else") (compound_statement "{\n      iVar6 = *DAT_000c13c8;\n      DAT_000c13c8 = DAT_000c13c8 + -1;\n      iVar10 = *(int *)(iVar6 + 0x28);\n    }" ({ "{") (expression_statement "iVar6 = *DAT_000c13c8;" (assignment_expression "iVar6 = *DAT_000c13c8" (identifier "iVar6") (= "=") (pointer_expression "*DAT_000c13c8" (* "*") (identifier "DAT_000c13c8"))) (; ";")) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (= "=") (binary_expression "DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar6 + 0x28);" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x28)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar6 + 0x28)" (* "*") (cast_expression "(int *)(iVar6 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x28)" (( "(") (binary_expression "iVar6 + 0x28" (identifier "iVar6") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar8 = DAT_000c4994;" (assignment_expression "iVar8 = DAT_000c4994" (identifier "iVar8") (= "=") (identifier "DAT_000c4994")) (; ";")) (expression_statement "puVar5 = PTR_DAT_000bf8f0;" (assignment_expression "puVar5 = PTR_DAT_000bf8f0" (identifier "puVar5") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";")) (if_statement "if (iVar10 == 5) {\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }\n  else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" (if "if") (parenthesized_expression "(iVar10 == 5)" (( "(") (binary_expression "iVar10 == 5" (identifier "iVar10") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n    FUN_000660d0("awk.h");\n    FUN_00018020(iVar6);\n    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00066470(uVar11);\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" ({ "{") (expression_statement "FUN_000660d0("awk.h");" (call_expression "FUN_000660d0("awk.h")" (identifier "FUN_000660d0") (argument_list "("awk.h")" (( "(") (string_literal ""awk.h"" (" """) (string_content "awk.h") (" """)) () ")"))) (; ";")) (expression_statement "FUN_00018020(iVar6);" (call_expression "FUN_00018020(iVar6)" (identifier "FUN_00018020") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar11") (= "=") (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use array `%s\' in a scalar context"" (" """) (string_content "attempt to use array `%s") (escape_sequence "\'") (string_content " in a scalar context") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar11);" (call_expression "FUN_00066470(uVar11)" (identifier "FUN_00066470") (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "bVar2 = *(byte *)(iVar6 + 0x2c);" (assignment_expression "bVar2 = *(byte *)(iVar6 + 0x2c)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar6 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar6 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2c)" (( "(") (binary_expression "iVar6 + 0x2c" (identifier "iVar6") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" (else "else") (compound_statement "{\n    bVar2 = *(byte *)(iVar6 + 0x2c);\n  }" ({ "{") (expression_statement "bVar2 = *(byte *)(iVar6 + 0x2c);" (assignment_expression "bVar2 = *(byte *)(iVar6 + 0x2c)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar6 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar6 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2c)" (( "(") (binary_expression "iVar6 + 0x2c" (identifier "iVar6") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }" (if "if") (parenthesized_expression "(((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))))" (( "(") (binary_expression "((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))" (( "(") (parenthesized_expression "(*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1))" (( "(") (binary_expression "*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)" (binary_expression "*(int *)(iVar6 + 0x14) != iVar8" (pointer_expression "*(int *)(iVar6 + 0x14)" (* "*") (cast_expression "(int *)(iVar6 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (identifier "iVar8")) (&& "&&") (parenthesized_expression "(*(int *)(iVar6 + 0x14) != -1)" (( "(") (binary_expression "*(int *)(iVar6 + 0x14) != -1" (pointer_expression "*(int *)(iVar6 + 0x14)" (* "*") (cast_expression "(int *)(iVar6 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);\n  }" ({ "{") (expression_statement "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);" (assignment_expression "iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(puVar5,iVar8,iVar6)" (( "(") (identifier "puVar5") (, ",") (identifier "iVar8") (, ",") (identifier "iVar6") () ")")))) (; ";")) (} "}"))) (if_statement "if (DAT_000c3748 != 0) {\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }" (if "if") (parenthesized_expression "(DAT_000c3748 != 0)" (( "(") (binary_expression "DAT_000c3748 != 0" (identifier "DAT_000c3748") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __n = *(size_t *)(iVar6 + 0xc);\n    iVar10 = DAT_000c3748;\n    do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);\n  }" ({ "{") (expression_statement "__n = *(size_t *)(iVar6 + 0xc);" (assignment_expression "__n = *(size_t *)(iVar6 + 0xc)" (identifier "__n") (= "=") (pointer_expression "*(size_t *)(iVar6 + 0xc)" (* "*") (cast_expression "(size_t *)(iVar6 + 0xc)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar10 = DAT_000c3748;" (assignment_expression "iVar10 = DAT_000c3748" (identifier "iVar10") (= "=") (identifier "DAT_000c3748")) (; ";")) (do_statement "do {\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    } while (iVar10 != 0);" (do "do") (compound_statement "{\n      pcVar9 = *(char **)(iVar10 + 4);\n      sVar7 = strlen(pcVar9);\n      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }\n      iVar10 = *(int *)(iVar10 + 0x1c);\n    }" ({ "{") (expression_statement "pcVar9 = *(char **)(iVar10 + 4);" (assignment_expression "pcVar9 = *(char **)(iVar10 + 4)" (identifier "pcVar9") (= "=") (pointer_expression "*(char **)(iVar10 + 4)" (* "*") (cast_expression "(char **)(iVar10 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + 4)" (( "(") (binary_expression "iVar10 + 4" (identifier "iVar10") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "sVar7 = strlen(pcVar9);" (assignment_expression "sVar7 = strlen(pcVar9)" (identifier "sVar7") (= "=") (call_expression "strlen(pcVar9)" (identifier "strlen") (argument_list "(pcVar9)" (( "(") (identifier "pcVar9") () ")")))) (; ";")) (if_statement "if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }" (if "if") (parenthesized_expression "((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0))" (( "(") (binary_expression "(sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)" (parenthesized_expression "(sVar7 == __n)" (( "(") (binary_expression "sVar7 == __n" (identifier "sVar7") (== "==") (identifier "__n")) () ")")) (&& "&&") (parenthesized_expression "(iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)" (( "(") (comma_expression "iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0" (assignment_expression "iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n)" (identifier "iVar8") (= "=") (call_expression "memcmp(pcVar9,*(void **)(iVar6 + 8),__n)" (identifier "memcmp") (argument_list "(pcVar9,*(void **)(iVar6 + 8),__n)" (( "(") (identifier "pcVar9") (, ",") (pointer_expression "*(void **)(iVar6 + 8)" (* "*") (cast_expression "(void **)(iVar6 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "__n") () ")")))) (, ",") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        piVar1 = (int *)(iVar6 + 0x10);\n        *piVar1 = *piVar1 + -1;\n        if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }\n        fflush(*(FILE **)PTR_stdout_000befc8);\n        puVar5 = PTR_FUN_000bf94c;\n        iVar6 = FUN_00060820();\n        iVar6 = (*(code *)puVar5)((double)iVar6);\n        if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }\n        return;\n      }" ({ "{") (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar1 == 0) {\n          FUN_000668b0(iVar6);\n        }" (if "if") (parenthesized_expression "(*piVar1 == 0)" (( "(") (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000668b0(iVar6);\n        }" ({ "{") (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" (identifier "FUN_000668b0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "fflush(*(FILE **)PTR_stdout_000befc8);" (call_expression "fflush(*(FILE **)PTR_stdout_000befc8)" (identifier "fflush") (argument_list "(*(FILE **)PTR_stdout_000befc8)" (( "(") (pointer_expression "*(FILE **)PTR_stdout_000befc8" (* "*") (cast_expression "(FILE **)PTR_stdout_000befc8" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stdout_000befc8"))) () ")"))) (; ";")) (expression_statement "puVar5 = PTR_FUN_000bf94c;" (assignment_expression "puVar5 = PTR_FUN_000bf94c" (identifier "puVar5") (= "=") (identifier "PTR_FUN_000bf94c")) (; ";")) (expression_statement "iVar6 = FUN_00060820();" (assignment_expression "iVar6 = FUN_00060820()" (identifier "iVar6") (= "=") (call_expression "FUN_00060820()" (identifier "FUN_00060820") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar6 = (*(code *)puVar5)((double)iVar6);" (assignment_expression "iVar6 = (*(code *)puVar5)((double)iVar6)" (identifier "iVar6") (= "=") (call_expression "(*(code *)puVar5)((double)iVar6)" (parenthesized_expression "(*(code *)puVar5)" (( "(") (pointer_expression "*(code *)puVar5" (* "*") (cast_expression "(code *)puVar5" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) () ")")) (argument_list "((double)iVar6)" (( "(") (cast_expression "(double)iVar6" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar6")) () ")")))) (; ";")) (if_statement "if ((_DAT_000c3760 & 0x20) != 0) {\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }" (if "if") (parenthesized_expression "((_DAT_000c3760 & 0x20) != 0)" (( "(") (binary_expression "(_DAT_000c3760 & 0x20) != 0" (parenthesized_expression "(_DAT_000c3760 & 0x20)" (( "(") (binary_expression "_DAT_000c3760 & 0x20" (identifier "_DAT_000c3760") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }\n          (*(code *)PTR_FUN_000bf94c)(0,0);\n        }" ({ "{") (if_statement "if ((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {\n            FUN_000668b0(iVar6);\n          }" (if "if") (parenthesized_expression "((iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1))" (( "(") (binary_expression "(iVar6 != 0) &&\n             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)" (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)" (( "(") (comma_expression "iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1" (assignment_expression "iVar10 = *(int *)(iVar6 + 0x10) + -1" (identifier "iVar10") (= "=") (binary_expression "*(int *)(iVar6 + 0x10) + -1" (pointer_expression "*(int *)(iVar6 + 0x10)" (* "*") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (, ",") (comma_expression "*(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1" (assignment_expression "*(int *)(iVar6 + 0x10) = iVar10" (pointer_expression "*(int *)(iVar6 + 0x10)" (* "*") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar10")) (, ",") (binary_expression "iVar10 < 1" (identifier "iVar10") (< "<") (number_literal "1")))) () ")"))) () ")")) (compound_statement "{\n            FUN_000668b0(iVar6);\n          }" ({ "{") (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" (identifier "FUN_000668b0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_FUN_000bf94c)(0,0);" (call_expression "(*(code *)PTR_FUN_000bf94c)(0,0)" (parenthesized_expression "(*(code *)PTR_FUN_000bf94c)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf94c" (* "*") (cast_expression "(code *)PTR_FUN_000bf94c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf94c"))) () ")")) (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar10 = *(int *)(iVar10 + 0x1c);" (assignment_expression "iVar10 = *(int *)(iVar10 + 0x1c)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar10 + 0x1c)" (* "*") (cast_expression "(int *)(iVar10 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x1c)" (( "(") (binary_expression "iVar10 + 0x1c" (identifier "iVar10") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if ((_DAT_000c3760 & 5) != 0) {\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }" (if "if") (parenthesized_expression "((_DAT_000c3760 & 5) != 0)" (( "(") (binary_expression "(_DAT_000c3760 & 5) != 0" (parenthesized_expression "(_DAT_000c3760 & 5)" (( "(") (binary_expression "_DAT_000c3760 & 5" (identifier "_DAT_000c3760") (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000660d0(&DAT_0009269c,0x4c5);\n    puVar5 = PTR_FUN_000bf8e8;\n    uVar11 = *(undefined4 *)(iVar6 + 8);\n    uVar4 = *(undefined4 *)(iVar6 + 0xc);\n    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);\n    (*(code *)puVar5)(uVar12,uVar4,uVar11);\n  }" ({ "{") (expression_statement "FUN_000660d0(&DAT_0009269c,0x4c5);" (call_expression "FUN_000660d0(&DAT_0009269c,0x4c5)" (identifier "FUN_000660d0") (argument_list "(&DAT_0009269c,0x4c5)" (( "(") (pointer_expression "&DAT_0009269c" (& "&") (identifier "DAT_0009269c")) (, ",") (number_literal "0x4c5") () ")"))) (; ";")) (expression_statement "puVar5 = PTR_FUN_000bf8e8;" (assignment_expression "puVar5 = PTR_FUN_000bf8e8" (identifier "puVar5") (= "=") (identifier "PTR_FUN_000bf8e8")) (; ";")) (expression_statement "uVar11 = *(undefined4 *)(iVar6 + 8);" (assignment_expression "uVar11 = *(undefined4 *)(iVar6 + 8)" (identifier "uVar11") (= "=") (pointer_expression "*(undefined4 *)(iVar6 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(iVar6 + 0xc);" (assignment_expression "uVar4 = *(undefined4 *)(iVar6 + 0xc)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);" (assignment_expression "uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" (identifier "uVar12") (= "=") (call_expression "dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" (identifier "dcgettext") (argument_list "(0,"close: `%.*s\' is not an open file, pipe or co-process",5)" (( "(") (number_literal "0") (, ",") (string_literal ""close: `%.*s\' is not an open file, pipe or co-process"" (" """) (string_content "close: `%.*s") (escape_sequence "\'") (string_content " is not an open file, pipe or co-process") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "(*(code *)puVar5)(uVar12,uVar4,uVar11);" (call_expression "(*(code *)puVar5)(uVar12,uVar4,uVar11)" (parenthesized_expression "(*(code *)puVar5)" (( "(") (pointer_expression "*(code *)puVar5" (* "*") (cast_expression "(code *)puVar5" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) () ")")) (argument_list "(uVar12,uVar4,uVar11)" (( "(") (identifier "uVar12") (, ",") (identifier "uVar4") (, ",") (identifier "uVar11") () ")"))) (; ";")) (} "}"))) (if_statement "if ((_DAT_000c3760 & 0x10) == 0) {\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }\n  else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" (if "if") (parenthesized_expression "((_DAT_000c3760 & 0x10) == 0)" (( "(") (binary_expression "(_DAT_000c3760 & 0x10) == 0" (parenthesized_expression "(_DAT_000c3760 & 0x10)" (( "(") (binary_expression "_DAT_000c3760 & 0x10" (identifier "_DAT_000c3760") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = dcgettext(0,"close of redirection that was never opened",5);\n    FUN_000490e0(uVar11);\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" ({ "{") (expression_statement "uVar11 = dcgettext(0,"close of redirection that was never opened",5);" (assignment_expression "uVar11 = dcgettext(0,"close of redirection that was never opened",5)" (identifier "uVar11") (= "=") (call_expression "dcgettext(0,"close of redirection that was never opened",5)" (identifier "dcgettext") (argument_list "(0,"close of redirection that was never opened",5)" (( "(") (number_literal "0") (, ",") (string_literal ""close of redirection that was never opened"" (" """) (string_content "close of redirection that was never opened") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_000490e0(uVar11);" (call_expression "FUN_000490e0(uVar11)" (identifier "FUN_000490e0") (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *piVar1;" (assignment_expression "iVar10 = *piVar1" (identifier "iVar10") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (} "}")) (else_clause "else {\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" (else "else") (compound_statement "{\n    piVar1 = (int *)(iVar6 + 0x10);\n    *piVar1 = *piVar1 + -1;\n    iVar10 = *piVar1;\n  }" ({ "{") (expression_statement "piVar1 = (int *)(iVar6 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar6 + 0x10)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *piVar1;" (assignment_expression "iVar10 = *piVar1" (identifier "iVar10") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (} "}")))) (if_statement "if (iVar10 == 0) {\n    FUN_000668b0(iVar6);\n  }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000668b0(iVar6);\n  }" ({ "{") (expression_statement "FUN_000668b0(iVar6);" (call_expression "FUN_000668b0(iVar6)" (identifier "FUN_000668b0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_FUN_000bf94c)(0,0xbff00000);" (call_expression "(*(code *)PTR_FUN_000bf94c)(0,0xbff00000)" (parenthesized_expression "(*(code *)PTR_FUN_000bf94c)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf94c" (* "*") (cast_expression "(code *)PTR_FUN_000bf94c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf94c"))) () ")")) (argument_list "(0,0xbff00000)" (( "(") (number_literal "0") (, ",") (number_literal "0xbff00000") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

type_1 * function_1(int var_2)

{
  char **ppcVar1;
  type_2 var_23;
  type_3 var_13;
  char cVar4;
  size_t var_17;
  size_t var_9;
  type_4 *p_Var6;
  type_5 *p_Var7;
  type_6 var_3;
  type_1 *var_22;
  size_t var_16;
  int var_10;
  char *pcVar12;
  char *var_26;
  type_7 *var_24;
  type_8 local_28;
  
  var_10 = CONVFMTidx;
  var_26 = CONVFMT;
  local_28 = CLOSE_ALL;
  var_22 = var_1->rptr;
  var_1 = var_1 + -1;
  var_3 = var_22->type;
  if (var_2 == 2) {
    if (var_3 == var_4) {
      var_5("awk.h",0x72b);
      var_6(var_22);
      pcVar12 = (char *)var_7(0,"attempt to use array `%s\' in a scalar context",5);
      var_8(pcVar12);
    }
    if (((var_22->flags & 4) == 0) ||
       ((var_9 = (var_22->sub).nodep.reserved, var_9 != var_10 && (var_9 != 0xffffffff)))) {
      var_22 = (*format_val)(var_26,var_10,var_22);
    }
    var_26 = (var_22->sub).val.sp + (var_22->sub).val.slen;
    cVar4 = *var_26;
    *var_26 = '\0';
    var_26 = (var_22->sub).val.sp;
    var_10 = var_11(var_26,"to");
    local_28 = CLOSE_TO;
    if (var_10 != 0) {
      var_10 = var_11(var_26,"from");
      local_28 = CLOSE_FROM;
      if (var_10 != 0) {
        ppcVar1 = &(var_22->sub).nodep.name;
        *ppcVar1 = *ppcVar1 + -1;
        if (*ppcVar1 == (char *)0x0) {
          var_12(var_22);
        }
        var_5("io.c",0x4b3);
        var_26 = (char *)var_7(0,"close: second argument must be `to\' or `from\'",5);
        var_8(var_26);
        var_26 = (var_22->sub).val.sp;
        local_28 = CLOSE_ALL;
      }
    }
    var_26[(var_22->sub).val.slen] = cVar4;
    ppcVar1 = &(var_22->sub).nodep.name;
    *ppcVar1 = *ppcVar1 + -1;
    if (*ppcVar1 == (char *)0x0) {
      var_12(var_22);
      var_22 = var_1->rptr;
      var_1 = var_1 + -1;
      var_3 = var_22->type;
    }
    else {
      var_22 = var_1->rptr;
      var_1 = var_1 + -1;
      var_3 = var_22->type;
    }
  }
  var_10 = CONVFMTidx;
  var_26 = CONVFMT;
  if (var_3 == var_4) {
    var_5("awk.h",0x72b);
    var_6(var_22);
    pcVar12 = (char *)var_7(0,"attempt to use array `%s\' in a scalar context",5);
    var_8(pcVar12);
    var_13 = (type_3)var_22->flags;
  }
  else {
    var_13 = (type_3)var_22->flags;
  }
  if (((var_13 & 4) == 0) ||
     ((var_9 = (var_22->sub).nodep.reserved, var_9 != var_10 && (var_9 != 0xffffffff)))) {
    var_22 = (*format_val)(var_26,var_10,var_22);
  }
  if (var_14 != (type_7 *)0x0) {
    var_17 = (var_22->sub).val.slen;
    var_24 = var_14;
    do {
      var_26 = var_24->value;
      var_16 = var_15(var_26);
      if ((var_16 == var_17) && (var_10 = var_18(var_26,(var_22->sub).val.sp,var_17), var_10 == 0)) {
        ppcVar1 = &(var_22->sub).nodep.name;
        *ppcVar1 = *ppcVar1 + -1;
        if (*ppcVar1 == (char *)0x0) {
          var_12(var_22);
        }
        var_19(*(type_9 **)PTR_stdout_000befc8);
        p_Var7 = make_number;
        var_10 = var_20(var_24,false,local_28);
        var_22 = (*p_Var7)((double)var_10);
        if ((var_21 & 0x20U) != 0) {
          if ((var_22 != (type_1 *)0x0) &&
             (var_23 = (var_22->sub).val.sref + L'\xffffffff', (var_22->sub).val.sref = var_23,
             var_23 < L'\x01')) {
            var_12(var_22);
          }
          var_22 = (*make_number)(0.0);
        }
        return var_22;
      }
      var_24 = var_24->next;
    } while (var_24 != (type_7 *)0x0);
  }
  if ((var_21 & 5U) != 0) {
    var_5("io.c",0x4c5);
    p_Var6 = lintfunc;
    var_26 = (char *)var_7(0,"close: `%.*s\' is not an open file, pipe or co-process",5);
    (*p_Var6)(var_26);
  }
  if ((var_21 & 0x10U) == 0) {
    var_26 = (char *)var_7(0,"close of redirection that was never opened",5);
    var_25(var_26);
    ppcVar1 = &(var_22->sub).nodep.name;
    *ppcVar1 = *ppcVar1 + -1;
    var_26 = *ppcVar1;
  }
  else {
    ppcVar1 = &(var_22->sub).nodep.name;
    *ppcVar1 = *ppcVar1 + -1;
    var_26 = *ppcVar1;
  }
  if (var_26 == (char *)0x0) {
    var_12(var_22);
  }
  var_22 = (*make_number)(-1.0);
  return var_22;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void MASKED(int param_1)

{
  int *piVar1;
  byte bVar2;
  char cVar3;
  size_t __n;
  undefined4 uVar4;
  undefined *puVar5;
  int iVar6;
  size_t sVar7;
  int iVar8;
  char *pcVar9;
  int iVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  
  iVar8 = DAT_000c4994;
  puVar5 = PTR_DAT_000bf8f0;
  iVar6 = *DAT_000c13c8;
  DAT_000c13c8 = DAT_000c13c8 + -1;
  iVar10 = *(int *)(iVar6 + 0x28);
  if (param_1 == 2) {
    if (iVar10 == 5) {
      FUN_000660d0("awk.h");
      FUN_00018020(iVar6);
      uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      FUN_00066470(uVar11);
    }
    if (((*(byte *)(iVar6 + 0x2c) & 4) == 0) ||
       ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {
      iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);
    }
    pcVar9 = (char *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 8));
    cVar3 = *pcVar9;
    *pcVar9 = '\0';
    pcVar9 = *(char **)(iVar6 + 8);
    iVar10 = strcasecmp(pcVar9,"to");
    if ((iVar10 != 0) && (iVar10 = strcasecmp(pcVar9,"from"), iVar10 != 0)) {
      piVar1 = (int *)(iVar6 + 0x10);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        FUN_000668b0(iVar6);
      }
      FUN_000660d0(&DAT_0009269c);
      uVar11 = dcgettext(0,"close: second argument must be `to\' or `from\'",5);
      FUN_00066470(uVar11);
      pcVar9 = *(char **)(iVar6 + 8);
    }
    pcVar9[*(int *)(iVar6 + 0xc)] = cVar3;
    piVar1 = (int *)(iVar6 + 0x10);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      FUN_000668b0(iVar6);
      iVar6 = *DAT_000c13c8;
      DAT_000c13c8 = DAT_000c13c8 + -1;
      iVar10 = *(int *)(iVar6 + 0x28);
    }
    else {
      iVar6 = *DAT_000c13c8;
      DAT_000c13c8 = DAT_000c13c8 + -1;
      iVar10 = *(int *)(iVar6 + 0x28);
    }
  }
  iVar8 = DAT_000c4994;
  puVar5 = PTR_DAT_000bf8f0;
  if (iVar10 == 5) {
    FUN_000660d0("awk.h");
    FUN_00018020(iVar6);
    uVar11 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
    FUN_00066470(uVar11);
    bVar2 = *(byte *)(iVar6 + 0x2c);
  }
  else {
    bVar2 = *(byte *)(iVar6 + 0x2c);
  }
  if (((bVar2 & 4) == 0) || ((*(int *)(iVar6 + 0x14) != iVar8 && (*(int *)(iVar6 + 0x14) != -1)))) {
    iVar6 = (*(code *)PTR_FUN_000bf944)(puVar5,iVar8,iVar6);
  }
  if (DAT_000c3748 != 0) {
    __n = *(size_t *)(iVar6 + 0xc);
    iVar10 = DAT_000c3748;
    do {
      pcVar9 = *(char **)(iVar10 + 4);
      sVar7 = strlen(pcVar9);
      if ((sVar7 == __n) && (iVar8 = memcmp(pcVar9,*(void **)(iVar6 + 8),__n), iVar8 == 0)) {
        piVar1 = (int *)(iVar6 + 0x10);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          FUN_000668b0(iVar6);
        }
        fflush(*(FILE **)PTR_stdout_000befc8);
        puVar5 = PTR_FUN_000bf94c;
        iVar6 = FUN_00060820();
        iVar6 = (*(code *)puVar5)((double)iVar6);
        if ((_DAT_000c3760 & 0x20) != 0) {
          if ((iVar6 != 0) &&
             (iVar10 = *(int *)(iVar6 + 0x10) + -1, *(int *)(iVar6 + 0x10) = iVar10, iVar10 < 1)) {
            FUN_000668b0(iVar6);
          }
          (*(code *)PTR_FUN_000bf94c)(0,0);
        }
        return;
      }
      iVar10 = *(int *)(iVar10 + 0x1c);
    } while (iVar10 != 0);
  }
  if ((_DAT_000c3760 & 5) != 0) {
    FUN_000660d0(&DAT_0009269c,0x4c5);
    puVar5 = PTR_FUN_000bf8e8;
    uVar11 = *(undefined4 *)(iVar6 + 8);
    uVar4 = *(undefined4 *)(iVar6 + 0xc);
    uVar12 = dcgettext(0,"close: `%.*s\' is not an open file, pipe or co-process",5);
    (*(code *)puVar5)(uVar12,uVar4,uVar11);
  }
  if ((_DAT_000c3760 & 0x10) == 0) {
    uVar11 = dcgettext(0,"close of redirection that was never opened",5);
    FUN_000490e0(uVar11);
    piVar1 = (int *)(iVar6 + 0x10);
    *piVar1 = *piVar1 + -1;
    iVar10 = *piVar1;
  }
  else {
    piVar1 = (int *)(iVar6 + 0x10);
    *piVar1 = *piVar1 + -1;
    iVar10 = *piVar1;
  }
  if (iVar10 == 0) {
    FUN_000668b0(iVar6);
  }
  (*(code *)PTR_FUN_000bf94c)(0,0xbff00000);
  return;
}

