
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

char * __regparm3 process_substitute(char *string,int open_for_read_in_child)

{
  uint __fd;
  pid_t pVar1;
  pid_t pVar2;
  int iVar3;
  int __fd_00;
  char *__ptr;
  char *pcVar4;
  pid_t *ppVar5;
  pid_t pVar6;
  undefined4 uVar7;
  uint __fd2;
  int iVar8;
  int in_GS_OFFSET;
  int fildes [2];
  char intbuf [12];
  
  iVar8 = *(int *)(in_GS_OFFSET + 0x14);
  if (((string != (char *)0x0) && (*string != '\0')) && (wordexp_only == 0)) {
    iVar3 = pipe(fildes);
    if (iVar3 < 0) {
      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);
      sys_error("%s",uVar7);
    }
    else {
      __fd = fildes[1 - open_for_read_in_child];
      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);
      __ptr = (char *)xmalloc(0x11);
      builtin_strncpy(__ptr,"/dev/fd/",9);
      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);
      strcpy(__ptr + 8,pcVar4);
      ppVar5 = dev_fd_list;
      iVar3 = totfds;
      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {
        totfds = getdtablesize();
        if (0x100 < (uint)totfds) {
          totfds = 0x100;
        }
        if (totfds <= __fd_00) {
          totfds = __fd_00 + 2;
        }
        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);
        dev_fd_list = ppVar5;
        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);
      }
      ppVar5[__fd_00] = 1;
      pVar2 = pipeline_pgrp;
      pVar1 = last_made_pid;
      nfds = nfds + 1;
      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {
        pipeline_pgrp = shell_pgrp;
      }
      save_pipeline(1);
      pVar6 = make_child((char *)0x0,1);
      if (pVar6 == 0) {
        reset_terminating_signals();
        free_pushed_string_input();
        restore_original_signals();
        if (terminating_signal != 0) {
          termsig_handler(terminating_signal);
        }
        if (interrupt_state != 0) {
          throw_to_top_level();
        }
        setup_async_signals();
        subshell_environment = subshell_environment | 0x24;
        change_flag(0x76,0x2b);
        if (expanding_redir != 0) {
          flush_temporary_env();
        }
      }
      set_sigchld_handler();
      stop_making_children();
      pipeline_pgrp = pVar2;
      if (-1 < pVar6) {
        if (pVar6 == 0) {
          set_sigint_handler();
          set_job_control(0);
          if (pipeline_pgrp != shell_pgrp) {
            pipeline_pgrp = getpid();
          }
          if (open_for_read_in_child == 0) {
            fpurge(*(FILE **)PTR_stdout_00171f70);
          }
          __fd2 = (uint)(open_for_read_in_child == 0);
          iVar8 = dup2(__fd,__fd2);
          if (-1 < iVar8) {
            if (__fd2 != __fd) {
              close(__fd);
            }
            if (current_fds_to_close != (fd_bitmap *)0x0) {
              close_fd_bitmap(current_fds_to_close);
              current_fds_to_close = (fd_bitmap *)0x0;
            }
            close(__fd_00);
            dev_fd_list[__fd_00] = 0;
            expanding_redir = 0;
            remove_quoted_escapes(string);
            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);
            if (iVar8 == 0) {
              if ((return_catch_flag == 0) ||
                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),
                 iVar3 = return_catch_value, iVar8 == 0)) {
                subshell_level = subshell_level + 1;
                iVar3 = parse_and_execute(string,"process substitution",5);
              }
            }
            else {
              iVar3 = last_command_exit_value;
              if ((iVar8 != 4) && (iVar8 != 3)) {
                iVar3 = 1;
              }
            }
            last_command_exit_value = iVar3;
            iVar8 = run_exit_trap();
                    /* WARNING: Subroutine does not return */
            exit(iVar8);
          }
          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);
          sys_error(pcVar4,__ptr,__fd2);
                    /* WARNING: Subroutine does not return */
          exit(0x7f);
        }
        if (last_procsub_child != (PROCESS *)0x0) {
          discard_last_procsub_child();
        }
        last_procsub_child = restore_pipeline(0);
        dev_fd_list[__fd_00] = pVar6;
        last_made_pid = pVar1;
        close_pgrp_pipe();
        close(__fd);
        goto LAB_000789cf;
      }
      uVar7 = dcgettext(0,"cannot make child for process substitution",5);
      sys_error("%s",uVar7);
      free(__ptr);
      close(__fd_00);
      close(__fd);
      restore_pipeline(1);
    }
  }
  __ptr = (char *)0x0;
LAB_000789cf:
  if (iVar8 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return __ptr;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)

{
  uint __fd;
  int iVar1;
  int __fd_00;
  undefined4 *__ptr;
  char *__src;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  int in_GS_OFFSET;
  uint local_34 [2];
  undefined1 local_2c [12];
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {
    iVar1 = pipe((int *)local_34);
    if (iVar1 < 0) {
      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);
      sys_error(&DAT_00125693,uVar4);
    }
    else {
      __fd = local_34[1 - param_2];
      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);
      __ptr = (undefined4 *)xmalloc(0x11);
      *__ptr = 0x7665642f;
      __ptr[1] = 0x2f64662f;
      *(undefined1 *)(__ptr + 2) = 0;
      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);
      strcpy((char *)(__ptr + 2),__src);
      iVar1 = DAT_00179060;
      uVar3 = DAT_00179058;
      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {
        DAT_00179058 = getdtablesize();
        if (0x100 < DAT_00179058) {
          DAT_00179058 = 0x100;
        }
        if ((int)DAT_00179058 <= __fd_00) {
          DAT_00179058 = __fd_00 + 2;
        }
        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);
        DAT_00179060 = iVar1;
        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);
      }
      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;
      iVar1 = pipeline_pgrp;
      uVar4 = last_made_pid;
      DAT_0017905c = DAT_0017905c + 1;
      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {
        pipeline_pgrp = shell_pgrp;
      }
      save_pipeline(1);
      iVar2 = make_child(0,1);
      if (iVar2 == 0) {
        reset_terminating_signals();
        free_pushed_string_input();
        restore_original_signals();
        if (terminating_signal != 0) {
          termsig_handler(terminating_signal);
        }
        if (interrupt_state != 0) {
          throw_to_top_level();
        }
        setup_async_signals();
        subshell_environment = subshell_environment | 0x24;
        change_flag(0x76,0x2b);
        if (expanding_redir != 0) {
          flush_temporary_env();
        }
      }
      set_sigchld_handler();
      stop_making_children();
      pipeline_pgrp = iVar1;
      if (-1 < iVar2) {
        if (iVar2 == 0) {
          set_sigint_handler();
          set_job_control(0);
          if (pipeline_pgrp != shell_pgrp) {
            pipeline_pgrp = getpid();
          }
          if (param_2 == 0) {
            fpurge(*(undefined4 *)PTR_stdout_00171f70);
          }
          uVar3 = (uint)(param_2 == 0);
          iVar1 = dup2(__fd,uVar3);
          if (-1 < iVar1) {
            if (uVar3 != __fd) {
              close(__fd);
            }
            if (current_fds_to_close != 0) {
              close_fd_bitmap(current_fds_to_close);
              current_fds_to_close = 0;
            }
            close(__fd_00);
            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;
            expanding_redir = 0;
            FUN_00078660();
            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);
            if (iVar1 == 0) {
              if ((return_catch_flag == 0) ||
                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),
                 uVar4 = return_catch_value, iVar1 == 0)) {
                subshell_level = subshell_level + 1;
                uVar4 = parse_and_execute(param_1,"process substitution",5);
              }
            }
            else {
              uVar4 = last_command_exit_value;
              if ((iVar1 != 4) && (iVar1 != 3)) {
                uVar4 = 1;
              }
            }
            last_command_exit_value = uVar4;
            iVar1 = run_exit_trap();
                    /* WARNING: Subroutine does not return */
            exit(iVar1);
          }
          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);
          sys_error(uVar4,__ptr,uVar3);
                    /* WARNING: Subroutine does not return */
          exit(0x7f);
        }
        if (last_procsub_child != 0) {
          discard_last_procsub_child();
        }
        last_procsub_child = restore_pipeline(0);
        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;
        last_made_pid = uVar4;
        close_pgrp_pipe();
        close(__fd);
        goto LAB_000789cf;
      }
      uVar4 = dcgettext(0,"cannot make child for process substitution",5);
      sys_error(&DAT_00125693,uVar4);
      free(__ptr);
      close(__fd_00);
      close(__fd);
      restore_pipeline(1);
    }
  }
  __ptr = (undefined4 *)0x0;
LAB_000789cf:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0010f8b0();
  }
  return __ptr;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x00032a5d
ADD ESI,0xf9958
PUSH EBX
SUB ESP,0x5c
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESP + 0x8],ESI
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x4c],ECX
XOR ECX,ECX
TEST EAX,EAX
JZ 0x000789cd
CMP byte ptr [EAX],0x0
JZ 0x000789cd
LEA EAX,[ESI + 0x4818]
MOV EDI,dword ptr [EAX]
TEST EDI,EDI
JNZ 0x000789cd
SUB ESP,0xc
MOV EBX,ESI
MOV EDI,EDX
LEA EAX,[ESP + 0x44]
PUSH EAX
CALL 0x0002e9a0
ADD ESP,0x10
TEST EAX,EAX
JS 0x000789a8
MOV EAX,0x1
SUB EAX,EDI
MOV EAX,dword ptr [ESP + EAX*0x4 + 0x38]
SUB ESP,0x4
MOV dword ptr [ESP + 0x18],EAX
PUSH 0x40
PUSH 0x1
PUSH dword ptr [ESP + EDI*0x4 + 0x44]
MOV ESI,dword ptr [ESP + 0x18]
MOV EBX,ESI
CALL 0x00042170
MOV dword ptr [ESP + 0x18],ESI
MOV EBP,EAX
MOV dword ptr [ESP],0x11
CALL 0x000ad700
ADD ESP,0x10
MOV dword ptr [EAX],0x7665642f
MOV ESI,EAX
MOV dword ptr [EAX + 0x4],0x2f64662f
MOV byte ptr [EAX + 0x8],0x0
PUSH 0xc
LEA EAX,[ESP + 0x44]
PUSH EAX
MOV EAX,EBP
CDQ
MOV dword ptr [ESP + 0x14],EBP
PUSH EDX
PUSH EBP
MOV EBP,dword ptr [ESP + 0x18]
MOV EBX,EBP
CALL 0x000d4f80
POP ECX
POP EDX
PUSH EAX
LEA EAX,[ESI + 0x8]
PUSH EAX
CALL 0x0002e580
MOV EBP,dword ptr [EBP + 0x7060]
MOV ECX,dword ptr [EBX + 0x7058]
ADD ESP,0x10
TEST EBP,EBP
JZ 0x00078795
CMP dword ptr [ESP + 0xc],ECX
JL 0x00078815
MOV EBX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x20],ECX
CALL 0x0002e6a0
MOV ECX,dword ptr [ESP + 0x20]
CMP EAX,0x100
MOV EDX,EAX
JA 0x00078a08
MOV EBX,dword ptr [ESP + 0x8]
MOV dword ptr [EBX + 0x7058],EAX
MOV EBX,dword ptr [ESP + 0xc]
CMP EBX,EAX
JL 0x000787d2
MOV EAX,dword ptr [ESP + 0x8]
LEA EDX,[EBX + 0x2]
MOV dword ptr [EAX + 0x7058],EDX
MOV dword ptr [ESP + 0x24],ECX
SHL EDX,0x2
SUB ESP,0x8
PUSH EDX
PUSH EBP
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000ad760
ADD ESP,0xc
MOV EBX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESP + 0x28]
MOV EBP,EAX
MOV dword ptr [EBX + 0x7060],EAX
MOV EAX,dword ptr [EBX + 0x7058]
LEA EDX,[EBP + ECX*0x4]
SUB EAX,ECX
SHL EAX,0x2
PUSH EAX
PUSH 0x0
PUSH EDX
CALL 0x0002e870
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EBP + EAX*0x4],0x1
LEA EAX,[EDX + 0x794]
ADD dword ptr [EDX + 0x705c],0x1
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[EDX + 0x5ef0]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x18],EAX
TEST EAX,EAX
JNZ 0x000789f0
MOV ECX,dword ptr [ESP + 0x8]
LEA EAX,[ECX + 0x7a8]
MOV EDX,dword ptr [EAX]
LEA EAX,[ECX + 0x5ef0]
MOV dword ptr [EAX],EDX
SUB ESP,0xc
PUSH 0x1
MOV EBP,dword ptr [ESP + 0x18]
MOV EBX,EBP
CALL 0x00069ec0
POP EAX
POP EDX
PUSH 0x1
PUSH 0x0
CALL 0x0006c230
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x0007890f
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x0008f700
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x00033ce0
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x0008c660
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0x72c0]
MOV EDX,dword ptr [EAX]
TEST EDX,EDX
JNZ 0x00078b30
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0x72cc]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x000788d0
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x0008f8b0
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x0004a940
MOV ECX,dword ptr [ESP + 0x8]
SUB ESP,0x8
LEA EAX,[ECX + 0x8de4]
MOV EBX,ECX
OR dword ptr [EAX],0x24
PUSH 0x2b
PUSH 0x76
MOV dword ptr [ESP + 0x18],ECX
CALL 0x00067310
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
LEA EAX,[ECX + 0xd4bc]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x00078b50
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x00070300
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x00069ce0
MOV EAX,dword ptr [ESP + 0x8]
LEA EDX,[EAX + 0x5ef0]
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [EDX],EAX
TEST EBP,EBP
JS 0x00078a28
JZ 0x00078a80
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0x5ee0]
MOV EDX,dword ptr [EAX]
TEST EDX,EDX
JZ 0x00078958
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x00069de0
SUB ESP,0xc
PUSH 0x0
MOV EDI,dword ptr [ESP + 0x18]
MOV EBX,EDI
CALL 0x00069f90
LEA EDX,[EDI + 0x5ee0]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [EDX],EAX
MOV EAX,dword ptr [EDI + 0x7060]
MOV dword ptr [EAX + ECX*0x4],EBP
LEA EAX,[EDI + 0x794]
MOV EDI,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX],EDI
CALL 0x00070330
SUB ESP,0xc
PUSH dword ptr [ESP + 0x20]
CALL 0x0002edd0
ADD ESP,0x10
JMP 0x000789cf
SUB ESP,0x4
LEA EAX,[ESI + 0xfffa1b8c]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x0002e380
POP ECX
POP ESI
PUSH EAX
LEA EAX,[EBX + 0xfffb3693]
PUSH EAX
CALL 0x00062b20
ADD ESP,0x10
XOR ESI,ESI
MOV EDI,dword ptr [ESP + 0x4c]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,ESI
JNZ 0x00078b5c
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EDX + 0x8de4]
TEST byte ptr [EAX],0x19
JNZ 0x00078860
JMP 0x0007884c
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,0x100
MOV dword ptr [EAX + 0x7058],0x100
MOV EAX,0x100
JMP 0x000787bd
SUB ESP,0x4
PUSH 0x5
MOV EDI,dword ptr [ESP + 0x10]
LEA EAX,[EDI + 0xfffa1bb8]
MOV EBX,EDI
PUSH EAX
PUSH 0x0
CALL 0x0002e380
POP ECX
POP EBP
PUSH EAX
LEA EAX,[EDI + 0xfffb3693]
PUSH EAX
CALL 0x00062b20
MOV dword ptr [ESP],ESI
CALL 0x0002e200
POP EAX
PUSH dword ptr [ESP + 0x18]
CALL 0x0002edd0
POP EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x0002edd0
MOV dword ptr [ESP],0x1
CALL 0x00069f90
ADD ESP,0x10
JMP 0x000789cd
MOV EBP,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x28],EDX
MOV EBX,EBP
CALL 0x0008b820
SUB ESP,0xc
PUSH 0x0
CALL 0x00070030
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x28]
LEA EAX,[EBP + 0x7a8]
MOV EAX,dword ptr [EAX]
CMP dword ptr [EDX],EAX
MOV dword ptr [ESP + 0x2c],EDX
JZ 0x00078abb
CALL 0x0002e5a0
MOV EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDX],EAX
TEST EDI,EDI
JNZ 0x00078ad6
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EBX + 0xffffff70]
PUSH dword ptr [EAX]
CALL 0x000dbd80
ADD ESP,0x10
XOR EAX,EAX
TEST EDI,EDI
SETZ AL
SUB ESP,0x8
MOV EDI,EAX
PUSH EDI
PUSH dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x0002e070
ADD ESP,0x10
TEST EAX,EAX
JNS 0x00078b61
SUB ESP,0x4
PUSH 0x5
MOV EBP,dword ptr [ESP + 0x10]
LEA EAX,[EBP + 0xfffa1be4]
MOV EBX,EBP
PUSH EAX
PUSH 0x0
CALL 0x0002e380
ADD ESP,0xc
PUSH EDI
PUSH ESI
PUSH EAX
CALL 0x00062b20
MOV dword ptr [ESP],0x7f
CALL 0x0002e6b0
MOV EAX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x0008fbd0
ADD ESP,0x10
JMP 0x000788b7
MOV EBX,ECX
CALL 0x0005afe0
JMP 0x0007890f
CALL 0x0010f8b0
CMP EDI,dword ptr [ESP + 0x14]
JZ 0x00078b7a
SUB ESP,0xc
PUSH dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x0002edd0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
LEA ESI,[EAX + 0x5c88]
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00078ba0
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00049e00
MOV dword ptr [ESI],0x0
ADD ESP,0x10
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x18]
PUSH EDI
MOV ESI,dword ptr [ESP + 0x18]
MOV EBX,ESI
CALL 0x0002edd0
MOV EAX,dword ptr [ESI + 0x7060]
ADD ESP,0x10
MOV dword ptr [EAX + EDI*0x4],0x0
LEA EAX,[ESI + 0xd4bc]
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x00078660
SUB ESP,0xc
PUSH dword ptr [ESI + 0xffffff8c]
CALL 0x0002e1e0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00078c2e
CMP EAX,0x4
JZ 0x00078c20
CMP EAX,0x3
JZ 0x00078c20
MOV EAX,0x1
LEA ESI,[ESI]
MOV EDI,dword ptr [ESP + 0x8]
LEA EDX,[EDI + 0x8df0]
MOV EBX,EDI
MOV dword ptr [EDX],EAX
CALL 0x0008c130
SUB ESP,0xc
PUSH EAX
CALL 0x0002e6b0
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0x8df0]
MOV EAX,dword ptr [EAX]
JMP 0x00078c00
MOV EDX,dword ptr [ESP + 0x8]
LEA EAX,[EDX + 0x8de8]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x00078c68
MOV EBX,dword ptr [ESP + 0x8]
SUB ESP,0x4
LEA EAX,[EBX + 0x5cb4]
ADD dword ptr [EAX],0x1
LEA EAX,[EBX + 0xfffa1aa0]
PUSH 0x5
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x000b5230
ADD ESP,0x10
JMP 0x00078c00
MOV EBX,EDX
SUB ESP,0xc
PUSH dword ptr [EDX + 0xfffffe8c]
CALL 0x0002e1e0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00078c3e
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0x8d20]
MOV EAX,dword ptr [EAX]
JMP 0x00078c00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nundefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)\n\n{\n  uint __fd;\n  int iVar1;\n  int __fd_00;\n  undefined4 *__ptr;\n  char *__src;\n  int iVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int in_GS_OFFSET;\n  uint local_34 [2];\n  undefined1 local_2c [12];\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (undefined4 *)0x0;\nLAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0010f8b0();\n  }\n  return __ptr;\n}\n\n" comment (ERROR "undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)" (binary_expression "undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_000786a0(char *param_1,int param_2)" identifier (argument_list "(char *param_1,int param_2)" ( (binary_expression "char *param_1" identifier * identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  uint __fd;\n  int iVar1;\n  int __fd_00;\n  undefined4 *__ptr;\n  char *__src;\n  int iVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int in_GS_OFFSET;\n  uint local_34 [2];\n  undefined1 local_2c [12];\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (undefined4 *)0x0;\nLAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0010f8b0();\n  }\n  return __ptr;\n}" { (declaration "uint __fd;" type_identifier identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int __fd_00;" primitive_type identifier ;) (declaration "undefined4 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_34 [2];" type_identifier (array_declarator "local_34 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 local_2c [12];" type_identifier (array_declarator "local_2c [12]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" if (parenthesized_expression "(((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0))" ( (binary_expression "((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)" (parenthesized_expression "((param_1 != (char *)0x0) && (*param_1 != '\0'))" ( (binary_expression "(param_1 != (char *)0x0) && (*param_1 != '\0')" (parenthesized_expression "(param_1 != (char *)0x0)" ( (binary_expression "param_1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(wordexp_only == 0)" ( (binary_expression "wordexp_only == 0" identifier == number_literal) ))) )) (compound_statement "{\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" { (expression_statement "iVar1 = pipe((int *)local_34);" (assignment_expression "iVar1 = pipe((int *)local_34)" identifier = (call_expression "pipe((int *)local_34)" identifier (argument_list "((int *)local_34)" ( (cast_expression "(int *)local_34" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }" { (expression_statement "uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot make pipe for process substitution",5)" identifier = (call_expression "dcgettext(0,"cannot make pipe for process substitution",5)" identifier (argument_list "(0,"cannot make pipe for process substitution",5)" ( number_literal , (string_literal ""cannot make pipe for process substitution"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error(&DAT_00125693,uVar4);" (call_expression "sys_error(&DAT_00125693,uVar4)" identifier (argument_list "(&DAT_00125693,uVar4)" ( (pointer_expression "&DAT_00125693" & identifier) , identifier ))) ;) }) (else_clause "else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" else (compound_statement "{\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" { (expression_statement "__fd = local_34[1 - param_2];" (assignment_expression "__fd = local_34[1 - param_2]" identifier = (subscript_expression "local_34[1 - param_2]" identifier [ (binary_expression "1 - param_2" number_literal - identifier) ])) ;) (expression_statement "__fd_00 = move_to_high_fd(local_34[param_2],1,0x40);" (assignment_expression "__fd_00 = move_to_high_fd(local_34[param_2],1,0x40)" identifier = (call_expression "move_to_high_fd(local_34[param_2],1,0x40)" identifier (argument_list "(local_34[param_2],1,0x40)" ( (subscript_expression "local_34[param_2]" identifier [ identifier ]) , number_literal , number_literal )))) ;) (expression_statement "__ptr = (undefined4 *)xmalloc(0x11);" (assignment_expression "__ptr = (undefined4 *)xmalloc(0x11)" identifier = (cast_expression "(undefined4 *)xmalloc(0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "*__ptr = 0x7665642f;" (assignment_expression "*__ptr = 0x7665642f" (pointer_expression "*__ptr" * identifier) = number_literal) ;) (expression_statement "__ptr[1] = 0x2f64662f;" (assignment_expression "__ptr[1] = 0x2f64662f" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(__ptr + 2) = 0;" (assignment_expression "*(undefined1 *)(__ptr + 2) = 0" (pointer_expression "*(undefined1 *)(__ptr + 2)" * (cast_expression "(undefined1 *)(__ptr + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 2)" ( (binary_expression "__ptr + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);" (assignment_expression "__src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" identifier = (cast_expression "(char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" identifier (argument_list "(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" ( identifier , (binary_expression "__fd_00 >> 0x1f" identifier >> number_literal) , identifier , number_literal ))))) ;) (expression_statement "strcpy((char *)(__ptr + 2),__src);" (call_expression "strcpy((char *)(__ptr + 2),__src)" identifier (argument_list "((char *)(__ptr + 2),__src)" ( (cast_expression "(char *)(__ptr + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 2)" ( (binary_expression "__ptr + 2" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar1 = DAT_00179060;" (assignment_expression "iVar1 = DAT_00179060" identifier = identifier) ;) (expression_statement "uVar3 = DAT_00179058;" (assignment_expression "uVar3 = DAT_00179058" identifier = identifier) ;) (if_statement "if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }" if (parenthesized_expression "((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00))" ( (binary_expression "(DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)" (parenthesized_expression "(DAT_00179060 == 0)" ( (binary_expression "DAT_00179060 == 0" identifier == number_literal) )) || (parenthesized_expression "((int)DAT_00179058 <= __fd_00)" ( (binary_expression "(int)DAT_00179058 <= __fd_00" (cast_expression "(int)DAT_00179058" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) ))) )) (compound_statement "{\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }" { (expression_statement "DAT_00179058 = getdtablesize();" (assignment_expression "DAT_00179058 = getdtablesize()" identifier = (call_expression "getdtablesize()" identifier (argument_list "()" ( )))) ;) (if_statement "if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }" if (parenthesized_expression "(0x100 < DAT_00179058)" ( (binary_expression "0x100 < DAT_00179058" number_literal < identifier) )) (compound_statement "{\n          DAT_00179058 = 0x100;\n        }" { (expression_statement "DAT_00179058 = 0x100;" (assignment_expression "DAT_00179058 = 0x100" identifier = number_literal) ;) })) (if_statement "if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }" if (parenthesized_expression "((int)DAT_00179058 <= __fd_00)" ( (binary_expression "(int)DAT_00179058 <= __fd_00" (cast_expression "(int)DAT_00179058" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          DAT_00179058 = __fd_00 + 2;\n        }" { (expression_statement "DAT_00179058 = __fd_00 + 2;" (assignment_expression "DAT_00179058 = __fd_00 + 2" identifier = (binary_expression "__fd_00 + 2" identifier + number_literal)) ;) })) (expression_statement "iVar1 = xrealloc(iVar1,DAT_00179058 << 2);" (assignment_expression "iVar1 = xrealloc(iVar1,DAT_00179058 << 2)" identifier = (call_expression "xrealloc(iVar1,DAT_00179058 << 2)" identifier (argument_list "(iVar1,DAT_00179058 << 2)" ( identifier , (binary_expression "DAT_00179058 << 2" identifier << number_literal) )))) ;) (expression_statement "DAT_00179060 = iVar1;" (assignment_expression "DAT_00179060 = iVar1" identifier = identifier) ;) (expression_statement "memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);" (call_expression "memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4)" identifier (argument_list "((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4)" ( (cast_expression "(void *)(iVar1 + uVar3 * 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar3 * 4)" ( (binary_expression "iVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) ))) , number_literal , (binary_expression "(DAT_00179058 - uVar3) * 4" (parenthesized_expression "(DAT_00179058 - uVar3)" ( (binary_expression "DAT_00179058 - uVar3" identifier - identifier) )) * number_literal) ))) ;) })) (expression_statement "*(undefined4 *)(iVar1 + __fd_00 * 4) = 1;" (assignment_expression "*(undefined4 *)(iVar1 + __fd_00 * 4) = 1" (pointer_expression "*(undefined4 *)(iVar1 + __fd_00 * 4)" * (cast_expression "(undefined4 *)(iVar1 + __fd_00 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + __fd_00 * 4)" ( (binary_expression "iVar1 + __fd_00 * 4" identifier + (binary_expression "__fd_00 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "iVar1 = pipeline_pgrp;" (assignment_expression "iVar1 = pipeline_pgrp" identifier = identifier) ;) (expression_statement "uVar4 = last_made_pid;" (assignment_expression "uVar4 = last_made_pid" identifier = identifier) ;) (expression_statement "DAT_0017905c = DAT_0017905c + 1;" (assignment_expression "DAT_0017905c = DAT_0017905c + 1" identifier = (binary_expression "DAT_0017905c + 1" identifier + number_literal)) ;) (if_statement "if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }" if (parenthesized_expression "((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0))" ( (binary_expression "(pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)" (parenthesized_expression "(pipeline_pgrp == 0)" ( (binary_expression "pipeline_pgrp == 0" identifier == number_literal) )) || (parenthesized_expression "((subshell_environment & 0x19) == 0)" ( (binary_expression "(subshell_environment & 0x19) == 0" (parenthesized_expression "(subshell_environment & 0x19)" ( (binary_expression "subshell_environment & 0x19" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        pipeline_pgrp = shell_pgrp;\n      }" { (expression_statement "pipeline_pgrp = shell_pgrp;" (assignment_expression "pipeline_pgrp = shell_pgrp" identifier = identifier) ;) })) (expression_statement "save_pipeline(1);" (call_expression "save_pipeline(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "iVar2 = make_child(0,1);" (assignment_expression "iVar2 = make_child(0,1)" identifier = (call_expression "make_child(0,1)" identifier (argument_list "(0,1)" ( number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" { (expression_statement "reset_terminating_signals();" (call_expression "reset_terminating_signals()" identifier (argument_list "()" ( ))) ;) (expression_statement "free_pushed_string_input();" (call_expression "free_pushed_string_input()" identifier (argument_list "()" ( ))) ;) (expression_statement "restore_original_signals();" (call_expression "restore_original_signals()" identifier (argument_list "()" ( ))) ;) (if_statement "if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }" if (parenthesized_expression "(terminating_signal != 0)" ( (binary_expression "terminating_signal != 0" identifier != number_literal) )) (compound_statement "{\n          termsig_handler(terminating_signal);\n        }" { (expression_statement "termsig_handler(terminating_signal);" (call_expression "termsig_handler(terminating_signal)" identifier (argument_list "(terminating_signal)" ( identifier ))) ;) })) (if_statement "if (interrupt_state != 0) {\n          throw_to_top_level();\n        }" if (parenthesized_expression "(interrupt_state != 0)" ( (binary_expression "interrupt_state != 0" identifier != number_literal) )) (compound_statement "{\n          throw_to_top_level();\n        }" { (expression_statement "throw_to_top_level();" (call_expression "throw_to_top_level()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "setup_async_signals();" (call_expression "setup_async_signals()" identifier (argument_list "()" ( ))) ;) (expression_statement "subshell_environment = subshell_environment | 0x24;" (assignment_expression "subshell_environment = subshell_environment | 0x24" identifier = (binary_expression "subshell_environment | 0x24" identifier | number_literal)) ;) (expression_statement "change_flag(0x76,0x2b);" (call_expression "change_flag(0x76,0x2b)" identifier (argument_list "(0x76,0x2b)" ( number_literal , number_literal ))) ;) (if_statement "if (expanding_redir != 0) {\n          flush_temporary_env();\n        }" if (parenthesized_expression "(expanding_redir != 0)" ( (binary_expression "expanding_redir != 0" identifier != number_literal) )) (compound_statement "{\n          flush_temporary_env();\n        }" { (expression_statement "flush_temporary_env();" (call_expression "flush_temporary_env()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "set_sigchld_handler();" (call_expression "set_sigchld_handler()" identifier (argument_list "()" ( ))) ;) (expression_statement "stop_making_children();" (call_expression "stop_making_children()" identifier (argument_list "()" ( ))) ;) (expression_statement "pipeline_pgrp = iVar1;" (assignment_expression "pipeline_pgrp = iVar1" identifier = identifier) ;) (if_statement "if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" if (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) (compound_statement "{\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" { (if_statement "if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }" { (expression_statement "set_sigint_handler();" (call_expression "set_sigint_handler()" identifier (argument_list "()" ( ))) ;) (expression_statement "set_job_control(0);" (call_expression "set_job_control(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (if_statement "if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }" if (parenthesized_expression "(pipeline_pgrp != shell_pgrp)" ( (binary_expression "pipeline_pgrp != shell_pgrp" identifier != identifier) )) (compound_statement "{\n            pipeline_pgrp = getpid();\n          }" { (expression_statement "pipeline_pgrp = getpid();" (assignment_expression "pipeline_pgrp = getpid()" identifier = (call_expression "getpid()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }" { (expression_statement "fpurge(*(undefined4 *)PTR_stdout_00171f70);" (call_expression "fpurge(*(undefined4 *)PTR_stdout_00171f70)" identifier (argument_list "(*(undefined4 *)PTR_stdout_00171f70)" ( (pointer_expression "*(undefined4 *)PTR_stdout_00171f70" * (cast_expression "(undefined4 *)PTR_stdout_00171f70" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) })) (expression_statement "uVar3 = (uint)(param_2 == 0);" (assignment_expression "uVar3 = (uint)(param_2 == 0)" identifier = (call_expression "(uint)(param_2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )))) ;) (expression_statement "iVar1 = dup2(__fd,uVar3);" (assignment_expression "iVar1 = dup2(__fd,uVar3)" identifier = (call_expression "dup2(__fd,uVar3)" identifier (argument_list "(__fd,uVar3)" ( identifier , identifier )))) ;) (if_statement "if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar1);\n          }" { (if_statement "if (uVar3 != __fd) {\n              close(__fd);\n            }" if (parenthesized_expression "(uVar3 != __fd)" ( (binary_expression "uVar3 != __fd" identifier != identifier) )) (compound_statement "{\n              close(__fd);\n            }" { (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) })) (if_statement "if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }" if (parenthesized_expression "(current_fds_to_close != 0)" ( (binary_expression "current_fds_to_close != 0" identifier != number_literal) )) (compound_statement "{\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }" { (expression_statement "close_fd_bitmap(current_fds_to_close);" (call_expression "close_fd_bitmap(current_fds_to_close)" identifier (argument_list "(current_fds_to_close)" ( identifier ))) ;) (expression_statement "current_fds_to_close = 0;" (assignment_expression "current_fds_to_close = 0" identifier = number_literal) ;) })) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" identifier (argument_list "(__fd_00)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;" (assignment_expression "*(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0" (pointer_expression "*(undefined4 *)(DAT_00179060 + __fd_00 * 4)" * (cast_expression "(undefined4 *)(DAT_00179060 + __fd_00 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00179060 + __fd_00 * 4)" ( (binary_expression "DAT_00179060 + __fd_00 * 4" identifier + (binary_expression "__fd_00 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "expanding_redir = 0;" (assignment_expression "expanding_redir = 0" identifier = number_literal) ;) (expression_statement "FUN_00078660();" (call_expression "FUN_00078660()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);" (assignment_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" identifier = (call_expression "_setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" identifier (argument_list "((__jmp_buf_tag *)PTR_top_level_00171f8c)" ( (cast_expression "(__jmp_buf_tag *)PTR_top_level_00171f8c" ( (type_descriptor "__jmp_buf_tag *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }" { (if_statement "if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }" if (parenthesized_expression "((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0))" ( (binary_expression "(return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)" (parenthesized_expression "(return_catch_flag == 0)" ( (binary_expression "return_catch_flag == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)" ( (comma_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0" (assignment_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" identifier = (call_expression "_setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" identifier (argument_list "((__jmp_buf_tag *)PTR_return_catch_00171e8c)" ( (cast_expression "(__jmp_buf_tag *)PTR_return_catch_00171e8c" ( (type_descriptor "__jmp_buf_tag *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) , (comma_expression "uVar4 = return_catch_value, iVar1 == 0" (assignment_expression "uVar4 = return_catch_value" identifier = identifier) , (binary_expression "iVar1 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }" { (expression_statement "subshell_level = subshell_level + 1;" (assignment_expression "subshell_level = subshell_level + 1" identifier = (binary_expression "subshell_level + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = parse_and_execute(param_1,"process substitution",5);" (assignment_expression "uVar4 = parse_and_execute(param_1,"process substitution",5)" identifier = (call_expression "parse_and_execute(param_1,"process substitution",5)" identifier (argument_list "(param_1,"process substitution",5)" ( identifier , (string_literal ""process substitution"" " string_content ") , number_literal )))) ;) })) }) (else_clause "else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" else (compound_statement "{\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" { (expression_statement "uVar4 = last_command_exit_value;" (assignment_expression "uVar4 = last_command_exit_value" identifier = identifier) ;) (if_statement "if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }" if (parenthesized_expression "((iVar1 != 4) && (iVar1 != 3))" ( (binary_expression "(iVar1 != 4) && (iVar1 != 3)" (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) && (parenthesized_expression "(iVar1 != 3)" ( (binary_expression "iVar1 != 3" identifier != number_literal) ))) )) (compound_statement "{\n                uVar4 = 1;\n              }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) })) }))) (expression_statement "last_command_exit_value = uVar4;" (assignment_expression "last_command_exit_value = uVar4" identifier = identifier) ;) (expression_statement "iVar1 = run_exit_trap();" (assignment_expression "iVar1 = run_exit_trap()" identifier = (call_expression "run_exit_trap()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "exit(iVar1);" (call_expression "exit(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (expression_statement "uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" identifier = (call_expression "dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" identifier (argument_list "(0,"cannot duplicate named pipe %s as fd %d",5)" ( number_literal , (string_literal ""cannot duplicate named pipe %s as fd %d"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error(uVar4,__ptr,uVar3);" (call_expression "sys_error(uVar4,__ptr,uVar3)" identifier (argument_list "(uVar4,__ptr,uVar3)" ( identifier , identifier , identifier ))) ;) comment (expression_statement "exit(0x7f);" (call_expression "exit(0x7f)" identifier (argument_list "(0x7f)" ( number_literal ))) ;) })) (if_statement "if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }" if (parenthesized_expression "(last_procsub_child != 0)" ( (binary_expression "last_procsub_child != 0" identifier != number_literal) )) (compound_statement "{\n          discard_last_procsub_child();\n        }" { (expression_statement "discard_last_procsub_child();" (call_expression "discard_last_procsub_child()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "last_procsub_child = restore_pipeline(0);" (assignment_expression "last_procsub_child = restore_pipeline(0)" identifier = (call_expression "restore_pipeline(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;" (assignment_expression "*(int *)(DAT_00179060 + __fd_00 * 4) = iVar2" (pointer_expression "*(int *)(DAT_00179060 + __fd_00 * 4)" * (cast_expression "(int *)(DAT_00179060 + __fd_00 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00179060 + __fd_00 * 4)" ( (binary_expression "DAT_00179060 + __fd_00 * 4" identifier + (binary_expression "__fd_00 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "last_made_pid = uVar4;" (assignment_expression "last_made_pid = uVar4" identifier = identifier) ;) (expression_statement "close_pgrp_pipe();" (call_expression "close_pgrp_pipe()" identifier (argument_list "()" ( ))) ;) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (goto_statement "goto LAB_000789cf;" goto statement_identifier ;) })) (expression_statement "uVar4 = dcgettext(0,"cannot make child for process substitution",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot make child for process substitution",5)" identifier = (call_expression "dcgettext(0,"cannot make child for process substitution",5)" identifier (argument_list "(0,"cannot make child for process substitution",5)" ( number_literal , (string_literal ""cannot make child for process substitution"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error(&DAT_00125693,uVar4);" (call_expression "sys_error(&DAT_00125693,uVar4)" identifier (argument_list "(&DAT_00125693,uVar4)" ( (pointer_expression "&DAT_00125693" & identifier) , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" identifier (argument_list "(__fd_00)" ( identifier ))) ;) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (expression_statement "restore_pipeline(1);" (call_expression "restore_pipeline(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }))) })) (expression_statement "__ptr = (undefined4 *)0x0;" (assignment_expression "__ptr = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0010f8b0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0010f8b0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0010f8b0();\n  }" { comment (expression_statement "FUN_0010f8b0();" (call_expression "FUN_0010f8b0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return __ptr;" return identifier ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nchar * __regparm3 process_substitute(char *string,int open_for_read_in_child)\n\n{\n  uint __fd;\n  pid_t pVar1;\n  pid_t pVar2;\n  int iVar3;\n  int __fd_00;\n  char *__ptr;\n  char *pcVar4;\n  pid_t *ppVar5;\n  pid_t pVar6;\n  undefined4 uVar7;\n  uint __fd2;\n  int iVar8;\n  int in_GS_OFFSET;\n  int fildes [2];\n  char intbuf [12];\n  \n  iVar8 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((string != (char *)0x0) && (*string != '\0')) && (wordexp_only == 0)) {\n    iVar3 = pipe(fildes);\n    if (iVar3 < 0) {\n      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error("%s",uVar7);\n    }\n    else {\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (char *)0x0;\nLAB_000789cf:\n  if (iVar8 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return __ptr;\n}\n\n" comment (function_definition "char * __regparm3 process_substitute(char *string,int open_for_read_in_child)\n\n{\n  uint __fd;\n  pid_t pVar1;\n  pid_t pVar2;\n  int iVar3;\n  int __fd_00;\n  char *__ptr;\n  char *pcVar4;\n  pid_t *ppVar5;\n  pid_t pVar6;\n  undefined4 uVar7;\n  uint __fd2;\n  int iVar8;\n  int in_GS_OFFSET;\n  int fildes [2];\n  char intbuf [12];\n  \n  iVar8 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((string != (char *)0x0) && (*string != '\0')) && (wordexp_only == 0)) {\n    iVar3 = pipe(fildes);\n    if (iVar3 < 0) {\n      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error("%s",uVar7);\n    }\n    else {\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (char *)0x0;\nLAB_000789cf:\n  if (iVar8 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return __ptr;\n}" primitive_type (pointer_declarator "* __regparm3 process_substitute(char *string,int open_for_read_in_child)" * (ERROR "__regparm3" identifier) (function_declarator "process_substitute(char *string,int open_for_read_in_child)" identifier (parameter_list "(char *string,int open_for_read_in_child)" ( (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "int open_for_read_in_child" primitive_type identifier) )))) (compound_statement "{\n  uint __fd;\n  pid_t pVar1;\n  pid_t pVar2;\n  int iVar3;\n  int __fd_00;\n  char *__ptr;\n  char *pcVar4;\n  pid_t *ppVar5;\n  pid_t pVar6;\n  undefined4 uVar7;\n  uint __fd2;\n  int iVar8;\n  int in_GS_OFFSET;\n  int fildes [2];\n  char intbuf [12];\n  \n  iVar8 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((string != (char *)0x0) && (*string != '\0')) && (wordexp_only == 0)) {\n    iVar3 = pipe(fildes);\n    if (iVar3 < 0) {\n      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error("%s",uVar7);\n    }\n    else {\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (char *)0x0;\nLAB_000789cf:\n  if (iVar8 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return __ptr;\n}" { (declaration "uint __fd;" type_identifier identifier ;) (declaration "pid_t pVar1;" type_identifier identifier ;) (declaration "pid_t pVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int __fd_00;" primitive_type identifier ;) (declaration "char *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "pid_t *ppVar5;" type_identifier (pointer_declarator "*ppVar5" * identifier) ;) (declaration "pid_t pVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint __fd2;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int fildes [2];" primitive_type (array_declarator "fildes [2]" identifier [ number_literal ]) ;) (declaration "char intbuf [12];" primitive_type (array_declarator "intbuf [12]" identifier [ number_literal ]) ;) (expression_statement "iVar8 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar8 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((string != (char *)0x0) && (*string != '\0')) && (wordexp_only == 0)) {\n    iVar3 = pipe(fildes);\n    if (iVar3 < 0) {\n      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error("%s",uVar7);\n    }\n    else {\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" if (parenthesized_expression "(((string != (char *)0x0) && (*string != '\0')) && (wordexp_only == 0))" ( (binary_expression "((string != (char *)0x0) && (*string != '\0')) && (wordexp_only == 0)" (parenthesized_expression "((string != (char *)0x0) && (*string != '\0'))" ( (binary_expression "(string != (char *)0x0) && (*string != '\0')" (parenthesized_expression "(string != (char *)0x0)" ( (binary_expression "string != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*string != '\0')" ( (binary_expression "*string != '\0'" (pointer_expression "*string" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(wordexp_only == 0)" ( (binary_expression "wordexp_only == 0" identifier == number_literal) ))) )) (compound_statement "{\n    iVar3 = pipe(fildes);\n    if (iVar3 < 0) {\n      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error("%s",uVar7);\n    }\n    else {\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" { (expression_statement "iVar3 = pipe(fildes);" (assignment_expression "iVar3 = pipe(fildes)" identifier = (call_expression "pipe(fildes)" identifier (argument_list "(fildes)" ( identifier )))) ;) (if_statement "if (iVar3 < 0) {\n      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error("%s",uVar7);\n    }\n    else {\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error("%s",uVar7);\n    }" { (expression_statement "uVar7 = dcgettext(0,"cannot make pipe for process substitution",5);" (assignment_expression "uVar7 = dcgettext(0,"cannot make pipe for process substitution",5)" identifier = (call_expression "dcgettext(0,"cannot make pipe for process substitution",5)" identifier (argument_list "(0,"cannot make pipe for process substitution",5)" ( number_literal , (string_literal ""cannot make pipe for process substitution"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error("%s",uVar7);" (call_expression "sys_error("%s",uVar7)" identifier (argument_list "("%s",uVar7)" ( (string_literal ""%s"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" else (compound_statement "{\n      __fd = fildes[1 - open_for_read_in_child];\n      __fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);\n      __ptr = (char *)xmalloc(0x11);\n      builtin_strncpy(__ptr,"/dev/fd/",9);\n      pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);\n      strcpy(__ptr + 8,pcVar4);\n      ppVar5 = dev_fd_list;\n      iVar3 = totfds;\n      if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }\n      ppVar5[__fd_00] = 1;\n      pVar2 = pipeline_pgrp;\n      pVar1 = last_made_pid;\n      nfds = nfds + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      pVar6 = make_child((char *)0x0,1);\n      if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = pVar2;\n      if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar7 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error("%s",uVar7);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" { (expression_statement "__fd = fildes[1 - open_for_read_in_child];" (assignment_expression "__fd = fildes[1 - open_for_read_in_child]" identifier = (subscript_expression "fildes[1 - open_for_read_in_child]" identifier [ (binary_expression "1 - open_for_read_in_child" number_literal - identifier) ])) ;) (expression_statement "__fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40);" (assignment_expression "__fd_00 = move_to_high_fd(fildes[open_for_read_in_child],1,0x40)" identifier = (call_expression "move_to_high_fd(fildes[open_for_read_in_child],1,0x40)" identifier (argument_list "(fildes[open_for_read_in_child],1,0x40)" ( (subscript_expression "fildes[open_for_read_in_child]" identifier [ identifier ]) , number_literal , number_literal )))) ;) (expression_statement "__ptr = (char *)xmalloc(0x11);" (assignment_expression "__ptr = (char *)xmalloc(0x11)" identifier = (cast_expression "(char *)xmalloc(0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "builtin_strncpy(__ptr,"/dev/fd/",9);" (call_expression "builtin_strncpy(__ptr,"/dev/fd/",9)" identifier (argument_list "(__ptr,"/dev/fd/",9)" ( identifier , (string_literal ""/dev/fd/"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc);" (assignment_expression "pcVar4 = inttostr((longlong)__fd_00,intbuf,0xc)" identifier = (call_expression "inttostr((longlong)__fd_00,intbuf,0xc)" identifier (argument_list "((longlong)__fd_00,intbuf,0xc)" ( (cast_expression "(longlong)__fd_00" ( (type_descriptor "longlong" type_identifier) ) identifier) , identifier , number_literal )))) ;) (expression_statement "strcpy(__ptr + 8,pcVar4);" (call_expression "strcpy(__ptr + 8,pcVar4)" identifier (argument_list "(__ptr + 8,pcVar4)" ( (binary_expression "__ptr + 8" identifier + number_literal) , identifier ))) ;) (expression_statement "ppVar5 = dev_fd_list;" (assignment_expression "ppVar5 = dev_fd_list" identifier = identifier) ;) (expression_statement "iVar3 = totfds;" (assignment_expression "iVar3 = totfds" identifier = identifier) ;) (if_statement "if ((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)) {\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }" if (parenthesized_expression "((dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00))" ( (binary_expression "(dev_fd_list == (pid_t *)0x0) || (totfds <= __fd_00)" (parenthesized_expression "(dev_fd_list == (pid_t *)0x0)" ( (binary_expression "dev_fd_list == (pid_t *)0x0" identifier == (cast_expression "(pid_t *)0x0" ( (type_descriptor "pid_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(totfds <= __fd_00)" ( (binary_expression "totfds <= __fd_00" identifier <= identifier) ))) )) (compound_statement "{\n        totfds = getdtablesize();\n        if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }\n        if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }\n        ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);\n        dev_fd_list = ppVar5;\n        memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);\n      }" { (expression_statement "totfds = getdtablesize();" (assignment_expression "totfds = getdtablesize()" identifier = (call_expression "getdtablesize()" identifier (argument_list "()" ( )))) ;) (if_statement "if (0x100 < (uint)totfds) {\n          totfds = 0x100;\n        }" if (parenthesized_expression "(0x100 < (uint)totfds)" ( (binary_expression "0x100 < (uint)totfds" number_literal < (cast_expression "(uint)totfds" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n          totfds = 0x100;\n        }" { (expression_statement "totfds = 0x100;" (assignment_expression "totfds = 0x100" identifier = number_literal) ;) })) (if_statement "if (totfds <= __fd_00) {\n          totfds = __fd_00 + 2;\n        }" if (parenthesized_expression "(totfds <= __fd_00)" ( (binary_expression "totfds <= __fd_00" identifier <= identifier) )) (compound_statement "{\n          totfds = __fd_00 + 2;\n        }" { (expression_statement "totfds = __fd_00 + 2;" (assignment_expression "totfds = __fd_00 + 2" identifier = (binary_expression "__fd_00 + 2" identifier + number_literal)) ;) })) (expression_statement "ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2);" (assignment_expression "ppVar5 = (pid_t *)xrealloc(ppVar5,totfds << 2)" identifier = (cast_expression "(pid_t *)xrealloc(ppVar5,totfds << 2)" ( (type_descriptor "pid_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(ppVar5,totfds << 2)" identifier (argument_list "(ppVar5,totfds << 2)" ( identifier , (binary_expression "totfds << 2" identifier << number_literal) ))))) ;) (expression_statement "dev_fd_list = ppVar5;" (assignment_expression "dev_fd_list = ppVar5" identifier = identifier) ;) (expression_statement "memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4);" (call_expression "memset(ppVar5 + iVar3,0,(totfds - iVar3) * 4)" identifier (argument_list "(ppVar5 + iVar3,0,(totfds - iVar3) * 4)" ( (binary_expression "ppVar5 + iVar3" identifier + identifier) , number_literal , (binary_expression "(totfds - iVar3) * 4" (parenthesized_expression "(totfds - iVar3)" ( (binary_expression "totfds - iVar3" identifier - identifier) )) * number_literal) ))) ;) })) (expression_statement "ppVar5[__fd_00] = 1;" (assignment_expression "ppVar5[__fd_00] = 1" (subscript_expression "ppVar5[__fd_00]" identifier [ identifier ]) = number_literal) ;) (expression_statement "pVar2 = pipeline_pgrp;" (assignment_expression "pVar2 = pipeline_pgrp" identifier = identifier) ;) (expression_statement "pVar1 = last_made_pid;" (assignment_expression "pVar1 = last_made_pid" identifier = identifier) ;) (expression_statement "nfds = nfds + 1;" (assignment_expression "nfds = nfds + 1" identifier = (binary_expression "nfds + 1" identifier + number_literal)) ;) (if_statement "if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }" if (parenthesized_expression "((pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0))" ( (binary_expression "(pipeline_pgrp == 0) || ((subshell_environment & 0x19U) == 0)" (parenthesized_expression "(pipeline_pgrp == 0)" ( (binary_expression "pipeline_pgrp == 0" identifier == number_literal) )) || (parenthesized_expression "((subshell_environment & 0x19U) == 0)" ( (binary_expression "(subshell_environment & 0x19U) == 0" (parenthesized_expression "(subshell_environment & 0x19U)" ( (binary_expression "subshell_environment & 0x19U" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        pipeline_pgrp = shell_pgrp;\n      }" { (expression_statement "pipeline_pgrp = shell_pgrp;" (assignment_expression "pipeline_pgrp = shell_pgrp" identifier = identifier) ;) })) (expression_statement "save_pipeline(1);" (call_expression "save_pipeline(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pVar6 = make_child((char *)0x0,1);" (assignment_expression "pVar6 = make_child((char *)0x0,1)" identifier = (call_expression "make_child((char *)0x0,1)" identifier (argument_list "((char *)0x0,1)" ( (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (if_statement "if (pVar6 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" if (parenthesized_expression "(pVar6 == 0)" ( (binary_expression "pVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" { (expression_statement "reset_terminating_signals();" (call_expression "reset_terminating_signals()" identifier (argument_list "()" ( ))) ;) (expression_statement "free_pushed_string_input();" (call_expression "free_pushed_string_input()" identifier (argument_list "()" ( ))) ;) (expression_statement "restore_original_signals();" (call_expression "restore_original_signals()" identifier (argument_list "()" ( ))) ;) (if_statement "if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }" if (parenthesized_expression "(terminating_signal != 0)" ( (binary_expression "terminating_signal != 0" identifier != number_literal) )) (compound_statement "{\n          termsig_handler(terminating_signal);\n        }" { (expression_statement "termsig_handler(terminating_signal);" (call_expression "termsig_handler(terminating_signal)" identifier (argument_list "(terminating_signal)" ( identifier ))) ;) })) (if_statement "if (interrupt_state != 0) {\n          throw_to_top_level();\n        }" if (parenthesized_expression "(interrupt_state != 0)" ( (binary_expression "interrupt_state != 0" identifier != number_literal) )) (compound_statement "{\n          throw_to_top_level();\n        }" { (expression_statement "throw_to_top_level();" (call_expression "throw_to_top_level()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "setup_async_signals();" (call_expression "setup_async_signals()" identifier (argument_list "()" ( ))) ;) (expression_statement "subshell_environment = subshell_environment | 0x24;" (assignment_expression "subshell_environment = subshell_environment | 0x24" identifier = (binary_expression "subshell_environment | 0x24" identifier | number_literal)) ;) (expression_statement "change_flag(0x76,0x2b);" (call_expression "change_flag(0x76,0x2b)" identifier (argument_list "(0x76,0x2b)" ( number_literal , number_literal ))) ;) (if_statement "if (expanding_redir != 0) {\n          flush_temporary_env();\n        }" if (parenthesized_expression "(expanding_redir != 0)" ( (binary_expression "expanding_redir != 0" identifier != number_literal) )) (compound_statement "{\n          flush_temporary_env();\n        }" { (expression_statement "flush_temporary_env();" (call_expression "flush_temporary_env()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "set_sigchld_handler();" (call_expression "set_sigchld_handler()" identifier (argument_list "()" ( ))) ;) (expression_statement "stop_making_children();" (call_expression "stop_making_children()" identifier (argument_list "()" ( ))) ;) (expression_statement "pipeline_pgrp = pVar2;" (assignment_expression "pipeline_pgrp = pVar2" identifier = identifier) ;) (if_statement "if (-1 < pVar6) {\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" if (parenthesized_expression "(-1 < pVar6)" ( (binary_expression "-1 < pVar6" number_literal < identifier) )) (compound_statement "{\n        if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }\n        if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        dev_fd_list[__fd_00] = pVar6;\n        last_made_pid = pVar1;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" { (if_statement "if (pVar6 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }" if (parenthesized_expression "(pVar6 == 0)" ( (binary_expression "pVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }\n          __fd2 = (uint)(open_for_read_in_child == 0);\n          iVar8 = dup2(__fd,__fd2);\n          if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }\n          pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(pcVar4,__ptr,__fd2);\n                    /* WARNING: Subroutine does not return */\n          exit(0x7f);\n        }" { (expression_statement "set_sigint_handler();" (call_expression "set_sigint_handler()" identifier (argument_list "()" ( ))) ;) (expression_statement "set_job_control(0);" (call_expression "set_job_control(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (if_statement "if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }" if (parenthesized_expression "(pipeline_pgrp != shell_pgrp)" ( (binary_expression "pipeline_pgrp != shell_pgrp" identifier != identifier) )) (compound_statement "{\n            pipeline_pgrp = getpid();\n          }" { (expression_statement "pipeline_pgrp = getpid();" (assignment_expression "pipeline_pgrp = getpid()" identifier = (call_expression "getpid()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (open_for_read_in_child == 0) {\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }" if (parenthesized_expression "(open_for_read_in_child == 0)" ( (binary_expression "open_for_read_in_child == 0" identifier == number_literal) )) (compound_statement "{\n            fpurge(*(FILE **)PTR_stdout_00171f70);\n          }" { (expression_statement "fpurge(*(FILE **)PTR_stdout_00171f70);" (call_expression "fpurge(*(FILE **)PTR_stdout_00171f70)" identifier (argument_list "(*(FILE **)PTR_stdout_00171f70)" ( (pointer_expression "*(FILE **)PTR_stdout_00171f70" * (cast_expression "(FILE **)PTR_stdout_00171f70" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "__fd2 = (uint)(open_for_read_in_child == 0);" (assignment_expression "__fd2 = (uint)(open_for_read_in_child == 0)" identifier = (call_expression "(uint)(open_for_read_in_child == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(open_for_read_in_child == 0)" ( (binary_expression "open_for_read_in_child == 0" identifier == number_literal) )))) ;) (expression_statement "iVar8 = dup2(__fd,__fd2);" (assignment_expression "iVar8 = dup2(__fd,__fd2)" identifier = (call_expression "dup2(__fd,__fd2)" identifier (argument_list "(__fd,__fd2)" ( identifier , identifier )))) ;) (if_statement "if (-1 < iVar8) {\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }" if (parenthesized_expression "(-1 < iVar8)" ( (binary_expression "-1 < iVar8" number_literal < identifier) )) (compound_statement "{\n            if (__fd2 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }\n            close(__fd_00);\n            dev_fd_list[__fd_00] = 0;\n            expanding_redir = 0;\n            remove_quoted_escapes(string);\n            iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }\n            last_command_exit_value = iVar3;\n            iVar8 = run_exit_trap();\n                    /* WARNING: Subroutine does not return */\n            exit(iVar8);\n          }" { (if_statement "if (__fd2 != __fd) {\n              close(__fd);\n            }" if (parenthesized_expression "(__fd2 != __fd)" ( (binary_expression "__fd2 != __fd" identifier != identifier) )) (compound_statement "{\n              close(__fd);\n            }" { (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) })) (if_statement "if (current_fds_to_close != (fd_bitmap *)0x0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }" if (parenthesized_expression "(current_fds_to_close != (fd_bitmap *)0x0)" ( (binary_expression "current_fds_to_close != (fd_bitmap *)0x0" identifier != (cast_expression "(fd_bitmap *)0x0" ( (type_descriptor "fd_bitmap *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = (fd_bitmap *)0x0;\n            }" { (expression_statement "close_fd_bitmap(current_fds_to_close);" (call_expression "close_fd_bitmap(current_fds_to_close)" identifier (argument_list "(current_fds_to_close)" ( identifier ))) ;) (expression_statement "current_fds_to_close = (fd_bitmap *)0x0;" (assignment_expression "current_fds_to_close = (fd_bitmap *)0x0" identifier = (cast_expression "(fd_bitmap *)0x0" ( (type_descriptor "fd_bitmap *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" identifier (argument_list "(__fd_00)" ( identifier ))) ;) (expression_statement "dev_fd_list[__fd_00] = 0;" (assignment_expression "dev_fd_list[__fd_00] = 0" (subscript_expression "dev_fd_list[__fd_00]" identifier [ identifier ]) = number_literal) ;) (expression_statement "expanding_redir = 0;" (assignment_expression "expanding_redir = 0" identifier = number_literal) ;) (expression_statement "remove_quoted_escapes(string);" (call_expression "remove_quoted_escapes(string)" identifier (argument_list "(string)" ( identifier ))) ;) (expression_statement "iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);" (assignment_expression "iVar8 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" identifier = (call_expression "_setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" identifier (argument_list "((__jmp_buf_tag *)PTR_top_level_00171f8c)" ( (cast_expression "(__jmp_buf_tag *)PTR_top_level_00171f8c" ( (type_descriptor "__jmp_buf_tag *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar8 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }\n            else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }\n            }" { (if_statement "if ((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)) {\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }" if (parenthesized_expression "((return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0))" ( (binary_expression "(return_catch_flag == 0) ||\n                 (iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)" (parenthesized_expression "(return_catch_flag == 0)" ( (binary_expression "return_catch_flag == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0)" ( (comma_expression "iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 iVar3 = return_catch_value, iVar8 == 0" (assignment_expression "iVar8 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" identifier = (call_expression "_setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" identifier (argument_list "((__jmp_buf_tag *)PTR_return_catch_00171e8c)" ( (cast_expression "(__jmp_buf_tag *)PTR_return_catch_00171e8c" ( (type_descriptor "__jmp_buf_tag *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) , (comma_expression "iVar3 = return_catch_value, iVar8 == 0" (assignment_expression "iVar3 = return_catch_value" identifier = identifier) , (binary_expression "iVar8 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n                subshell_level = subshell_level + 1;\n                iVar3 = parse_and_execute(string,"process substitution",5);\n              }" { (expression_statement "subshell_level = subshell_level + 1;" (assignment_expression "subshell_level = subshell_level + 1" identifier = (binary_expression "subshell_level + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = parse_and_execute(string,"process substitution",5);" (assignment_expression "iVar3 = parse_and_execute(string,"process substitution",5)" identifier = (call_expression "parse_and_execute(string,"process substitution",5)" identifier (argument_list "(string,"process substitution",5)" ( identifier , (string_literal ""process substitution"" " string_content ") , number_literal )))) ;) })) }) (else_clause "else {\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }" else (compound_statement "{\n              iVar3 = last_command_exit_value;\n              if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }\n            }" { (expression_statement "iVar3 = last_command_exit_value;" (assignment_expression "iVar3 = last_command_exit_value" identifier = identifier) ;) (if_statement "if ((iVar8 != 4) && (iVar8 != 3)) {\n                iVar3 = 1;\n              }" if (parenthesized_expression "((iVar8 != 4) && (iVar8 != 3))" ( (binary_expression "(iVar8 != 4) && (iVar8 != 3)" (parenthesized_expression "(iVar8 != 4)" ( (binary_expression "iVar8 != 4" identifier != number_literal) )) && (parenthesized_expression "(iVar8 != 3)" ( (binary_expression "iVar8 != 3" identifier != number_literal) ))) )) (compound_statement "{\n                iVar3 = 1;\n              }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) }))) (expression_statement "last_command_exit_value = iVar3;" (assignment_expression "last_command_exit_value = iVar3" identifier = identifier) ;) (expression_statement "iVar8 = run_exit_trap();" (assignment_expression "iVar8 = run_exit_trap()" identifier = (call_expression "run_exit_trap()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "exit(iVar8);" (call_expression "exit(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) })) (expression_statement "pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);" (assignment_expression "pcVar4 = (char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" identifier = (cast_expression "(char *)dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" identifier (argument_list "(0,"cannot duplicate named pipe %s as fd %d",5)" ( number_literal , (string_literal ""cannot duplicate named pipe %s as fd %d"" " string_content ") , number_literal ))))) ;) (expression_statement "sys_error(pcVar4,__ptr,__fd2);" (call_expression "sys_error(pcVar4,__ptr,__fd2)" identifier (argument_list "(pcVar4,__ptr,__fd2)" ( identifier , identifier , identifier ))) ;) comment (expression_statement "exit(0x7f);" (call_expression "exit(0x7f)" identifier (argument_list "(0x7f)" ( number_literal ))) ;) })) (if_statement "if (last_procsub_child != (PROCESS *)0x0) {\n          discard_last_procsub_child();\n        }" if (parenthesized_expression "(last_procsub_child != (PROCESS *)0x0)" ( (binary_expression "last_procsub_child != (PROCESS *)0x0" identifier != (cast_expression "(PROCESS *)0x0" ( (type_descriptor "PROCESS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          discard_last_procsub_child();\n        }" { (expression_statement "discard_last_procsub_child();" (call_expression "discard_last_procsub_child()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "last_procsub_child = restore_pipeline(0);" (assignment_expression "last_procsub_child = restore_pipeline(0)" identifier = (call_expression "restore_pipeline(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "dev_fd_list[__fd_00] = pVar6;" (assignment_expression "dev_fd_list[__fd_00] = pVar6" (subscript_expression "dev_fd_list[__fd_00]" identifier [ identifier ]) = identifier) ;) (expression_statement "last_made_pid = pVar1;" (assignment_expression "last_made_pid = pVar1" identifier = identifier) ;) (expression_statement "close_pgrp_pipe();" (call_expression "close_pgrp_pipe()" identifier (argument_list "()" ( ))) ;) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (goto_statement "goto LAB_000789cf;" goto statement_identifier ;) })) (expression_statement "uVar7 = dcgettext(0,"cannot make child for process substitution",5);" (assignment_expression "uVar7 = dcgettext(0,"cannot make child for process substitution",5)" identifier = (call_expression "dcgettext(0,"cannot make child for process substitution",5)" identifier (argument_list "(0,"cannot make child for process substitution",5)" ( number_literal , (string_literal ""cannot make child for process substitution"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error("%s",uVar7);" (call_expression "sys_error("%s",uVar7)" identifier (argument_list "("%s",uVar7)" ( (string_literal ""%s"" " string_content ") , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" identifier (argument_list "(__fd_00)" ( identifier ))) ;) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (expression_statement "restore_pipeline(1);" (call_expression "restore_pipeline(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }))) })) (expression_statement "__ptr = (char *)0x0;" (assignment_expression "__ptr = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000789cf:\n  if (iVar8 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar8 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar8 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar8 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return __ptr;" return identifier ;) })))
(translation_unit "undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)\n\n{\n  uint __fd;\n  int iVar1;\n  int __fd_00;\n  undefined4 *__ptr;\n  char *__src;\n  int iVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int in_GS_OFFSET;\n  uint local_34 [2];\n  undefined1 local_2c [12];\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (undefined4 *)0x0;\nLAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0010f8b0();\n  }\n  return __ptr;\n}\n\n" (ERROR "undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)" (binary_expression "undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_000786a0(char *param_1,int param_2)" identifier (argument_list "(char *param_1,int param_2)" ( (binary_expression "char *param_1" identifier * identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  uint __fd;\n  int iVar1;\n  int __fd_00;\n  undefined4 *__ptr;\n  char *__src;\n  int iVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int in_GS_OFFSET;\n  uint local_34 [2];\n  undefined1 local_2c [12];\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (undefined4 *)0x0;\nLAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0010f8b0();\n  }\n  return __ptr;\n}" { (declaration "uint __fd;" type_identifier identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int __fd_00;" primitive_type identifier ;) (declaration "undefined4 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_34 [2];" type_identifier (array_declarator "local_34 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 local_2c [12];" type_identifier (array_declarator "local_2c [12]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" if (parenthesized_expression "(((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0))" ( (binary_expression "((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)" (parenthesized_expression "((param_1 != (char *)0x0) && (*param_1 != '\0'))" ( (binary_expression "(param_1 != (char *)0x0) && (*param_1 != '\0')" (parenthesized_expression "(param_1 != (char *)0x0)" ( (binary_expression "param_1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(wordexp_only == 0)" ( (binary_expression "wordexp_only == 0" identifier == number_literal) ))) )) (compound_statement "{\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" { (expression_statement "iVar1 = pipe((int *)local_34);" (assignment_expression "iVar1 = pipe((int *)local_34)" identifier = (call_expression "pipe((int *)local_34)" identifier (argument_list "((int *)local_34)" ( (cast_expression "(int *)local_34" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }" { (expression_statement "uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot make pipe for process substitution",5)" identifier = (call_expression "dcgettext(0,"cannot make pipe for process substitution",5)" identifier (argument_list "(0,"cannot make pipe for process substitution",5)" ( number_literal , (string_literal ""cannot make pipe for process substitution"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error(&DAT_00125693,uVar4);" (call_expression "sys_error(&DAT_00125693,uVar4)" identifier (argument_list "(&DAT_00125693,uVar4)" ( (pointer_expression "&DAT_00125693" & identifier) , identifier ))) ;) }) (else_clause "else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" else (compound_statement "{\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" { (expression_statement "__fd = local_34[1 - param_2];" (assignment_expression "__fd = local_34[1 - param_2]" identifier = (subscript_expression "local_34[1 - param_2]" identifier [ (binary_expression "1 - param_2" number_literal - identifier) ])) ;) (expression_statement "__fd_00 = move_to_high_fd(local_34[param_2],1,0x40);" (assignment_expression "__fd_00 = move_to_high_fd(local_34[param_2],1,0x40)" identifier = (call_expression "move_to_high_fd(local_34[param_2],1,0x40)" identifier (argument_list "(local_34[param_2],1,0x40)" ( (subscript_expression "local_34[param_2]" identifier [ identifier ]) , number_literal , number_literal )))) ;) (expression_statement "__ptr = (undefined4 *)xmalloc(0x11);" (assignment_expression "__ptr = (undefined4 *)xmalloc(0x11)" identifier = (cast_expression "(undefined4 *)xmalloc(0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "*__ptr = 0x7665642f;" (assignment_expression "*__ptr = 0x7665642f" (pointer_expression "*__ptr" * identifier) = number_literal) ;) (expression_statement "__ptr[1] = 0x2f64662f;" (assignment_expression "__ptr[1] = 0x2f64662f" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(__ptr + 2) = 0;" (assignment_expression "*(undefined1 *)(__ptr + 2) = 0" (pointer_expression "*(undefined1 *)(__ptr + 2)" * (cast_expression "(undefined1 *)(__ptr + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 2)" ( (binary_expression "__ptr + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);" (assignment_expression "__src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" identifier = (cast_expression "(char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" identifier (argument_list "(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" ( identifier , (binary_expression "__fd_00 >> 0x1f" identifier >> number_literal) , identifier , number_literal ))))) ;) (expression_statement "strcpy((char *)(__ptr + 2),__src);" (call_expression "strcpy((char *)(__ptr + 2),__src)" identifier (argument_list "((char *)(__ptr + 2),__src)" ( (cast_expression "(char *)(__ptr + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 2)" ( (binary_expression "__ptr + 2" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar1 = DAT_00179060;" (assignment_expression "iVar1 = DAT_00179060" identifier = identifier) ;) (expression_statement "uVar3 = DAT_00179058;" (assignment_expression "uVar3 = DAT_00179058" identifier = identifier) ;) (if_statement "if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }" if (parenthesized_expression "((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00))" ( (binary_expression "(DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)" (parenthesized_expression "(DAT_00179060 == 0)" ( (binary_expression "DAT_00179060 == 0" identifier == number_literal) )) || (parenthesized_expression "((int)DAT_00179058 <= __fd_00)" ( (binary_expression "(int)DAT_00179058 <= __fd_00" (cast_expression "(int)DAT_00179058" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) ))) )) (compound_statement "{\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }" { (expression_statement "DAT_00179058 = getdtablesize();" (assignment_expression "DAT_00179058 = getdtablesize()" identifier = (call_expression "getdtablesize()" identifier (argument_list "()" ( )))) ;) (if_statement "if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }" if (parenthesized_expression "(0x100 < DAT_00179058)" ( (binary_expression "0x100 < DAT_00179058" number_literal < identifier) )) (compound_statement "{\n          DAT_00179058 = 0x100;\n        }" { (expression_statement "DAT_00179058 = 0x100;" (assignment_expression "DAT_00179058 = 0x100" identifier = number_literal) ;) })) (if_statement "if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }" if (parenthesized_expression "((int)DAT_00179058 <= __fd_00)" ( (binary_expression "(int)DAT_00179058 <= __fd_00" (cast_expression "(int)DAT_00179058" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          DAT_00179058 = __fd_00 + 2;\n        }" { (expression_statement "DAT_00179058 = __fd_00 + 2;" (assignment_expression "DAT_00179058 = __fd_00 + 2" identifier = (binary_expression "__fd_00 + 2" identifier + number_literal)) ;) })) (expression_statement "iVar1 = xrealloc(iVar1,DAT_00179058 << 2);" (assignment_expression "iVar1 = xrealloc(iVar1,DAT_00179058 << 2)" identifier = (call_expression "xrealloc(iVar1,DAT_00179058 << 2)" identifier (argument_list "(iVar1,DAT_00179058 << 2)" ( identifier , (binary_expression "DAT_00179058 << 2" identifier << number_literal) )))) ;) (expression_statement "DAT_00179060 = iVar1;" (assignment_expression "DAT_00179060 = iVar1" identifier = identifier) ;) (expression_statement "memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);" (call_expression "memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4)" identifier (argument_list "((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4)" ( (cast_expression "(void *)(iVar1 + uVar3 * 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + uVar3 * 4)" ( (binary_expression "iVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) ))) , number_literal , (binary_expression "(DAT_00179058 - uVar3) * 4" (parenthesized_expression "(DAT_00179058 - uVar3)" ( (binary_expression "DAT_00179058 - uVar3" identifier - identifier) )) * number_literal) ))) ;) })) (expression_statement "*(undefined4 *)(iVar1 + __fd_00 * 4) = 1;" (assignment_expression "*(undefined4 *)(iVar1 + __fd_00 * 4) = 1" (pointer_expression "*(undefined4 *)(iVar1 + __fd_00 * 4)" * (cast_expression "(undefined4 *)(iVar1 + __fd_00 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + __fd_00 * 4)" ( (binary_expression "iVar1 + __fd_00 * 4" identifier + (binary_expression "__fd_00 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "iVar1 = pipeline_pgrp;" (assignment_expression "iVar1 = pipeline_pgrp" identifier = identifier) ;) (expression_statement "uVar4 = last_made_pid;" (assignment_expression "uVar4 = last_made_pid" identifier = identifier) ;) (expression_statement "DAT_0017905c = DAT_0017905c + 1;" (assignment_expression "DAT_0017905c = DAT_0017905c + 1" identifier = (binary_expression "DAT_0017905c + 1" identifier + number_literal)) ;) (if_statement "if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }" if (parenthesized_expression "((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0))" ( (binary_expression "(pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)" (parenthesized_expression "(pipeline_pgrp == 0)" ( (binary_expression "pipeline_pgrp == 0" identifier == number_literal) )) || (parenthesized_expression "((subshell_environment & 0x19) == 0)" ( (binary_expression "(subshell_environment & 0x19) == 0" (parenthesized_expression "(subshell_environment & 0x19)" ( (binary_expression "subshell_environment & 0x19" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        pipeline_pgrp = shell_pgrp;\n      }" { (expression_statement "pipeline_pgrp = shell_pgrp;" (assignment_expression "pipeline_pgrp = shell_pgrp" identifier = identifier) ;) })) (expression_statement "save_pipeline(1);" (call_expression "save_pipeline(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "iVar2 = make_child(0,1);" (assignment_expression "iVar2 = make_child(0,1)" identifier = (call_expression "make_child(0,1)" identifier (argument_list "(0,1)" ( number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" { (expression_statement "reset_terminating_signals();" (call_expression "reset_terminating_signals()" identifier (argument_list "()" ( ))) ;) (expression_statement "free_pushed_string_input();" (call_expression "free_pushed_string_input()" identifier (argument_list "()" ( ))) ;) (expression_statement "restore_original_signals();" (call_expression "restore_original_signals()" identifier (argument_list "()" ( ))) ;) (if_statement "if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }" if (parenthesized_expression "(terminating_signal != 0)" ( (binary_expression "terminating_signal != 0" identifier != number_literal) )) (compound_statement "{\n          termsig_handler(terminating_signal);\n        }" { (expression_statement "termsig_handler(terminating_signal);" (call_expression "termsig_handler(terminating_signal)" identifier (argument_list "(terminating_signal)" ( identifier ))) ;) })) (if_statement "if (interrupt_state != 0) {\n          throw_to_top_level();\n        }" if (parenthesized_expression "(interrupt_state != 0)" ( (binary_expression "interrupt_state != 0" identifier != number_literal) )) (compound_statement "{\n          throw_to_top_level();\n        }" { (expression_statement "throw_to_top_level();" (call_expression "throw_to_top_level()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "setup_async_signals();" (call_expression "setup_async_signals()" identifier (argument_list "()" ( ))) ;) (expression_statement "subshell_environment = subshell_environment | 0x24;" (assignment_expression "subshell_environment = subshell_environment | 0x24" identifier = (binary_expression "subshell_environment | 0x24" identifier | number_literal)) ;) (expression_statement "change_flag(0x76,0x2b);" (call_expression "change_flag(0x76,0x2b)" identifier (argument_list "(0x76,0x2b)" ( number_literal , number_literal ))) ;) (if_statement "if (expanding_redir != 0) {\n          flush_temporary_env();\n        }" if (parenthesized_expression "(expanding_redir != 0)" ( (binary_expression "expanding_redir != 0" identifier != number_literal) )) (compound_statement "{\n          flush_temporary_env();\n        }" { (expression_statement "flush_temporary_env();" (call_expression "flush_temporary_env()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "set_sigchld_handler();" (call_expression "set_sigchld_handler()" identifier (argument_list "()" ( ))) ;) (expression_statement "stop_making_children();" (call_expression "stop_making_children()" identifier (argument_list "()" ( ))) ;) (expression_statement "pipeline_pgrp = iVar1;" (assignment_expression "pipeline_pgrp = iVar1" identifier = identifier) ;) (if_statement "if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" if (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) (compound_statement "{\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" { (if_statement "if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }" { (expression_statement "set_sigint_handler();" (call_expression "set_sigint_handler()" identifier (argument_list "()" ( ))) ;) (expression_statement "set_job_control(0);" (call_expression "set_job_control(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (if_statement "if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }" if (parenthesized_expression "(pipeline_pgrp != shell_pgrp)" ( (binary_expression "pipeline_pgrp != shell_pgrp" identifier != identifier) )) (compound_statement "{\n            pipeline_pgrp = getpid();\n          }" { (expression_statement "pipeline_pgrp = getpid();" (assignment_expression "pipeline_pgrp = getpid()" identifier = (call_expression "getpid()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }" { (expression_statement "fpurge(*(undefined4 *)PTR_stdout_00171f70);" (call_expression "fpurge(*(undefined4 *)PTR_stdout_00171f70)" identifier (argument_list "(*(undefined4 *)PTR_stdout_00171f70)" ( (pointer_expression "*(undefined4 *)PTR_stdout_00171f70" * (cast_expression "(undefined4 *)PTR_stdout_00171f70" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) })) (expression_statement "uVar3 = (uint)(param_2 == 0);" (assignment_expression "uVar3 = (uint)(param_2 == 0)" identifier = (call_expression "(uint)(param_2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )))) ;) (expression_statement "iVar1 = dup2(__fd,uVar3);" (assignment_expression "iVar1 = dup2(__fd,uVar3)" identifier = (call_expression "dup2(__fd,uVar3)" identifier (argument_list "(__fd,uVar3)" ( identifier , identifier )))) ;) (if_statement "if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }" { (if_statement "if (uVar3 != __fd) {\n              close(__fd);\n            }" if (parenthesized_expression "(uVar3 != __fd)" ( (binary_expression "uVar3 != __fd" identifier != identifier) )) (compound_statement "{\n              close(__fd);\n            }" { (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) })) (if_statement "if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }" if (parenthesized_expression "(current_fds_to_close != 0)" ( (binary_expression "current_fds_to_close != 0" identifier != number_literal) )) (compound_statement "{\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }" { (expression_statement "close_fd_bitmap(current_fds_to_close);" (call_expression "close_fd_bitmap(current_fds_to_close)" identifier (argument_list "(current_fds_to_close)" ( identifier ))) ;) (expression_statement "current_fds_to_close = 0;" (assignment_expression "current_fds_to_close = 0" identifier = number_literal) ;) })) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" identifier (argument_list "(__fd_00)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;" (assignment_expression "*(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0" (pointer_expression "*(undefined4 *)(DAT_00179060 + __fd_00 * 4)" * (cast_expression "(undefined4 *)(DAT_00179060 + __fd_00 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00179060 + __fd_00 * 4)" ( (binary_expression "DAT_00179060 + __fd_00 * 4" identifier + (binary_expression "__fd_00 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "expanding_redir = 0;" (assignment_expression "expanding_redir = 0" identifier = number_literal) ;) (expression_statement "FUN_00078660();" (call_expression "FUN_00078660()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);" (assignment_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" identifier = (call_expression "_setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" identifier (argument_list "((__jmp_buf_tag *)PTR_top_level_00171f8c)" ( (cast_expression "(__jmp_buf_tag *)PTR_top_level_00171f8c" ( (type_descriptor "__jmp_buf_tag *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }" { (if_statement "if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }" if (parenthesized_expression "((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0))" ( (binary_expression "(return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)" (parenthesized_expression "(return_catch_flag == 0)" ( (binary_expression "return_catch_flag == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)" ( (comma_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0" (assignment_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" identifier = (call_expression "_setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" identifier (argument_list "((__jmp_buf_tag *)PTR_return_catch_00171e8c)" ( (cast_expression "(__jmp_buf_tag *)PTR_return_catch_00171e8c" ( (type_descriptor "__jmp_buf_tag *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) , (comma_expression "uVar4 = return_catch_value, iVar1 == 0" (assignment_expression "uVar4 = return_catch_value" identifier = identifier) , (binary_expression "iVar1 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }" { (expression_statement "subshell_level = subshell_level + 1;" (assignment_expression "subshell_level = subshell_level + 1" identifier = (binary_expression "subshell_level + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = parse_and_execute(param_1,"process substitution",5);" (assignment_expression "uVar4 = parse_and_execute(param_1,"process substitution",5)" identifier = (call_expression "parse_and_execute(param_1,"process substitution",5)" identifier (argument_list "(param_1,"process substitution",5)" ( identifier , (string_literal ""process substitution"" " string_content ") , number_literal )))) ;) })) }) (else_clause "else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" else (compound_statement "{\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" { (expression_statement "uVar4 = last_command_exit_value;" (assignment_expression "uVar4 = last_command_exit_value" identifier = identifier) ;) (if_statement "if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }" if (parenthesized_expression "((iVar1 != 4) && (iVar1 != 3))" ( (binary_expression "(iVar1 != 4) && (iVar1 != 3)" (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) && (parenthesized_expression "(iVar1 != 3)" ( (binary_expression "iVar1 != 3" identifier != number_literal) ))) )) (compound_statement "{\n                uVar4 = 1;\n              }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) })) }))) (expression_statement "last_command_exit_value = uVar4;" (assignment_expression "last_command_exit_value = uVar4" identifier = identifier) ;) (expression_statement "iVar1 = run_exit_trap();" (assignment_expression "iVar1 = run_exit_trap()" identifier = (call_expression "run_exit_trap()" identifier (argument_list "()" ( )))) ;) (expression_statement "exit(iVar1);" (call_expression "exit(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (expression_statement "uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" identifier = (call_expression "dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" identifier (argument_list "(0,"cannot duplicate named pipe %s as fd %d",5)" ( number_literal , (string_literal ""cannot duplicate named pipe %s as fd %d"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error(uVar4,__ptr,uVar3);" (call_expression "sys_error(uVar4,__ptr,uVar3)" identifier (argument_list "(uVar4,__ptr,uVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "exit(0x7f);" (call_expression "exit(0x7f)" identifier (argument_list "(0x7f)" ( number_literal ))) ;) })) (if_statement "if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }" if (parenthesized_expression "(last_procsub_child != 0)" ( (binary_expression "last_procsub_child != 0" identifier != number_literal) )) (compound_statement "{\n          discard_last_procsub_child();\n        }" { (expression_statement "discard_last_procsub_child();" (call_expression "discard_last_procsub_child()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "last_procsub_child = restore_pipeline(0);" (assignment_expression "last_procsub_child = restore_pipeline(0)" identifier = (call_expression "restore_pipeline(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;" (assignment_expression "*(int *)(DAT_00179060 + __fd_00 * 4) = iVar2" (pointer_expression "*(int *)(DAT_00179060 + __fd_00 * 4)" * (cast_expression "(int *)(DAT_00179060 + __fd_00 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00179060 + __fd_00 * 4)" ( (binary_expression "DAT_00179060 + __fd_00 * 4" identifier + (binary_expression "__fd_00 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "last_made_pid = uVar4;" (assignment_expression "last_made_pid = uVar4" identifier = identifier) ;) (expression_statement "close_pgrp_pipe();" (call_expression "close_pgrp_pipe()" identifier (argument_list "()" ( ))) ;) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (goto_statement "goto LAB_000789cf;" goto statement_identifier ;) })) (expression_statement "uVar4 = dcgettext(0,"cannot make child for process substitution",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot make child for process substitution",5)" identifier = (call_expression "dcgettext(0,"cannot make child for process substitution",5)" identifier (argument_list "(0,"cannot make child for process substitution",5)" ( number_literal , (string_literal ""cannot make child for process substitution"" " string_content ") , number_literal )))) ;) (expression_statement "sys_error(&DAT_00125693,uVar4);" (call_expression "sys_error(&DAT_00125693,uVar4)" identifier (argument_list "(&DAT_00125693,uVar4)" ( (pointer_expression "&DAT_00125693" & identifier) , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" identifier (argument_list "(__fd_00)" ( identifier ))) ;) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (expression_statement "restore_pipeline(1);" (call_expression "restore_pipeline(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }))) })) (expression_statement "__ptr = (undefined4 *)0x0;" (assignment_expression "__ptr = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0010f8b0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0010f8b0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0010f8b0();\n  }" { (expression_statement "FUN_0010f8b0();" (call_expression "FUN_0010f8b0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return __ptr;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) , (ERROR IDENT) IDENT ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < 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 ( (pointer_expression & IDENT) , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression LIT - IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT >> LIT) , IDENT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))) , LIT , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT) ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) }))
(ERROR "undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)" (binary_expression "undefined4 * __regparm3 FUN_000786a0(char *param_1,int param_2)" (identifier "undefined4") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_000786a0(char *param_1,int param_2)" (identifier "FUN_000786a0") (argument_list "(char *param_1,int param_2)" (( "(") (binary_expression "char *param_1" (identifier "char") (* "*") (identifier "param_1")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_2") () ")"))))) (compound_statement "{\n  uint __fd;\n  int iVar1;\n  int __fd_00;\n  undefined4 *__ptr;\n  char *__src;\n  int iVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int in_GS_OFFSET;\n  uint local_34 [2];\n  undefined1 local_2c [12];\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }\n  __ptr = (undefined4 *)0x0;\nLAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0010f8b0();\n  }\n  return __ptr;\n}" ({ "{") (declaration "uint __fd;" (type_identifier "uint") (identifier "__fd") (; ";")) (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int __fd_00;" (primitive_type "int") (identifier "__fd_00") (; ";")) (declaration "undefined4 *__ptr;" (type_identifier "undefined4") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "char *__src;" (primitive_type "char") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint local_34 [2];" (type_identifier "uint") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined1 local_2c [12];" (type_identifier "undefined1") (array_declarator "local_2c [12]" (identifier "local_2c") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" (if "if") (parenthesized_expression "(((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0))" (( "(") (binary_expression "((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)" (parenthesized_expression "((param_1 != (char *)0x0) && (*param_1 != '\0'))" (( "(") (binary_expression "(param_1 != (char *)0x0) && (*param_1 != '\0')" (parenthesized_expression "(param_1 != (char *)0x0)" (( "(") (binary_expression "param_1 != (char *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*param_1 != '\0')" (( "(") (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(wordexp_only == 0)" (( "(") (binary_expression "wordexp_only == 0" (identifier "wordexp_only") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar1 = pipe((int *)local_34);\n    if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }\n  }" ({ "{") (expression_statement "iVar1 = pipe((int *)local_34);" (assignment_expression "iVar1 = pipe((int *)local_34)" (identifier "iVar1") (= "=") (call_expression "pipe((int *)local_34)" (identifier "pipe") (argument_list "((int *)local_34)" (( "(") (cast_expression "(int *)local_34" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_34")) () ")")))) (; ";")) (if_statement "if (iVar1 < 0) {\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }\n    else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" (if "if") (parenthesized_expression "(iVar1 < 0)" (( "(") (binary_expression "iVar1 < 0" (identifier "iVar1") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n    }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot make pipe for process substitution",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"cannot make pipe for process substitution",5)" (identifier "dcgettext") (argument_list "(0,"cannot make pipe for process substitution",5)" (( "(") (number_literal "0") (, ",") (string_literal ""cannot make pipe for process substitution"" (" """) (string_content "cannot make pipe for process substitution") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "sys_error(&DAT_00125693,uVar4);" (call_expression "sys_error(&DAT_00125693,uVar4)" (identifier "sys_error") (argument_list "(&DAT_00125693,uVar4)" (( "(") (pointer_expression "&DAT_00125693" (& "&") (identifier "DAT_00125693")) (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" (else "else") (compound_statement "{\n      __fd = local_34[1 - param_2];\n      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);\n      __ptr = (undefined4 *)xmalloc(0x11);\n      *__ptr = 0x7665642f;\n      __ptr[1] = 0x2f64662f;\n      *(undefined1 *)(__ptr + 2) = 0;\n      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);\n      strcpy((char *)(__ptr + 2),__src);\n      iVar1 = DAT_00179060;\n      uVar3 = DAT_00179058;\n      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }\n      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;\n      iVar1 = pipeline_pgrp;\n      uVar4 = last_made_pid;\n      DAT_0017905c = DAT_0017905c + 1;\n      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }\n      save_pipeline(1);\n      iVar2 = make_child(0,1);\n      if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }\n      set_sigchld_handler();\n      stop_making_children();\n      pipeline_pgrp = iVar1;\n      if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }\n      uVar4 = dcgettext(0,"cannot make child for process substitution",5);\n      sys_error(&DAT_00125693,uVar4);\n      free(__ptr);\n      close(__fd_00);\n      close(__fd);\n      restore_pipeline(1);\n    }" ({ "{") (expression_statement "__fd = local_34[1 - param_2];" (assignment_expression "__fd = local_34[1 - param_2]" (identifier "__fd") (= "=") (subscript_expression "local_34[1 - param_2]" (identifier "local_34") ([ "[") (binary_expression "1 - param_2" (number_literal "1") (- "-") (identifier "param_2")) (] "]"))) (; ";")) (expression_statement "__fd_00 = move_to_high_fd(local_34[param_2],1,0x40);" (assignment_expression "__fd_00 = move_to_high_fd(local_34[param_2],1,0x40)" (identifier "__fd_00") (= "=") (call_expression "move_to_high_fd(local_34[param_2],1,0x40)" (identifier "move_to_high_fd") (argument_list "(local_34[param_2],1,0x40)" (( "(") (subscript_expression "local_34[param_2]" (identifier "local_34") ([ "[") (identifier "param_2") (] "]")) (, ",") (number_literal "1") (, ",") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "__ptr = (undefined4 *)xmalloc(0x11);" (assignment_expression "__ptr = (undefined4 *)xmalloc(0x11)" (identifier "__ptr") (= "=") (cast_expression "(undefined4 *)xmalloc(0x11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x11)" (identifier "xmalloc") (argument_list "(0x11)" (( "(") (number_literal "0x11") () ")"))))) (; ";")) (expression_statement "*__ptr = 0x7665642f;" (assignment_expression "*__ptr = 0x7665642f" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (= "=") (number_literal "0x7665642f")) (; ";")) (expression_statement "__ptr[1] = 0x2f64662f;" (assignment_expression "__ptr[1] = 0x2f64662f" (subscript_expression "__ptr[1]" (identifier "__ptr") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0x2f64662f")) (; ";")) (expression_statement "*(undefined1 *)(__ptr + 2) = 0;" (assignment_expression "*(undefined1 *)(__ptr + 2) = 0" (pointer_expression "*(undefined1 *)(__ptr + 2)" (* "*") (cast_expression "(undefined1 *)(__ptr + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 2)" (( "(") (binary_expression "__ptr + 2" (identifier "__ptr") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "__src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);" (assignment_expression "__src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" (identifier "__src") (= "=") (cast_expression "(char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" (identifier "inttostr") (argument_list "(__fd_00,__fd_00 >> 0x1f,local_2c,0xc)" (( "(") (identifier "__fd_00") (, ",") (binary_expression "__fd_00 >> 0x1f" (identifier "__fd_00") (>> ">>") (number_literal "0x1f")) (, ",") (identifier "local_2c") (, ",") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "strcpy((char *)(__ptr + 2),__src);" (call_expression "strcpy((char *)(__ptr + 2),__src)" (identifier "strcpy") (argument_list "((char *)(__ptr + 2),__src)" (( "(") (cast_expression "(char *)(__ptr + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 2)" (( "(") (binary_expression "__ptr + 2" (identifier "__ptr") (+ "+") (number_literal "2")) () ")"))) (, ",") (identifier "__src") () ")"))) (; ";")) (expression_statement "iVar1 = DAT_00179060;" (assignment_expression "iVar1 = DAT_00179060" (identifier "iVar1") (= "=") (identifier "DAT_00179060")) (; ";")) (expression_statement "uVar3 = DAT_00179058;" (assignment_expression "uVar3 = DAT_00179058" (identifier "uVar3") (= "=") (identifier "DAT_00179058")) (; ";")) (if_statement "if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }" (if "if") (parenthesized_expression "((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00))" (( "(") (binary_expression "(DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)" (parenthesized_expression "(DAT_00179060 == 0)" (( "(") (binary_expression "DAT_00179060 == 0" (identifier "DAT_00179060") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((int)DAT_00179058 <= __fd_00)" (( "(") (binary_expression "(int)DAT_00179058 <= __fd_00" (cast_expression "(int)DAT_00179058" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00179058")) (<= "<=") (identifier "__fd_00")) () ")"))) () ")")) (compound_statement "{\n        DAT_00179058 = getdtablesize();\n        if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }\n        if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }\n        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);\n        DAT_00179060 = iVar1;\n        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);\n      }" ({ "{") (expression_statement "DAT_00179058 = getdtablesize();" (assignment_expression "DAT_00179058 = getdtablesize()" (identifier "DAT_00179058") (= "=") (call_expression "getdtablesize()" (identifier "getdtablesize") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (0x100 < DAT_00179058) {\n          DAT_00179058 = 0x100;\n        }" (if "if") (parenthesized_expression "(0x100 < DAT_00179058)" (( "(") (binary_expression "0x100 < DAT_00179058" (number_literal "0x100") (< "<") (identifier "DAT_00179058")) () ")")) (compound_statement "{\n          DAT_00179058 = 0x100;\n        }" ({ "{") (expression_statement "DAT_00179058 = 0x100;" (assignment_expression "DAT_00179058 = 0x100" (identifier "DAT_00179058") (= "=") (number_literal "0x100")) (; ";")) (} "}"))) (if_statement "if ((int)DAT_00179058 <= __fd_00) {\n          DAT_00179058 = __fd_00 + 2;\n        }" (if "if") (parenthesized_expression "((int)DAT_00179058 <= __fd_00)" (( "(") (binary_expression "(int)DAT_00179058 <= __fd_00" (cast_expression "(int)DAT_00179058" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00179058")) (<= "<=") (identifier "__fd_00")) () ")")) (compound_statement "{\n          DAT_00179058 = __fd_00 + 2;\n        }" ({ "{") (expression_statement "DAT_00179058 = __fd_00 + 2;" (assignment_expression "DAT_00179058 = __fd_00 + 2" (identifier "DAT_00179058") (= "=") (binary_expression "__fd_00 + 2" (identifier "__fd_00") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "iVar1 = xrealloc(iVar1,DAT_00179058 << 2);" (assignment_expression "iVar1 = xrealloc(iVar1,DAT_00179058 << 2)" (identifier "iVar1") (= "=") (call_expression "xrealloc(iVar1,DAT_00179058 << 2)" (identifier "xrealloc") (argument_list "(iVar1,DAT_00179058 << 2)" (( "(") (identifier "iVar1") (, ",") (binary_expression "DAT_00179058 << 2" (identifier "DAT_00179058") (<< "<<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "DAT_00179060 = iVar1;" (assignment_expression "DAT_00179060 = iVar1" (identifier "DAT_00179060") (= "=") (identifier "iVar1")) (; ";")) (expression_statement "memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);" (call_expression "memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4)" (identifier "memset") (argument_list "((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4)" (( "(") (cast_expression "(void *)(iVar1 + uVar3 * 4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + uVar3 * 4)" (( "(") (binary_expression "iVar1 + uVar3 * 4" (identifier "iVar1") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) () ")"))) (, ",") (number_literal "0") (, ",") (binary_expression "(DAT_00179058 - uVar3) * 4" (parenthesized_expression "(DAT_00179058 - uVar3)" (( "(") (binary_expression "DAT_00179058 - uVar3" (identifier "DAT_00179058") (- "-") (identifier "uVar3")) () ")")) (* "*") (number_literal "4")) () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(iVar1 + __fd_00 * 4) = 1;" (assignment_expression "*(undefined4 *)(iVar1 + __fd_00 * 4) = 1" (pointer_expression "*(undefined4 *)(iVar1 + __fd_00 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar1 + __fd_00 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + __fd_00 * 4)" (( "(") (binary_expression "iVar1 + __fd_00 * 4" (identifier "iVar1") (+ "+") (binary_expression "__fd_00 * 4" (identifier "__fd_00") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar1 = pipeline_pgrp;" (assignment_expression "iVar1 = pipeline_pgrp" (identifier "iVar1") (= "=") (identifier "pipeline_pgrp")) (; ";")) (expression_statement "uVar4 = last_made_pid;" (assignment_expression "uVar4 = last_made_pid" (identifier "uVar4") (= "=") (identifier "last_made_pid")) (; ";")) (expression_statement "DAT_0017905c = DAT_0017905c + 1;" (assignment_expression "DAT_0017905c = DAT_0017905c + 1" (identifier "DAT_0017905c") (= "=") (binary_expression "DAT_0017905c + 1" (identifier "DAT_0017905c") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {\n        pipeline_pgrp = shell_pgrp;\n      }" (if "if") (parenthesized_expression "((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0))" (( "(") (binary_expression "(pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)" (parenthesized_expression "(pipeline_pgrp == 0)" (( "(") (binary_expression "pipeline_pgrp == 0" (identifier "pipeline_pgrp") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((subshell_environment & 0x19) == 0)" (( "(") (binary_expression "(subshell_environment & 0x19) == 0" (parenthesized_expression "(subshell_environment & 0x19)" (( "(") (binary_expression "subshell_environment & 0x19" (identifier "subshell_environment") (& "&") (number_literal "0x19")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        pipeline_pgrp = shell_pgrp;\n      }" ({ "{") (expression_statement "pipeline_pgrp = shell_pgrp;" (assignment_expression "pipeline_pgrp = shell_pgrp" (identifier "pipeline_pgrp") (= "=") (identifier "shell_pgrp")) (; ";")) (} "}"))) (expression_statement "save_pipeline(1);" (call_expression "save_pipeline(1)" (identifier "save_pipeline") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar2 = make_child(0,1);" (assignment_expression "iVar2 = make_child(0,1)" (identifier "iVar2") (= "=") (call_expression "make_child(0,1)" (identifier "make_child") (argument_list "(0,1)" (( "(") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        reset_terminating_signals();\n        free_pushed_string_input();\n        restore_original_signals();\n        if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }\n        if (interrupt_state != 0) {\n          throw_to_top_level();\n        }\n        setup_async_signals();\n        subshell_environment = subshell_environment | 0x24;\n        change_flag(0x76,0x2b);\n        if (expanding_redir != 0) {\n          flush_temporary_env();\n        }\n      }" ({ "{") (expression_statement "reset_terminating_signals();" (call_expression "reset_terminating_signals()" (identifier "reset_terminating_signals") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "free_pushed_string_input();" (call_expression "free_pushed_string_input()" (identifier "free_pushed_string_input") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "restore_original_signals();" (call_expression "restore_original_signals()" (identifier "restore_original_signals") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (terminating_signal != 0) {\n          termsig_handler(terminating_signal);\n        }" (if "if") (parenthesized_expression "(terminating_signal != 0)" (( "(") (binary_expression "terminating_signal != 0" (identifier "terminating_signal") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          termsig_handler(terminating_signal);\n        }" ({ "{") (expression_statement "termsig_handler(terminating_signal);" (call_expression "termsig_handler(terminating_signal)" (identifier "termsig_handler") (argument_list "(terminating_signal)" (( "(") (identifier "terminating_signal") () ")"))) (; ";")) (} "}"))) (if_statement "if (interrupt_state != 0) {\n          throw_to_top_level();\n        }" (if "if") (parenthesized_expression "(interrupt_state != 0)" (( "(") (binary_expression "interrupt_state != 0" (identifier "interrupt_state") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          throw_to_top_level();\n        }" ({ "{") (expression_statement "throw_to_top_level();" (call_expression "throw_to_top_level()" (identifier "throw_to_top_level") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "setup_async_signals();" (call_expression "setup_async_signals()" (identifier "setup_async_signals") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "subshell_environment = subshell_environment | 0x24;" (assignment_expression "subshell_environment = subshell_environment | 0x24" (identifier "subshell_environment") (= "=") (binary_expression "subshell_environment | 0x24" (identifier "subshell_environment") (| "|") (number_literal "0x24"))) (; ";")) (expression_statement "change_flag(0x76,0x2b);" (call_expression "change_flag(0x76,0x2b)" (identifier "change_flag") (argument_list "(0x76,0x2b)" (( "(") (number_literal "0x76") (, ",") (number_literal "0x2b") () ")"))) (; ";")) (if_statement "if (expanding_redir != 0) {\n          flush_temporary_env();\n        }" (if "if") (parenthesized_expression "(expanding_redir != 0)" (( "(") (binary_expression "expanding_redir != 0" (identifier "expanding_redir") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          flush_temporary_env();\n        }" ({ "{") (expression_statement "flush_temporary_env();" (call_expression "flush_temporary_env()" (identifier "flush_temporary_env") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "set_sigchld_handler();" (call_expression "set_sigchld_handler()" (identifier "set_sigchld_handler") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "stop_making_children();" (call_expression "stop_making_children()" (identifier "stop_making_children") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pipeline_pgrp = iVar1;" (assignment_expression "pipeline_pgrp = iVar1" (identifier "pipeline_pgrp") (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (-1 < iVar2) {\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" (if "if") (parenthesized_expression "(-1 < iVar2)" (( "(") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n        if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }\n        if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }\n        last_procsub_child = restore_pipeline(0);\n        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;\n        last_made_pid = uVar4;\n        close_pgrp_pipe();\n        close(__fd);\n        goto LAB_000789cf;\n      }" ({ "{") (if_statement "if (iVar2 == 0) {\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          set_sigint_handler();\n          set_job_control(0);\n          if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }\n          if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }\n          uVar3 = (uint)(param_2 == 0);\n          iVar1 = dup2(__fd,uVar3);\n          if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }\n          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);\n          sys_error(uVar4,__ptr,uVar3);\n                    \n          exit(0x7f);\n        }" ({ "{") (expression_statement "set_sigint_handler();" (call_expression "set_sigint_handler()" (identifier "set_sigint_handler") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "set_job_control(0);" (call_expression "set_job_control(0)" (identifier "set_job_control") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (if_statement "if (pipeline_pgrp != shell_pgrp) {\n            pipeline_pgrp = getpid();\n          }" (if "if") (parenthesized_expression "(pipeline_pgrp != shell_pgrp)" (( "(") (binary_expression "pipeline_pgrp != shell_pgrp" (identifier "pipeline_pgrp") (!= "!=") (identifier "shell_pgrp")) () ")")) (compound_statement "{\n            pipeline_pgrp = getpid();\n          }" ({ "{") (expression_statement "pipeline_pgrp = getpid();" (assignment_expression "pipeline_pgrp = getpid()" (identifier "pipeline_pgrp") (= "=") (call_expression "getpid()" (identifier "getpid") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            fpurge(*(undefined4 *)PTR_stdout_00171f70);\n          }" ({ "{") (expression_statement "fpurge(*(undefined4 *)PTR_stdout_00171f70);" (call_expression "fpurge(*(undefined4 *)PTR_stdout_00171f70)" (identifier "fpurge") (argument_list "(*(undefined4 *)PTR_stdout_00171f70)" (( "(") (pointer_expression "*(undefined4 *)PTR_stdout_00171f70" (* "*") (cast_expression "(undefined4 *)PTR_stdout_00171f70" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stdout_00171f70"))) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = (uint)(param_2 == 0);" (assignment_expression "uVar3 = (uint)(param_2 == 0)" (identifier "uVar3") (= "=") (call_expression "(uint)(param_2 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")))) (; ";")) (expression_statement "iVar1 = dup2(__fd,uVar3);" (assignment_expression "iVar1 = dup2(__fd,uVar3)" (identifier "iVar1") (= "=") (call_expression "dup2(__fd,uVar3)" (identifier "dup2") (argument_list "(__fd,uVar3)" (( "(") (identifier "__fd") (, ",") (identifier "uVar3") () ")")))) (; ";")) (if_statement "if (-1 < iVar1) {\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n            if (uVar3 != __fd) {\n              close(__fd);\n            }\n            if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }\n            close(__fd_00);\n            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;\n            expanding_redir = 0;\n            FUN_00078660();\n            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);\n            if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }\n            last_command_exit_value = uVar4;\n            iVar1 = run_exit_trap();\n                    \n            exit(iVar1);\n          }" ({ "{") (if_statement "if (uVar3 != __fd) {\n              close(__fd);\n            }" (if "if") (parenthesized_expression "(uVar3 != __fd)" (( "(") (binary_expression "uVar3 != __fd" (identifier "uVar3") (!= "!=") (identifier "__fd")) () ")")) (compound_statement "{\n              close(__fd);\n            }" ({ "{") (expression_statement "close(__fd);" (call_expression "close(__fd)" (identifier "close") (argument_list "(__fd)" (( "(") (identifier "__fd") () ")"))) (; ";")) (} "}"))) (if_statement "if (current_fds_to_close != 0) {\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }" (if "if") (parenthesized_expression "(current_fds_to_close != 0)" (( "(") (binary_expression "current_fds_to_close != 0" (identifier "current_fds_to_close") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              close_fd_bitmap(current_fds_to_close);\n              current_fds_to_close = 0;\n            }" ({ "{") (expression_statement "close_fd_bitmap(current_fds_to_close);" (call_expression "close_fd_bitmap(current_fds_to_close)" (identifier "close_fd_bitmap") (argument_list "(current_fds_to_close)" (( "(") (identifier "current_fds_to_close") () ")"))) (; ";")) (expression_statement "current_fds_to_close = 0;" (assignment_expression "current_fds_to_close = 0" (identifier "current_fds_to_close") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" (identifier "close") (argument_list "(__fd_00)" (( "(") (identifier "__fd_00") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;" (assignment_expression "*(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0" (pointer_expression "*(undefined4 *)(DAT_00179060 + __fd_00 * 4)" (* "*") (cast_expression "(undefined4 *)(DAT_00179060 + __fd_00 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00179060 + __fd_00 * 4)" (( "(") (binary_expression "DAT_00179060 + __fd_00 * 4" (identifier "DAT_00179060") (+ "+") (binary_expression "__fd_00 * 4" (identifier "__fd_00") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "expanding_redir = 0;" (assignment_expression "expanding_redir = 0" (identifier "expanding_redir") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00078660();" (call_expression "FUN_00078660()" (identifier "FUN_00078660") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);" (assignment_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" (identifier "iVar1") (= "=") (call_expression "_setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c)" (identifier "_setjmp") (argument_list "((__jmp_buf_tag *)PTR_top_level_00171f8c)" (( "(") (cast_expression "(__jmp_buf_tag *)PTR_top_level_00171f8c" (( "(") (type_descriptor "__jmp_buf_tag *" (type_identifier "__jmp_buf_tag") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_top_level_00171f8c")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }\n            else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }\n            }" ({ "{") (if_statement "if ((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)) {\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }" (if "if") (parenthesized_expression "((return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0))" (( "(") (binary_expression "(return_catch_flag == 0) ||\n                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)" (parenthesized_expression "(return_catch_flag == 0)" (( "(") (binary_expression "return_catch_flag == 0" (identifier "return_catch_flag") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0)" (( "(") (comma_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),\n                 uVar4 = return_catch_value, iVar1 == 0" (assignment_expression "iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" (identifier "iVar1") (= "=") (call_expression "_setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c)" (identifier "_setjmp") (argument_list "((__jmp_buf_tag *)PTR_return_catch_00171e8c)" (( "(") (cast_expression "(__jmp_buf_tag *)PTR_return_catch_00171e8c" (( "(") (type_descriptor "__jmp_buf_tag *" (type_identifier "__jmp_buf_tag") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_return_catch_00171e8c")) () ")")))) (, ",") (comma_expression "uVar4 = return_catch_value, iVar1 == 0" (assignment_expression "uVar4 = return_catch_value" (identifier "uVar4") (= "=") (identifier "return_catch_value")) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n                subshell_level = subshell_level + 1;\n                uVar4 = parse_and_execute(param_1,"process substitution",5);\n              }" ({ "{") (expression_statement "subshell_level = subshell_level + 1;" (assignment_expression "subshell_level = subshell_level + 1" (identifier "subshell_level") (= "=") (binary_expression "subshell_level + 1" (identifier "subshell_level") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = parse_and_execute(param_1,"process substitution",5);" (assignment_expression "uVar4 = parse_and_execute(param_1,"process substitution",5)" (identifier "uVar4") (= "=") (call_expression "parse_and_execute(param_1,"process substitution",5)" (identifier "parse_and_execute") (argument_list "(param_1,"process substitution",5)" (( "(") (identifier "param_1") (, ",") (string_literal ""process substitution"" (" """) (string_content "process substitution") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" (else "else") (compound_statement "{\n              uVar4 = last_command_exit_value;\n              if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }\n            }" ({ "{") (expression_statement "uVar4 = last_command_exit_value;" (assignment_expression "uVar4 = last_command_exit_value" (identifier "uVar4") (= "=") (identifier "last_command_exit_value")) (; ";")) (if_statement "if ((iVar1 != 4) && (iVar1 != 3)) {\n                uVar4 = 1;\n              }" (if "if") (parenthesized_expression "((iVar1 != 4) && (iVar1 != 3))" (( "(") (binary_expression "(iVar1 != 4) && (iVar1 != 3)" (parenthesized_expression "(iVar1 != 4)" (( "(") (binary_expression "iVar1 != 4" (identifier "iVar1") (!= "!=") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 != 3)" (( "(") (binary_expression "iVar1 != 3" (identifier "iVar1") (!= "!=") (number_literal "3")) () ")"))) () ")")) (compound_statement "{\n                uVar4 = 1;\n              }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")))) (expression_statement "last_command_exit_value = uVar4;" (assignment_expression "last_command_exit_value = uVar4" (identifier "last_command_exit_value") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "iVar1 = run_exit_trap();" (assignment_expression "iVar1 = run_exit_trap()" (identifier "iVar1") (= "=") (call_expression "run_exit_trap()" (identifier "run_exit_trap") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "exit(iVar1);" (call_expression "exit(iVar1)" (identifier "exit") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"cannot duplicate named pipe %s as fd %d",5)" (identifier "dcgettext") (argument_list "(0,"cannot duplicate named pipe %s as fd %d",5)" (( "(") (number_literal "0") (, ",") (string_literal ""cannot duplicate named pipe %s as fd %d"" (" """) (string_content "cannot duplicate named pipe %s as fd %d") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "sys_error(uVar4,__ptr,uVar3);" (call_expression "sys_error(uVar4,__ptr,uVar3)" (identifier "sys_error") (argument_list "(uVar4,__ptr,uVar3)" (( "(") (identifier "uVar4") (, ",") (identifier "__ptr") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "exit(0x7f);" (call_expression "exit(0x7f)" (identifier "exit") (argument_list "(0x7f)" (( "(") (number_literal "0x7f") () ")"))) (; ";")) (} "}"))) (if_statement "if (last_procsub_child != 0) {\n          discard_last_procsub_child();\n        }" (if "if") (parenthesized_expression "(last_procsub_child != 0)" (( "(") (binary_expression "last_procsub_child != 0" (identifier "last_procsub_child") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          discard_last_procsub_child();\n        }" ({ "{") (expression_statement "discard_last_procsub_child();" (call_expression "discard_last_procsub_child()" (identifier "discard_last_procsub_child") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "last_procsub_child = restore_pipeline(0);" (assignment_expression "last_procsub_child = restore_pipeline(0)" (identifier "last_procsub_child") (= "=") (call_expression "restore_pipeline(0)" (identifier "restore_pipeline") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;" (assignment_expression "*(int *)(DAT_00179060 + __fd_00 * 4) = iVar2" (pointer_expression "*(int *)(DAT_00179060 + __fd_00 * 4)" (* "*") (cast_expression "(int *)(DAT_00179060 + __fd_00 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00179060 + __fd_00 * 4)" (( "(") (binary_expression "DAT_00179060 + __fd_00 * 4" (identifier "DAT_00179060") (+ "+") (binary_expression "__fd_00 * 4" (identifier "__fd_00") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "last_made_pid = uVar4;" (assignment_expression "last_made_pid = uVar4" (identifier "last_made_pid") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "close_pgrp_pipe();" (call_expression "close_pgrp_pipe()" (identifier "close_pgrp_pipe") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "close(__fd);" (call_expression "close(__fd)" (identifier "close") (argument_list "(__fd)" (( "(") (identifier "__fd") () ")"))) (; ";")) (goto_statement "goto LAB_000789cf;" (goto "goto") (statement_identifier "LAB_000789cf") (; ";")) (} "}"))) (expression_statement "uVar4 = dcgettext(0,"cannot make child for process substitution",5);" (assignment_expression "uVar4 = dcgettext(0,"cannot make child for process substitution",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"cannot make child for process substitution",5)" (identifier "dcgettext") (argument_list "(0,"cannot make child for process substitution",5)" (( "(") (number_literal "0") (, ",") (string_literal ""cannot make child for process substitution"" (" """) (string_content "cannot make child for process substitution") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "sys_error(&DAT_00125693,uVar4);" (call_expression "sys_error(&DAT_00125693,uVar4)" (identifier "sys_error") (argument_list "(&DAT_00125693,uVar4)" (( "(") (pointer_expression "&DAT_00125693" (& "&") (identifier "DAT_00125693")) (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "close(__fd_00);" (call_expression "close(__fd_00)" (identifier "close") (argument_list "(__fd_00)" (( "(") (identifier "__fd_00") () ")"))) (; ";")) (expression_statement "close(__fd);" (call_expression "close(__fd)" (identifier "close") (argument_list "(__fd)" (( "(") (identifier "__fd") () ")"))) (; ";")) (expression_statement "restore_pipeline(1);" (call_expression "restore_pipeline(1)" (identifier "restore_pipeline") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "__ptr = (undefined4 *)0x0;" (assignment_expression "__ptr = (undefined4 *)0x0" (identifier "__ptr") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_000789cf:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0010f8b0();\n  }" (statement_identifier "LAB_000789cf") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0010f8b0();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0010f8b0();\n  }" ({ "{") (expression_statement "FUN_0010f8b0();" (call_expression "FUN_0010f8b0()" (identifier "FUN_0010f8b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return __ptr;" (return "return") (identifier "__ptr") (; ";")) (} "}"))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

char * __regparm3 function_1(char *var_2,int var_8)

{
  type_1 var_49;
  type_2 pVar1;
  type_2 pVar2;
  int var_5;
  int var_17;
  char *var_14;
  char *pcVar4;
  type_2 *var_21;
  type_2 var_27;
  type_3 uVar7;
  type_1 var_48;
  int var_47;
  int var_1;
  int fildes [2];
  char intbuf [12];
  
  var_47 = *(int *)(var_1 + 0x14);
  if (((var_2 != (char *)0x0) && (*var_2 != '\0')) && (var_3 == 0)) {
    var_5 = var_4(fildes);
    if (var_5 < 0) {
      uVar7 = var_6(0,"cannot make pipe for process substitution",5);
      var_7("%s",uVar7);
    }
    else {
      var_49 = fildes[1 - var_8];
      var_17 = var_9(fildes[var_8],1,0x40);
      var_14 = (char *)var_10(0x11);
      var_11(var_14,"/dev/fd/",9);
      pcVar4 = var_12((type_4)var_17,intbuf,0xc);
      var_13(var_14 + 8,pcVar4);
      var_21 = var_15;
      var_5 = var_16;
      if ((var_15 == (type_2 *)0x0) || (var_16 <= var_17)) {
        var_16 = var_18();
        if (0x100 < (type_1)var_16) {
          var_16 = 0x100;
        }
        if (var_16 <= var_17) {
          var_16 = var_17 + 2;
        }
        var_21 = (type_2 *)var_19(var_21,var_16 << 2);
        var_15 = var_21;
        var_20(var_21 + var_5,0,(var_16 - var_5) * 4);
      }
      var_21[var_17] = 1;
      pVar2 = var_23;
      pVar1 = last_made_pid;
      var_22 = var_22 + 1;
      if ((var_23 == 0) || ((var_24 & 0x19U) == 0)) {
        var_23 = var_43;
      }
      var_25(1);
      var_27 = var_26((char *)0x0,1);
      if (var_27 == 0) {
        var_28();
        var_29();
        var_30();
        if (var_31 != 0) {
          var_32(var_31);
        }
        if (var_33 != 0) {
          var_34();
        }
        var_35();
        var_24 = var_24 | 0x24;
        var_36(0x76,0x2b);
        if (var_37 != 0) {
          var_38();
        }
      }
      var_39();
      var_40();
      var_23 = pVar2;
      if (-1 < var_27) {
        if (var_27 == 0) {
          var_41();
          var_42(0);
          if (var_23 != var_43) {
            var_23 = var_44();
          }
          if (var_8 == 0) {
            var_45(*(type_5 **)PTR_stdout_00171f70);
          }
          var_48 = (type_1)(var_8 == 0);
          var_47 = var_46(var_49,var_48);
          if (-1 < var_47) {
            if (var_48 != var_49) {
              var_50(var_49);
            }
            if (var_51 != (type_6 *)0x0) {
              var_52(var_51);
              var_51 = (type_6 *)0x0;
            }
            var_50(var_17);
            var_15[var_17] = 0;
            var_37 = 0;
            var_53(var_2);
            var_47 = var_54((type_7 *)PTR_top_level_00171f8c);
            if (var_47 == 0) {
              if ((var_55 == 0) ||
                 (var_47 = var_54((type_7 *)PTR_return_catch_00171e8c),
                 var_5 = return_catch_value, var_47 == 0)) {
                var_56 = var_56 + 1;
                var_5 = var_57(var_2,"process substitution",5);
              }
            }
            else {
              var_5 = last_command_exit_value;
              if ((var_47 != 4) && (var_47 != 3)) {
                var_5 = 1;
              }
            }
            last_command_exit_value = var_5;
            var_47 = var_58();
                    /* WARNING: Subroutine does not return */
            var_59(var_47);
          }
          pcVar4 = (char *)var_6(0,"cannot duplicate named pipe %s as fd %d",5);
          var_7(pcVar4,var_14,var_48);
                    /* WARNING: Subroutine does not return */
          var_59(0x7f);
        }
        if (var_60 != (type_8 *)0x0) {
          var_61();
        }
        var_60 = var_62(0);
        var_15[var_17] = var_27;
        last_made_pid = pVar1;
        var_63();
        var_50(var_49);
        goto LAB_000789cf;
      }
      uVar7 = var_6(0,"cannot make child for process substitution",5);
      var_7("%s",uVar7);
      var_64(var_14);
      var_50(var_17);
      var_50(var_49);
      var_62(1);
    }
  }
  var_14 = (char *)0x0;
LAB_000789cf:
  if (var_47 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_65();
  }
  return var_14;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 * __regparm3 MASKED(char *param_1,int param_2)

{
  uint __fd;
  int iVar1;
  int __fd_00;
  undefined4 *__ptr;
  char *__src;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  int in_GS_OFFSET;
  uint local_34 [2];
  undefined1 local_2c [12];
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (((param_1 != (char *)0x0) && (*param_1 != '\0')) && (wordexp_only == 0)) {
    iVar1 = pipe((int *)local_34);
    if (iVar1 < 0) {
      uVar4 = dcgettext(0,"cannot make pipe for process substitution",5);
      sys_error(&DAT_00125693,uVar4);
    }
    else {
      __fd = local_34[1 - param_2];
      __fd_00 = move_to_high_fd(local_34[param_2],1,0x40);
      __ptr = (undefined4 *)xmalloc(0x11);
      *__ptr = 0x7665642f;
      __ptr[1] = 0x2f64662f;
      *(undefined1 *)(__ptr + 2) = 0;
      __src = (char *)inttostr(__fd_00,__fd_00 >> 0x1f,local_2c,0xc);
      strcpy((char *)(__ptr + 2),__src);
      iVar1 = DAT_00179060;
      uVar3 = DAT_00179058;
      if ((DAT_00179060 == 0) || ((int)DAT_00179058 <= __fd_00)) {
        DAT_00179058 = getdtablesize();
        if (0x100 < DAT_00179058) {
          DAT_00179058 = 0x100;
        }
        if ((int)DAT_00179058 <= __fd_00) {
          DAT_00179058 = __fd_00 + 2;
        }
        iVar1 = xrealloc(iVar1,DAT_00179058 << 2);
        DAT_00179060 = iVar1;
        memset((void *)(iVar1 + uVar3 * 4),0,(DAT_00179058 - uVar3) * 4);
      }
      *(undefined4 *)(iVar1 + __fd_00 * 4) = 1;
      iVar1 = pipeline_pgrp;
      uVar4 = last_made_pid;
      DAT_0017905c = DAT_0017905c + 1;
      if ((pipeline_pgrp == 0) || ((subshell_environment & 0x19) == 0)) {
        pipeline_pgrp = shell_pgrp;
      }
      save_pipeline(1);
      iVar2 = make_child(0,1);
      if (iVar2 == 0) {
        reset_terminating_signals();
        free_pushed_string_input();
        restore_original_signals();
        if (terminating_signal != 0) {
          termsig_handler(terminating_signal);
        }
        if (interrupt_state != 0) {
          throw_to_top_level();
        }
        setup_async_signals();
        subshell_environment = subshell_environment | 0x24;
        change_flag(0x76,0x2b);
        if (expanding_redir != 0) {
          flush_temporary_env();
        }
      }
      set_sigchld_handler();
      stop_making_children();
      pipeline_pgrp = iVar1;
      if (-1 < iVar2) {
        if (iVar2 == 0) {
          set_sigint_handler();
          set_job_control(0);
          if (pipeline_pgrp != shell_pgrp) {
            pipeline_pgrp = getpid();
          }
          if (param_2 == 0) {
            fpurge(*(undefined4 *)PTR_stdout_00171f70);
          }
          uVar3 = (uint)(param_2 == 0);
          iVar1 = dup2(__fd,uVar3);
          if (-1 < iVar1) {
            if (uVar3 != __fd) {
              close(__fd);
            }
            if (current_fds_to_close != 0) {
              close_fd_bitmap(current_fds_to_close);
              current_fds_to_close = 0;
            }
            close(__fd_00);
            *(undefined4 *)(DAT_00179060 + __fd_00 * 4) = 0;
            expanding_redir = 0;
            FUN_00078660();
            iVar1 = _setjmp((__jmp_buf_tag *)PTR_top_level_00171f8c);
            if (iVar1 == 0) {
              if ((return_catch_flag == 0) ||
                 (iVar1 = _setjmp((__jmp_buf_tag *)PTR_return_catch_00171e8c),
                 uVar4 = return_catch_value, iVar1 == 0)) {
                subshell_level = subshell_level + 1;
                uVar4 = parse_and_execute(param_1,"process substitution",5);
              }
            }
            else {
              uVar4 = last_command_exit_value;
              if ((iVar1 != 4) && (iVar1 != 3)) {
                uVar4 = 1;
              }
            }
            last_command_exit_value = uVar4;
            iVar1 = run_exit_trap();
                    /* WARNING: Subroutine does not return */
            exit(iVar1);
          }
          uVar4 = dcgettext(0,"cannot duplicate named pipe %s as fd %d",5);
          sys_error(uVar4,__ptr,uVar3);
                    /* WARNING: Subroutine does not return */
          exit(0x7f);
        }
        if (last_procsub_child != 0) {
          discard_last_procsub_child();
        }
        last_procsub_child = restore_pipeline(0);
        *(int *)(DAT_00179060 + __fd_00 * 4) = iVar2;
        last_made_pid = uVar4;
        close_pgrp_pipe();
        close(__fd);
        goto LAB_000789cf;
      }
      uVar4 = dcgettext(0,"cannot make child for process substitution",5);
      sys_error(&DAT_00125693,uVar4);
      free(__ptr);
      close(__fd_00);
      close(__fd);
      restore_pipeline(1);
    }
  }
  __ptr = (undefined4 *)0x0;
LAB_000789cf:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0010f8b0();
  }
  return __ptr;
}

