
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int sk_localproxy_write(Socket s,char *data,int len)

{
  int iVar1;
  undefined4 *e;
  char *__file;
  __pid_t _Var2;
  char *pcVar3;
  char *pcVar4;
  int *piVar5;
  Socket unaff_EBX;
  Local_Proxy_Socket unaff_ESI;
  void *unaff_EDI;
  int in_GS_OFFSET;
  int unaff_retaddr;
  int iStack_50;
  int iStack_4c;
  int iStack_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  undefined4 uStack_2c;
  void *data_00;
  
  if (s[0xf] == (socket_function_table *)0x0) {
    bufchain_add((bufchain *)(s + 6),data,len);
    localproxy_try_send((Local_Proxy_Socket)s);
    iVar1 = bufchain_size((bufchain *)(s + 6));
    return iVar1;
  }
  data_00 = unaff_EDI;
  sk_localproxy_write(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI);
  if (unaff_ESI->outgoingeof == ADDRTYPE_UNSPEC) {
    uStack_2c = 0x8706d;
    bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);
    uStack_2c = 0x87074;
    localproxy_try_send(unaff_ESI);
    uStack_2c = 0x8707c;
    iVar1 = bufchain_size(&unaff_ESI->pending_output_data);
    return iVar1;
  }
  sk_localproxy_write((Socket)&_GLOBAL_OFFSET_TABLE_,(char *)s,(int)unaff_EDI);
  uStack_2c = 0x87099;
  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);
  iVar1 = conf_get_int((Conf *)len,0xd);
  if (1 < iVar1 - 5U) {
    e = (undefined4 *)0x0;
    goto LAB_00087218;
  }
  e = (undefined4 *)safemalloc(1,0x40);
  *e = &platform_new_connection::socket_fn_table;
  e[5] = data;
  e[4] = 0;
  e[0xf] = 0;
  bufchain_init((bufchain *)(e + 9));
  bufchain_init((bufchain *)(e + 6));
  bufchain_init((bufchain *)(e + 0xc));
  if (iVar1 == 5) {
    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);
    iStack_40 = (flags << 0x1e) >> 0x1f;
    iStack_3c = iStack_40;
    pcVar3 = dupprintf("Starting local proxy command: %s",__file);
    (*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0);
    safefree(pcVar3);
    iVar1 = pipe(&iStack_50);
    if (-1 < iVar1) {
      iVar1 = pipe(&iStack_48);
      if (-1 < iVar1) {
        if (iStack_40 == 0) {
          iVar1 = pipe(&iStack_40);
          if (iVar1 < 0) goto LAB_000873a8;
        }
        cloexec(iStack_4c);
        cloexec(iStack_48);
        if (-1 < iStack_40) {
          cloexec(iStack_40);
        }
        _Var2 = fork();
        if (-1 < _Var2) {
          if (_Var2 == 0) {
            close(0);
            close(1);
            dup2(iStack_50,0);
            dup2(iStack_44,1);
            close(iStack_50);
            close(iStack_44);
            if (-1 < iStack_40) {
              dup2(iStack_3c,2);
              close(iStack_3c);
            }
            noncloexec(0);
            noncloexec(1);
            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);
                    /* WARNING: Subroutine does not return */
            _exit(0xff);
          }
          safefree(__file);
          close(iStack_50);
          close(iStack_44);
          if (-1 < iStack_40) {
            close(iStack_3c);
          }
          e[3] = iStack_40;
          e[1] = iStack_4c;
          e[2] = iStack_48;
          goto LAB_00087192;
        }
        piVar5 = __errno_location();
        pcVar4 = strerror(*piVar5);
        pcVar3 = "fork: %s";
        goto LAB_000873c0;
      }
    }
LAB_000873a8:
    piVar5 = __errno_location();
    pcVar4 = strerror(*piVar5);
    pcVar3 = "pipe: %s";
  }
  else {
    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);
    iVar1 = open64("/dev/null",1);
    e[1] = iVar1;
    if (iVar1 == -1) {
      piVar5 = __errno_location();
      pcVar4 = strerror(*piVar5);
      pcVar3 = "/dev/null: %s";
    }
    else {
      iVar1 = open64(__file,0);
      e[2] = iVar1;
      if (iVar1 != -1) {
        safefree(__file);
        e[3] = 0xffffffff;
LAB_00087192:
        if (localproxy_by_fromfd == (tree234 *)0x0) {
          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);
        }
        if (localproxy_by_tofd == (tree234 *)0x0) {
          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);
        }
        if (localproxy_by_errfd == (tree234 *)0x0) {
          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);
        }
        add234(localproxy_by_fromfd,e);
        add234(localproxy_by_tofd,e);
        if (-1 < (int)e[3]) {
          add234(localproxy_by_errfd,e);
        }
        uxsel_set(e[2],1,localproxy_select_result);
        if (-1 < (int)e[3]) {
          uxsel_set(e[3],1,localproxy_select_result);
        }
        sk_addr_free((SockAddr)s);
        goto LAB_00087218;
      }
      piVar5 = __errno_location();
      len = (int)strerror(*piVar5);
      pcVar3 = "%s: %s";
      pcVar4 = __file;
    }
  }
LAB_000873c0:
  pcVar3 = dupprintf(pcVar3,pcVar4,len);
  e[4] = pcVar3;
  safefree(__file);
LAB_00087218:
  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (int)e;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 * FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)

{
  undefined4 *puVar1;
  int iVar2;
  char *__file;
  __pid_t _Var3;
  undefined4 uVar4;
  char *pcVar5;
  int *piVar6;
  char *pcVar7;
  undefined4 unaff_EBX;
  int unaff_ESI;
  int in_GS_OFFSET;
  int iStack_50;
  undefined4 uStack_4c;
  int iStack_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  undefined4 uStack_2c;
  undefined **ppuStack_28;
  
  if (*(int *)(param_1 + 0x3c) == 0) {
    FUN_0001d8a0();
    FUN_00086ad0();
    puVar1 = (undefined4 *)FUN_0001d890();
    return puVar1;
  }
  FUN_00086fc0();
  ppuStack_28 = &__DT_PLTGOT;
  if (*(int *)(unaff_ESI + 0x3c) == 0) {
    uStack_2c = 0x8706d;
    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);
    FUN_0001d8a0();
    uStack_2c = 0x87074;
    FUN_00086ad0();
    uStack_2c = 0x8707c;
    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);
    puVar1 = (undefined4 *)FUN_0001d890();
    return puVar1;
  }
  FUN_00086fc0();
  uStack_2c = 0x87099;
  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = FUN_000189b0(param_3,0xd);
  if (1 < iVar2 - 5U) {
    puVar1 = (undefined4 *)0x0;
    goto LAB_00087218;
  }
  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);
  *puVar1 = &PTR_FUN_000ccac0;
  puVar1[5] = param_2;
  puVar1[4] = 0;
  puVar1[0xf] = 0;
  FUN_0001d820(puVar1 + 9);
  FUN_0001d820(puVar1 + 6);
  FUN_0001d820(puVar1 + 0xc);
  if (iVar2 == 5) {
    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);
    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;
    iStack_3c = iStack_40;
    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);
    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);
    FUN_0001dd30(uVar4);
    iVar2 = pipe(&iStack_50);
    if (-1 < iVar2) {
      iVar2 = pipe(&iStack_48);
      if (-1 < iVar2) {
        if (iStack_40 == 0) {
          iVar2 = pipe(&iStack_40);
          if (iVar2 < 0) goto LAB_000873a8;
        }
        FUN_00082c30(uStack_4c);
        FUN_00082c30(iStack_48);
        if (-1 < iStack_40) {
          FUN_00082c30(iStack_40);
        }
        _Var3 = fork();
        if (-1 < _Var3) {
          if (_Var3 == 0) {
            close(0);
            close(1);
            dup2(iStack_50,0);
            uVar4 = 1;
            dup2(iStack_44,1);
            close(iStack_50);
            pcVar7 = (char *)close(iStack_44);
            if (-1 < iStack_40) {
              uVar4 = 2;
              dup2(iStack_3c,2);
              close(iStack_3c);
              param_3 = pcVar7;
            }
            FUN_00082cc0(0,uVar4,param_3);
            FUN_00082cc0(1);
            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);
                    /* WARNING: Subroutine does not return */
            _exit(0xff);
          }
          FUN_0001dd30(__file);
          close(iStack_50);
          close(iStack_44);
          if (-1 < iStack_40) {
            close(iStack_3c);
          }
          puVar1[3] = iStack_40;
          puVar1[1] = uStack_4c;
          puVar1[2] = iStack_48;
          goto LAB_00087192;
        }
        piVar6 = __errno_location();
        pcVar5 = strerror(*piVar6);
        pcVar7 = "fork: %s";
        goto LAB_000873c0;
      }
    }
LAB_000873a8:
    piVar6 = __errno_location();
    pcVar5 = strerror(*piVar6);
    pcVar7 = "pipe: %s";
  }
  else {
    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);
    iVar2 = open64("/dev/null",1);
    puVar1[1] = iVar2;
    if (iVar2 == -1) {
      piVar6 = __errno_location();
      pcVar5 = strerror(*piVar6);
      pcVar7 = "/dev/null: %s";
    }
    else {
      iVar2 = open64(__file,0);
      puVar1[2] = iVar2;
      if (iVar2 != -1) {
        FUN_0001dd30(__file);
        puVar1[3] = 0xffffffff;
LAB_00087192:
        if (DAT_000cd94c == 0) {
          DAT_000cd94c = FUN_0007d030(FUN_000869d0);
        }
        if (DAT_000cd948 == 0) {
          DAT_000cd948 = FUN_0007d030(FUN_00086a10);
        }
        if (DAT_000cd944 == 0) {
          DAT_000cd944 = FUN_0007d030(FUN_00086a50);
        }
        FUN_00080910(DAT_000cd94c,puVar1);
        FUN_00080910(DAT_000cd948,puVar1);
        if (-1 < (int)puVar1[3]) {
          FUN_00080910(DAT_000cd944,puVar1);
        }
        FUN_000875e0(puVar1[2],1,FUN_00086c40);
        if (-1 < (int)puVar1[3]) {
          FUN_000875e0(puVar1[3],1,FUN_00086c40);
        }
        FUN_000843f0(param_1);
        goto LAB_00087218;
      }
      piVar6 = __errno_location();
      param_3 = strerror(*piVar6);
      pcVar7 = "%s: %s";
      pcVar5 = __file;
    }
  }
LAB_000873c0:
  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);
  puVar1[4] = uVar4;
  FUN_0001dd30(__file);
LAB_00087218:
  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {
    return puVar1;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008d800();
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,dword ptr [ESP + 0x10]
CALL 0x000149a0
ADD EBX,0x45d74
MOV EAX,dword ptr [ESI + 0x3c]
TEST EAX,EAX
JNZ 0x00087033
SUB ESP,0x4
LEA EDI,[ESI + 0x18]
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
PUSH EDI
CALL 0x0001d8a0
MOV EAX,ESI
CALL 0x00086ad0
MOV dword ptr [ESP],EDI
CALL 0x0001d890
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
CALL 0x00086fc0
LEA ESI,[ESI]
NOP
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008d800();\n}\n\n" comment (function_definition "undefined4 * FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008d800();\n}" type_identifier (pointer_declarator "* FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)" * (function_declarator "FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)" identifier (parameter_list "(int param_1,undefined4 *param_2,char *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008d800();\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__file;" primitive_type (pointer_declarator "*__file" * identifier) ;) (declaration "__pid_t _Var3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 unaff_EBX;" type_identifier identifier ;) (declaration "int unaff_ESI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "int iStack_48;" primitive_type identifier ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "int iStack_3c;" primitive_type identifier ;) (declaration "int iStack_38;" primitive_type identifier ;) (declaration "undefined4 uStack_2c;" type_identifier identifier ;) (declaration "undefined **ppuStack_28;" type_identifier (pointer_declarator "**ppuStack_28" * (pointer_declarator "*ppuStack_28" * identifier)) ;) (if_statement "if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) == 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" { (expression_statement "FUN_0001d8a0();" (call_expression "FUN_0001d8a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00086ad0();" (call_expression "FUN_00086ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0001d890();" (assignment_expression "puVar1 = (undefined4 *)FUN_0001d890()" identifier = (cast_expression "(undefined4 *)FUN_0001d890()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001d890()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar1;" return identifier ;) })) (expression_statement "FUN_00086fc0();" (call_expression "FUN_00086fc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "ppuStack_28 = &__DT_PLTGOT;" (assignment_expression "ppuStack_28 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" if (parenthesized_expression "(*(int *)(unaff_ESI + 0x3c) == 0)" ( (binary_expression "*(int *)(unaff_ESI + 0x3c) == 0" (pointer_expression "*(int *)(unaff_ESI + 0x3c)" * (cast_expression "(int *)(unaff_ESI + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 0x3c)" ( (binary_expression "unaff_ESI + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" { (expression_statement "uStack_2c = 0x8706d;" (assignment_expression "uStack_2c = 0x8706d" identifier = number_literal) ;) (expression_statement "ppuStack_28 = (undefined **)(unaff_ESI + 0x18);" (assignment_expression "ppuStack_28 = (undefined **)(unaff_ESI + 0x18)" identifier = (cast_expression "(undefined **)(unaff_ESI + 0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_ESI + 0x18)" ( (binary_expression "unaff_ESI + 0x18" identifier + number_literal) )))) ;) (expression_statement "FUN_0001d8a0();" (call_expression "FUN_0001d8a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_2c = 0x87074;" (assignment_expression "uStack_2c = 0x87074" identifier = number_literal) ;) (expression_statement "FUN_00086ad0();" (call_expression "FUN_00086ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_2c = 0x8707c;" (assignment_expression "uStack_2c = 0x8707c" identifier = number_literal) ;) (expression_statement "ppuStack_28 = (undefined **)(unaff_ESI + 0x18);" (assignment_expression "ppuStack_28 = (undefined **)(unaff_ESI + 0x18)" identifier = (cast_expression "(undefined **)(unaff_ESI + 0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_ESI + 0x18)" ( (binary_expression "unaff_ESI + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0001d890();" (assignment_expression "puVar1 = (undefined4 *)FUN_0001d890()" identifier = (cast_expression "(undefined4 *)FUN_0001d890()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001d890()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar1;" return identifier ;) })) (expression_statement "FUN_00086fc0();" (call_expression "FUN_00086fc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_2c = 0x87099;" (assignment_expression "uStack_2c = 0x87099" identifier = number_literal) ;) (expression_statement "iStack_38 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iStack_38 = *(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) ))))) ;) (expression_statement "iVar2 = FUN_000189b0(param_3,0xd);" (assignment_expression "iVar2 = FUN_000189b0(param_3,0xd)" identifier = (call_expression "FUN_000189b0(param_3,0xd)" identifier (argument_list "(param_3,0xd)" ( identifier , number_literal )))) ;) (if_statement "if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" if (parenthesized_expression "(1 < iVar2 - 5U)" ( (binary_expression "1 < iVar2 - 5U" number_literal < (binary_expression "iVar2 - 5U" identifier - number_literal)) )) (compound_statement "{\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" { (expression_statement "puVar1 = (undefined4 *)0x0;" (assignment_expression "puVar1 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00087218;" goto statement_identifier ;) })) (expression_statement "puVar1 = (undefined4 *)FUN_0001db90(1,0x40);" (assignment_expression "puVar1 = (undefined4 *)FUN_0001db90(1,0x40)" identifier = (cast_expression "(undefined4 *)FUN_0001db90(1,0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001db90(1,0x40)" identifier (argument_list "(1,0x40)" ( number_literal , number_literal ))))) ;) (expression_statement "*puVar1 = &PTR_FUN_000ccac0;" (assignment_expression "*puVar1 = &PTR_FUN_000ccac0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_000ccac0" & identifier)) ;) (expression_statement "puVar1[5] = param_2;" (assignment_expression "puVar1[5] = param_2" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[4] = 0;" (assignment_expression "puVar1[4] = 0" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[0xf] = 0;" (assignment_expression "puVar1[0xf] = 0" (subscript_expression "puVar1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0001d820(puVar1 + 9);" (call_expression "FUN_0001d820(puVar1 + 9)" identifier (argument_list "(puVar1 + 9)" ( (binary_expression "puVar1 + 9" identifier + number_literal) ))) ;) (expression_statement "FUN_0001d820(puVar1 + 6);" (call_expression "FUN_0001d820(puVar1 + 6)" identifier (argument_list "(puVar1 + 6)" ( (binary_expression "puVar1 + 6" identifier + number_literal) ))) ;) (expression_statement "FUN_0001d820(puVar1 + 0xc);" (call_expression "FUN_0001d820(puVar1 + 0xc)" identifier (argument_list "(puVar1 + 0xc)" ( (binary_expression "puVar1 + 0xc" identifier + number_literal) ))) ;) (if_statement "if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" if (parenthesized_expression "(iVar2 == 5)" ( (binary_expression "iVar2 == 5" identifier == number_literal) )) (compound_statement "{\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }" { (expression_statement "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);" (assignment_expression "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier = (cast_expression "(char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier (argument_list "(param_1,unaff_EBX,param_3)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;" (assignment_expression "iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f" identifier = (binary_expression "(DAT_000cd964 << 0x1e) >> 0x1f" (parenthesized_expression "(DAT_000cd964 << 0x1e)" ( (binary_expression "DAT_000cd964 << 0x1e" identifier << number_literal) )) >> number_literal)) ;) (expression_statement "iStack_3c = iStack_40;" (assignment_expression "iStack_3c = iStack_40" identifier = identifier) ;) (expression_statement "uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);" (assignment_expression "uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file)" identifier = (call_expression "FUN_0001cea0("Starting local proxy command: %s",__file)" identifier (argument_list "("Starting local proxy command: %s",__file)" ( (string_literal ""Starting local proxy command: %s"" " string_content ") , identifier )))) ;) (expression_statement "(**(code **)*param_2)(param_2,2,0,0,uVar4,0);" (call_expression "(**(code **)*param_2)(param_2,2,0,0,uVar4,0)" (parenthesized_expression "(**(code **)*param_2)" ( (pointer_expression "**(code **)*param_2" * (pointer_expression "*(code **)*param_2" * (cast_expression "(code **)*param_2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*param_2" * identifier)))) )) (argument_list "(param_2,2,0,0,uVar4,0)" ( identifier , number_literal , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "FUN_0001dd30(uVar4);" (call_expression "FUN_0001dd30(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "iVar2 = pipe(&iStack_50);" (assignment_expression "iVar2 = pipe(&iStack_50)" identifier = (call_expression "pipe(&iStack_50)" identifier (argument_list "(&iStack_50)" ( (pointer_expression "&iStack_50" & identifier) )))) ;) (if_statement "if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" if (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) (compound_statement "{\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" { (expression_statement "iVar2 = pipe(&iStack_48);" (assignment_expression "iVar2 = pipe(&iStack_48)" identifier = (call_expression "pipe(&iStack_48)" identifier (argument_list "(&iStack_48)" ( (pointer_expression "&iStack_48" & identifier) )))) ;) (if_statement "if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }" if (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) (compound_statement "{\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }" { (if_statement "if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }" if (parenthesized_expression "(iStack_40 == 0)" ( (binary_expression "iStack_40 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }" { (expression_statement "iVar2 = pipe(&iStack_40);" (assignment_expression "iVar2 = pipe(&iStack_40)" identifier = (call_expression "pipe(&iStack_40)" identifier (argument_list "(&iStack_40)" ( (pointer_expression "&iStack_40" & identifier) )))) ;) (if_statement "if (iVar2 < 0) goto LAB_000873a8;" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (goto_statement "goto LAB_000873a8;" goto statement_identifier ;)) })) (expression_statement "FUN_00082c30(uStack_4c);" (call_expression "FUN_00082c30(uStack_4c)" identifier (argument_list "(uStack_4c)" ( identifier ))) ;) (expression_statement "FUN_00082c30(iStack_48);" (call_expression "FUN_00082c30(iStack_48)" identifier (argument_list "(iStack_48)" ( identifier ))) ;) (if_statement "if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n          FUN_00082c30(iStack_40);\n        }" { (expression_statement "FUN_00082c30(iStack_40);" (call_expression "FUN_00082c30(iStack_40)" identifier (argument_list "(iStack_40)" ( identifier ))) ;) })) (expression_statement "_Var3 = fork();" (assignment_expression "_Var3 = fork()" identifier = (call_expression "fork()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }" if (parenthesized_expression "(-1 < _Var3)" ( (binary_expression "-1 < _Var3" number_literal < identifier) )) (compound_statement "{\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }" { (if_statement "if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }" if (parenthesized_expression "(_Var3 == 0)" ( (binary_expression "_Var3 == 0" identifier == number_literal) )) (compound_statement "{\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }" { (expression_statement "close(0);" (call_expression "close(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "close(1);" (call_expression "close(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "dup2(iStack_50,0);" (call_expression "dup2(iStack_50,0)" identifier (argument_list "(iStack_50,0)" ( identifier , number_literal ))) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "dup2(iStack_44,1);" (call_expression "dup2(iStack_44,1)" identifier (argument_list "(iStack_44,1)" ( identifier , number_literal ))) ;) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" identifier (argument_list "(iStack_50)" ( identifier ))) ;) (expression_statement "pcVar7 = (char *)close(iStack_44);" (assignment_expression "pcVar7 = (char *)close(iStack_44)" identifier = (cast_expression "(char *)close(iStack_44)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "close(iStack_44)" identifier (argument_list "(iStack_44)" ( identifier ))))) ;) (if_statement "if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }" { (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "dup2(iStack_3c,2);" (call_expression "dup2(iStack_3c,2)" identifier (argument_list "(iStack_3c,2)" ( identifier , number_literal ))) ;) (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" identifier (argument_list "(iStack_3c)" ( identifier ))) ;) (expression_statement "param_3 = pcVar7;" (assignment_expression "param_3 = pcVar7" identifier = identifier) ;) })) (expression_statement "FUN_00082cc0(0,uVar4,param_3);" (call_expression "FUN_00082cc0(0,uVar4,param_3)" identifier (argument_list "(0,uVar4,param_3)" ( number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00082cc0(1);" (call_expression "FUN_00082cc0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "execl("/bin/sh","sh",&DAT_0009e45c,__file,0);" (call_expression "execl("/bin/sh","sh",&DAT_0009e45c,__file,0)" identifier (argument_list "("/bin/sh","sh",&DAT_0009e45c,__file,0)" ( (string_literal ""/bin/sh"" " string_content ") , (string_literal ""sh"" " string_content ") , (pointer_expression "&DAT_0009e45c" & identifier) , identifier , number_literal ))) ;) comment (expression_statement "_exit(0xff);" (call_expression "_exit(0xff)" identifier (argument_list "(0xff)" ( number_literal ))) ;) })) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" identifier (argument_list "(iStack_50)" ( identifier ))) ;) (expression_statement "close(iStack_44);" (call_expression "close(iStack_44)" identifier (argument_list "(iStack_44)" ( identifier ))) ;) (if_statement "if (-1 < iStack_40) {\n            close(iStack_3c);\n          }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n            close(iStack_3c);\n          }" { (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" identifier (argument_list "(iStack_3c)" ( identifier ))) ;) })) (expression_statement "puVar1[3] = iStack_40;" (assignment_expression "puVar1[3] = iStack_40" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[1] = uStack_4c;" (assignment_expression "puVar1[1] = uStack_4c" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = iStack_48;" (assignment_expression "puVar1[2] = iStack_48" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00087192;" goto statement_identifier ;) })) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "fork: %s";" (assignment_expression "pcVar7 = "fork: %s"" identifier = (string_literal ""fork: %s"" " string_content ")) ;) (goto_statement "goto LAB_000873c0;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000873a8:\n    piVar6 = __errno_location();" statement_identifier : (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "pipe: %s";" (assignment_expression "pcVar7 = "pipe: %s"" identifier = (string_literal ""pipe: %s"" " string_content ")) ;) }) (else_clause "else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" else (compound_statement "{\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" { (expression_statement "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);" (assignment_expression "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier = (cast_expression "(char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier (argument_list "(param_1,unaff_EBX,param_3)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = open64("/dev/null",1);" (assignment_expression "iVar2 = open64("/dev/null",1)" identifier = (call_expression "open64("/dev/null",1)" identifier (argument_list "("/dev/null",1)" ( (string_literal ""/dev/null"" " string_content ") , number_literal )))) ;) (expression_statement "puVar1[1] = iVar2;" (assignment_expression "puVar1[1] = iVar2" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }" { (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "/dev/null: %s";" (assignment_expression "pcVar7 = "/dev/null: %s"" identifier = (string_literal ""/dev/null: %s"" " string_content ")) ;) }) (else_clause "else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" else (compound_statement "{\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" { (expression_statement "iVar2 = open64(__file,0);" (assignment_expression "iVar2 = open64(__file,0)" identifier = (call_expression "open64(__file,0)" identifier (argument_list "(__file,0)" ( identifier , number_literal )))) ;) (expression_statement "puVar1[2] = iVar2;" (assignment_expression "puVar1[2] = iVar2" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }" { (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "puVar1[3] = 0xffffffff;" (assignment_expression "puVar1[3] = 0xffffffff" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" statement_identifier : (if_statement "if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" if (parenthesized_expression "(DAT_000cd94c == 0)" ( (binary_expression "DAT_000cd94c == 0" identifier == number_literal) )) (compound_statement "{\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" { (expression_statement "DAT_000cd94c = FUN_0007d030(FUN_000869d0);" (assignment_expression "DAT_000cd94c = FUN_0007d030(FUN_000869d0)" identifier = (call_expression "FUN_0007d030(FUN_000869d0)" identifier (argument_list "(FUN_000869d0)" ( identifier )))) ;) }))) (if_statement "if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }" if (parenthesized_expression "(DAT_000cd948 == 0)" ( (binary_expression "DAT_000cd948 == 0" identifier == number_literal) )) (compound_statement "{\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }" { (expression_statement "DAT_000cd948 = FUN_0007d030(FUN_00086a10);" (assignment_expression "DAT_000cd948 = FUN_0007d030(FUN_00086a10)" identifier = (call_expression "FUN_0007d030(FUN_00086a10)" identifier (argument_list "(FUN_00086a10)" ( identifier )))) ;) })) (if_statement "if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }" if (parenthesized_expression "(DAT_000cd944 == 0)" ( (binary_expression "DAT_000cd944 == 0" identifier == number_literal) )) (compound_statement "{\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }" { (expression_statement "DAT_000cd944 = FUN_0007d030(FUN_00086a50);" (assignment_expression "DAT_000cd944 = FUN_0007d030(FUN_00086a50)" identifier = (call_expression "FUN_0007d030(FUN_00086a50)" identifier (argument_list "(FUN_00086a50)" ( identifier )))) ;) })) (expression_statement "FUN_00080910(DAT_000cd94c,puVar1);" (call_expression "FUN_00080910(DAT_000cd94c,puVar1)" identifier (argument_list "(DAT_000cd94c,puVar1)" ( identifier , identifier ))) ;) (expression_statement "FUN_00080910(DAT_000cd948,puVar1);" (call_expression "FUN_00080910(DAT_000cd948,puVar1)" identifier (argument_list "(DAT_000cd948,puVar1)" ( identifier , identifier ))) ;) (if_statement "if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }" if (parenthesized_expression "(-1 < (int)puVar1[3])" ( (binary_expression "-1 < (int)puVar1[3]" number_literal < (cast_expression "(int)puVar1[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          FUN_00080910(DAT_000cd944,puVar1);\n        }" { (expression_statement "FUN_00080910(DAT_000cd944,puVar1);" (call_expression "FUN_00080910(DAT_000cd944,puVar1)" identifier (argument_list "(DAT_000cd944,puVar1)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_000875e0(puVar1[2],1,FUN_00086c40);" (call_expression "FUN_000875e0(puVar1[2],1,FUN_00086c40)" identifier (argument_list "(puVar1[2],1,FUN_00086c40)" ( (subscript_expression "puVar1[2]" identifier [ number_literal ]) , number_literal , identifier ))) ;) (if_statement "if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }" if (parenthesized_expression "(-1 < (int)puVar1[3])" ( (binary_expression "-1 < (int)puVar1[3]" number_literal < (cast_expression "(int)puVar1[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }" { (expression_statement "FUN_000875e0(puVar1[3],1,FUN_00086c40);" (call_expression "FUN_000875e0(puVar1[3],1,FUN_00086c40)" identifier (argument_list "(puVar1[3],1,FUN_00086c40)" ( (subscript_expression "puVar1[3]" identifier [ number_literal ]) , number_literal , identifier ))) ;) })) (expression_statement "FUN_000843f0(param_1);" (call_expression "FUN_000843f0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_00087218;" goto statement_identifier ;) })) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "param_3 = strerror(*piVar6);" (assignment_expression "param_3 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "%s: %s";" (assignment_expression "pcVar7 = "%s: %s"" identifier = (string_literal ""%s: %s"" " string_content ")) ;) (expression_statement "pcVar5 = __file;" (assignment_expression "pcVar5 = __file" identifier = identifier) ;) }))) }))) (labeled_statement "LAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);" statement_identifier : (expression_statement "uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);" (assignment_expression "uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3)" identifier = (call_expression "FUN_0001cea0(pcVar7,pcVar5,param_3)" identifier (argument_list "(pcVar7,pcVar5,param_3)" ( identifier , identifier , identifier )))) ;)) (expression_statement "puVar1[4] = uVar4;" (assignment_expression "puVar1[4] = uVar4" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (labeled_statement "LAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }" statement_identifier : (if_statement "if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }" if (parenthesized_expression "(iStack_38 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iStack_38 == *(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    return puVar1;\n  }" { (return_statement "return puVar1;" return identifier ;) }))) comment (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint sk_localproxy_write(Socket s,char *data,int len)\n\n{\n  int iVar1;\n  undefined4 *e;\n  char *__file;\n  __pid_t _Var2;\n  char *pcVar3;\n  char *pcVar4;\n  int *piVar5;\n  Socket unaff_EBX;\n  Local_Proxy_Socket unaff_ESI;\n  void *unaff_EDI;\n  int in_GS_OFFSET;\n  int unaff_retaddr;\n  int iStack_50;\n  int iStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  void *data_00;\n  \n  if (s[0xf] == (socket_function_table *)0x0) {\n    bufchain_add((bufchain *)(s + 6),data,len);\n    localproxy_try_send((Local_Proxy_Socket)s);\n    iVar1 = bufchain_size((bufchain *)(s + 6));\n    return iVar1;\n  }\n  data_00 = unaff_EDI;\n  sk_localproxy_write(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI);\n  if (unaff_ESI->outgoingeof == ADDRTYPE_UNSPEC) {\n    uStack_2c = 0x8706d;\n    bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);\n    uStack_2c = 0x87074;\n    localproxy_try_send(unaff_ESI);\n    uStack_2c = 0x8707c;\n    iVar1 = bufchain_size(&unaff_ESI->pending_output_data);\n    return iVar1;\n  }\n  sk_localproxy_write((Socket)&_GLOBAL_OFFSET_TABLE_,(char *)s,(int)unaff_EDI);\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = conf_get_int((Conf *)len,0xd);\n  if (1 < iVar1 - 5U) {\n    e = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  e = (undefined4 *)safemalloc(1,0x40);\n  *e = &platform_new_connection::socket_fn_table;\n  e[5] = data;\n  e[4] = 0;\n  e[0xf] = 0;\n  bufchain_init((bufchain *)(e + 9));\n  bufchain_init((bufchain *)(e + 6));\n  bufchain_init((bufchain *)(e + 0xc));\n  if (iVar1 == 5) {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iStack_40 = (flags << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    pcVar3 = dupprintf("Starting local proxy command: %s",__file);\n    (*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0);\n    safefree(pcVar3);\n    iVar1 = pipe(&iStack_50);\n    if (-1 < iVar1) {\n      iVar1 = pipe(&iStack_48);\n      if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar5 = __errno_location();\n    pcVar4 = strerror(*piVar5);\n    pcVar3 = "pipe: %s";\n  }\n  else {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iVar1 = open64("/dev/null",1);\n    e[1] = iVar1;\n    if (iVar1 == -1) {\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }\n    else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }\n  }\nLAB_000873c0:\n  pcVar3 = dupprintf(pcVar3,pcVar4,len);\n  e[4] = pcVar3;\n  safefree(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)e;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "int sk_localproxy_write(Socket s,char *data,int len)\n\n{\n  int iVar1;\n  undefined4 *e;\n  char *__file;\n  __pid_t _Var2;\n  char *pcVar3;\n  char *pcVar4;\n  int *piVar5;\n  Socket unaff_EBX;\n  Local_Proxy_Socket unaff_ESI;\n  void *unaff_EDI;\n  int in_GS_OFFSET;\n  int unaff_retaddr;\n  int iStack_50;\n  int iStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  void *data_00;\n  \n  if (s[0xf] == (socket_function_table *)0x0) {\n    bufchain_add((bufchain *)(s + 6),data,len);\n    localproxy_try_send((Local_Proxy_Socket)s);\n    iVar1 = bufchain_size((bufchain *)(s + 6));\n    return iVar1;\n  }\n  data_00 = unaff_EDI;\n  sk_localproxy_write(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI);\n  if (unaff_ESI->outgoingeof == ADDRTYPE_UNSPEC) {\n    uStack_2c = 0x8706d;\n    bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);\n    uStack_2c = 0x87074;\n    localproxy_try_send(unaff_ESI);\n    uStack_2c = 0x8707c;\n    iVar1 = bufchain_size(&unaff_ESI->pending_output_data);\n    return iVar1;\n  }\n  sk_localproxy_write((Socket)&_GLOBAL_OFFSET_TABLE_,(char *)s,(int)unaff_EDI);\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = conf_get_int((Conf *)len,0xd);\n  if (1 < iVar1 - 5U) {\n    e = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  e = (undefined4 *)safemalloc(1,0x40);\n  *e = &platform_new_connection::socket_fn_table;\n  e[5] = data;\n  e[4] = 0;\n  e[0xf] = 0;\n  bufchain_init((bufchain *)(e + 9));\n  bufchain_init((bufchain *)(e + 6));\n  bufchain_init((bufchain *)(e + 0xc));\n  if (iVar1 == 5) {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iStack_40 = (flags << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    pcVar3 = dupprintf("Starting local proxy command: %s",__file);\n    (*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0);\n    safefree(pcVar3);\n    iVar1 = pipe(&iStack_50);\n    if (-1 < iVar1) {\n      iVar1 = pipe(&iStack_48);\n      if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar5 = __errno_location();\n    pcVar4 = strerror(*piVar5);\n    pcVar3 = "pipe: %s";\n  }\n  else {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iVar1 = open64("/dev/null",1);\n    e[1] = iVar1;\n    if (iVar1 == -1) {\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }\n    else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }\n  }\nLAB_000873c0:\n  pcVar3 = dupprintf(pcVar3,pcVar4,len);\n  e[4] = pcVar3;\n  safefree(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)e;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "sk_localproxy_write(Socket s,char *data,int len)" identifier (parameter_list "(Socket s,char *data,int len)" ( (parameter_declaration "Socket s" type_identifier identifier) , (parameter_declaration "char *data" primitive_type (pointer_declarator "*data" * identifier)) , (parameter_declaration "int len" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 *e;\n  char *__file;\n  __pid_t _Var2;\n  char *pcVar3;\n  char *pcVar4;\n  int *piVar5;\n  Socket unaff_EBX;\n  Local_Proxy_Socket unaff_ESI;\n  void *unaff_EDI;\n  int in_GS_OFFSET;\n  int unaff_retaddr;\n  int iStack_50;\n  int iStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  void *data_00;\n  \n  if (s[0xf] == (socket_function_table *)0x0) {\n    bufchain_add((bufchain *)(s + 6),data,len);\n    localproxy_try_send((Local_Proxy_Socket)s);\n    iVar1 = bufchain_size((bufchain *)(s + 6));\n    return iVar1;\n  }\n  data_00 = unaff_EDI;\n  sk_localproxy_write(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI);\n  if (unaff_ESI->outgoingeof == ADDRTYPE_UNSPEC) {\n    uStack_2c = 0x8706d;\n    bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);\n    uStack_2c = 0x87074;\n    localproxy_try_send(unaff_ESI);\n    uStack_2c = 0x8707c;\n    iVar1 = bufchain_size(&unaff_ESI->pending_output_data);\n    return iVar1;\n  }\n  sk_localproxy_write((Socket)&_GLOBAL_OFFSET_TABLE_,(char *)s,(int)unaff_EDI);\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = conf_get_int((Conf *)len,0xd);\n  if (1 < iVar1 - 5U) {\n    e = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  e = (undefined4 *)safemalloc(1,0x40);\n  *e = &platform_new_connection::socket_fn_table;\n  e[5] = data;\n  e[4] = 0;\n  e[0xf] = 0;\n  bufchain_init((bufchain *)(e + 9));\n  bufchain_init((bufchain *)(e + 6));\n  bufchain_init((bufchain *)(e + 0xc));\n  if (iVar1 == 5) {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iStack_40 = (flags << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    pcVar3 = dupprintf("Starting local proxy command: %s",__file);\n    (*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0);\n    safefree(pcVar3);\n    iVar1 = pipe(&iStack_50);\n    if (-1 < iVar1) {\n      iVar1 = pipe(&iStack_48);\n      if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar5 = __errno_location();\n    pcVar4 = strerror(*piVar5);\n    pcVar3 = "pipe: %s";\n  }\n  else {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iVar1 = open64("/dev/null",1);\n    e[1] = iVar1;\n    if (iVar1 == -1) {\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }\n    else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }\n  }\nLAB_000873c0:\n  pcVar3 = dupprintf(pcVar3,pcVar4,len);\n  e[4] = pcVar3;\n  safefree(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)e;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 *e;" type_identifier (pointer_declarator "*e" * identifier) ;) (declaration "char *__file;" primitive_type (pointer_declarator "*__file" * identifier) ;) (declaration "__pid_t _Var2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "Socket unaff_EBX;" type_identifier identifier ;) (declaration "Local_Proxy_Socket unaff_ESI;" type_identifier identifier ;) (declaration "void *unaff_EDI;" primitive_type (pointer_declarator "*unaff_EDI" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int unaff_retaddr;" primitive_type identifier ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "int iStack_4c;" primitive_type identifier ;) (declaration "int iStack_48;" primitive_type identifier ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "int iStack_3c;" primitive_type identifier ;) (declaration "int iStack_38;" primitive_type identifier ;) (declaration "undefined4 uStack_2c;" type_identifier identifier ;) (declaration "void *data_00;" primitive_type (pointer_declarator "*data_00" * identifier) ;) (if_statement "if (s[0xf] == (socket_function_table *)0x0) {\n    bufchain_add((bufchain *)(s + 6),data,len);\n    localproxy_try_send((Local_Proxy_Socket)s);\n    iVar1 = bufchain_size((bufchain *)(s + 6));\n    return iVar1;\n  }" if (parenthesized_expression "(s[0xf] == (socket_function_table *)0x0)" ( (binary_expression "s[0xf] == (socket_function_table *)0x0" (subscript_expression "s[0xf]" identifier [ number_literal ]) == (cast_expression "(socket_function_table *)0x0" ( (type_descriptor "socket_function_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bufchain_add((bufchain *)(s + 6),data,len);\n    localproxy_try_send((Local_Proxy_Socket)s);\n    iVar1 = bufchain_size((bufchain *)(s + 6));\n    return iVar1;\n  }" { (expression_statement "bufchain_add((bufchain *)(s + 6),data,len);" (call_expression "bufchain_add((bufchain *)(s + 6),data,len)" identifier (argument_list "((bufchain *)(s + 6),data,len)" ( (cast_expression "(bufchain *)(s + 6)" ( (type_descriptor "bufchain *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(s + 6)" ( (binary_expression "s + 6" identifier + number_literal) ))) , identifier , identifier ))) ;) (expression_statement "localproxy_try_send((Local_Proxy_Socket)s);" (call_expression "localproxy_try_send((Local_Proxy_Socket)s)" identifier (argument_list "((Local_Proxy_Socket)s)" ( (cast_expression "(Local_Proxy_Socket)s" ( (type_descriptor "Local_Proxy_Socket" type_identifier) ) identifier) ))) ;) (expression_statement "iVar1 = bufchain_size((bufchain *)(s + 6));" (assignment_expression "iVar1 = bufchain_size((bufchain *)(s + 6))" identifier = (call_expression "bufchain_size((bufchain *)(s + 6))" identifier (argument_list "((bufchain *)(s + 6))" ( (cast_expression "(bufchain *)(s + 6)" ( (type_descriptor "bufchain *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(s + 6)" ( (binary_expression "s + 6" identifier + number_literal) ))) )))) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "data_00 = unaff_EDI;" (assignment_expression "data_00 = unaff_EDI" identifier = identifier) ;) (expression_statement "sk_localproxy_write(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI);" (call_expression "sk_localproxy_write(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI)" identifier (argument_list "(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI)" ( identifier , (cast_expression "(char *)unaff_ESI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)unaff_EDI" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (unaff_ESI->outgoingeof == ADDRTYPE_UNSPEC) {\n    uStack_2c = 0x8706d;\n    bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);\n    uStack_2c = 0x87074;\n    localproxy_try_send(unaff_ESI);\n    uStack_2c = 0x8707c;\n    iVar1 = bufchain_size(&unaff_ESI->pending_output_data);\n    return iVar1;\n  }" if (parenthesized_expression "(unaff_ESI->outgoingeof == ADDRTYPE_UNSPEC)" ( (binary_expression "unaff_ESI->outgoingeof == ADDRTYPE_UNSPEC" (field_expression "unaff_ESI->outgoingeof" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    uStack_2c = 0x8706d;\n    bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);\n    uStack_2c = 0x87074;\n    localproxy_try_send(unaff_ESI);\n    uStack_2c = 0x8707c;\n    iVar1 = bufchain_size(&unaff_ESI->pending_output_data);\n    return iVar1;\n  }" { (expression_statement "uStack_2c = 0x8706d;" (assignment_expression "uStack_2c = 0x8706d" identifier = number_literal) ;) (expression_statement "bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);" (call_expression "bufchain_add(&unaff_ESI->pending_output_data,data_00,unaff_retaddr)" identifier (argument_list "(&unaff_ESI->pending_output_data,data_00,unaff_retaddr)" ( (pointer_expression "&unaff_ESI->pending_output_data" & (field_expression "unaff_ESI->pending_output_data" identifier -> field_identifier)) , identifier , identifier ))) ;) (expression_statement "uStack_2c = 0x87074;" (assignment_expression "uStack_2c = 0x87074" identifier = number_literal) ;) (expression_statement "localproxy_try_send(unaff_ESI);" (call_expression "localproxy_try_send(unaff_ESI)" identifier (argument_list "(unaff_ESI)" ( identifier ))) ;) (expression_statement "uStack_2c = 0x8707c;" (assignment_expression "uStack_2c = 0x8707c" identifier = number_literal) ;) (expression_statement "iVar1 = bufchain_size(&unaff_ESI->pending_output_data);" (assignment_expression "iVar1 = bufchain_size(&unaff_ESI->pending_output_data)" identifier = (call_expression "bufchain_size(&unaff_ESI->pending_output_data)" identifier (argument_list "(&unaff_ESI->pending_output_data)" ( (pointer_expression "&unaff_ESI->pending_output_data" & (field_expression "unaff_ESI->pending_output_data" identifier -> field_identifier)) )))) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "sk_localproxy_write((Socket)&_GLOBAL_OFFSET_TABLE_,(char *)s,(int)unaff_EDI);" (call_expression "sk_localproxy_write((Socket)&_GLOBAL_OFFSET_TABLE_,(char *)s,(int)unaff_EDI)" identifier (argument_list "((Socket)&_GLOBAL_OFFSET_TABLE_,(char *)s,(int)unaff_EDI)" ( (binary_expression "(Socket)&_GLOBAL_OFFSET_TABLE_" (parenthesized_expression "(Socket)" ( identifier )) & identifier) , (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)unaff_EDI" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "uStack_2c = 0x87099;" (assignment_expression "uStack_2c = 0x87099" identifier = number_literal) ;) (expression_statement "iStack_38 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iStack_38 = *(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) ))))) ;) (expression_statement "iVar1 = conf_get_int((Conf *)len,0xd);" (assignment_expression "iVar1 = conf_get_int((Conf *)len,0xd)" identifier = (call_expression "conf_get_int((Conf *)len,0xd)" identifier (argument_list "((Conf *)len,0xd)" ( (cast_expression "(Conf *)len" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (if_statement "if (1 < iVar1 - 5U) {\n    e = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" if (parenthesized_expression "(1 < iVar1 - 5U)" ( (binary_expression "1 < iVar1 - 5U" number_literal < (binary_expression "iVar1 - 5U" identifier - number_literal)) )) (compound_statement "{\n    e = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" { (expression_statement "e = (undefined4 *)0x0;" (assignment_expression "e = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00087218;" goto statement_identifier ;) })) (expression_statement "e = (undefined4 *)safemalloc(1,0x40);" (assignment_expression "e = (undefined4 *)safemalloc(1,0x40)" identifier = (cast_expression "(undefined4 *)safemalloc(1,0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x40)" identifier (argument_list "(1,0x40)" ( number_literal , number_literal ))))) ;) (expression_statement "*e = &platform_new_connection::socket_fn_table;" (assignment_expression "*e = &platform_new_connection" (pointer_expression "*e" * identifier) = (pointer_expression "&platform_new_connection" & identifier)) (ERROR "::socket_fn_table" : : identifier) ;) (expression_statement "e[5] = data;" (assignment_expression "e[5] = data" (subscript_expression "e[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "e[4] = 0;" (assignment_expression "e[4] = 0" (subscript_expression "e[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "e[0xf] = 0;" (assignment_expression "e[0xf] = 0" (subscript_expression "e[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "bufchain_init((bufchain *)(e + 9));" (call_expression "bufchain_init((bufchain *)(e + 9))" identifier (argument_list "((bufchain *)(e + 9))" ( (cast_expression "(bufchain *)(e + 9)" ( (type_descriptor "bufchain *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(e + 9)" ( (binary_expression "e + 9" identifier + number_literal) ))) ))) ;) (expression_statement "bufchain_init((bufchain *)(e + 6));" (call_expression "bufchain_init((bufchain *)(e + 6))" identifier (argument_list "((bufchain *)(e + 6))" ( (cast_expression "(bufchain *)(e + 6)" ( (type_descriptor "bufchain *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(e + 6)" ( (binary_expression "e + 6" identifier + number_literal) ))) ))) ;) (expression_statement "bufchain_init((bufchain *)(e + 0xc));" (call_expression "bufchain_init((bufchain *)(e + 0xc))" identifier (argument_list "((bufchain *)(e + 0xc))" ( (cast_expression "(bufchain *)(e + 0xc)" ( (type_descriptor "bufchain *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(e + 0xc)" ( (binary_expression "e + 0xc" identifier + number_literal) ))) ))) ;) (if_statement "if (iVar1 == 5) {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iStack_40 = (flags << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    pcVar3 = dupprintf("Starting local proxy command: %s",__file);\n    (*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0);\n    safefree(pcVar3);\n    iVar1 = pipe(&iStack_50);\n    if (-1 < iVar1) {\n      iVar1 = pipe(&iStack_48);\n      if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar5 = __errno_location();\n    pcVar4 = strerror(*piVar5);\n    pcVar3 = "pipe: %s";\n  }\n  else {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iVar1 = open64("/dev/null",1);\n    e[1] = iVar1;\n    if (iVar1 == -1) {\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }\n    else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }\n  }" if (parenthesized_expression "(iVar1 == 5)" ( (binary_expression "iVar1 == 5" identifier == number_literal) )) (compound_statement "{\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iStack_40 = (flags << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    pcVar3 = dupprintf("Starting local proxy command: %s",__file);\n    (*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0);\n    safefree(pcVar3);\n    iVar1 = pipe(&iStack_50);\n    if (-1 < iVar1) {\n      iVar1 = pipe(&iStack_48);\n      if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar5 = __errno_location();\n    pcVar4 = strerror(*piVar5);\n    pcVar3 = "pipe: %s";\n  }" { (expression_statement "__file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);" (assignment_expression "__file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len)" identifier = (call_expression "format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len)" identifier (argument_list "((SockAddr)s,(int)unaff_EBX,(Conf *)len)" ( (cast_expression "(SockAddr)s" ( (type_descriptor "SockAddr" type_identifier) ) identifier) , (cast_expression "(int)unaff_EBX" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(Conf *)len" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iStack_40 = (flags << 0x1e) >> 0x1f;" (assignment_expression "iStack_40 = (flags << 0x1e) >> 0x1f" identifier = (binary_expression "(flags << 0x1e) >> 0x1f" (parenthesized_expression "(flags << 0x1e)" ( (binary_expression "flags << 0x1e" identifier << number_literal) )) >> number_literal)) ;) (expression_statement "iStack_3c = iStack_40;" (assignment_expression "iStack_3c = iStack_40" identifier = identifier) ;) (expression_statement "pcVar3 = dupprintf("Starting local proxy command: %s",__file);" (assignment_expression "pcVar3 = dupprintf("Starting local proxy command: %s",__file)" identifier = (call_expression "dupprintf("Starting local proxy command: %s",__file)" identifier (argument_list "("Starting local proxy command: %s",__file)" ( (string_literal ""Starting local proxy command: %s"" " string_content ") , identifier )))) ;) (expression_statement "(*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0);" (call_expression "(*(code *)**(undefined4 **)data)(data,2,0,0,pcVar3,0)" (parenthesized_expression "(*(code *)**(undefined4 **)data)" ( (pointer_expression "*(code *)**(undefined4 **)data" * (cast_expression "(code *)**(undefined4 **)data" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)data" * (pointer_expression "*(undefined4 **)data" * (cast_expression "(undefined4 **)data" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))))) )) (argument_list "(data,2,0,0,pcVar3,0)" ( identifier , number_literal , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "safefree(pcVar3);" (call_expression "safefree(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "iVar1 = pipe(&iStack_50);" (assignment_expression "iVar1 = pipe(&iStack_50)" identifier = (call_expression "pipe(&iStack_50)" identifier (argument_list "(&iStack_50)" ( (pointer_expression "&iStack_50" & identifier) )))) ;) (if_statement "if (-1 < iVar1) {\n      iVar1 = pipe(&iStack_48);\n      if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      iVar1 = pipe(&iStack_48);\n      if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" { (expression_statement "iVar1 = pipe(&iStack_48);" (assignment_expression "iVar1 = pipe(&iStack_48)" identifier = (call_expression "pipe(&iStack_48)" identifier (argument_list "(&iStack_48)" ( (pointer_expression "&iStack_48" & identifier) )))) ;) (if_statement "if (-1 < iVar1) {\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n        if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }\n        cloexec(iStack_4c);\n        cloexec(iStack_48);\n        if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }\n        _Var2 = fork();\n        if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar5 = __errno_location();\n        pcVar4 = strerror(*piVar5);\n        pcVar3 = "fork: %s";\n        goto LAB_000873c0;\n      }" { (if_statement "if (iStack_40 == 0) {\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }" if (parenthesized_expression "(iStack_40 == 0)" ( (binary_expression "iStack_40 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar1 = pipe(&iStack_40);\n          if (iVar1 < 0) goto LAB_000873a8;\n        }" { (expression_statement "iVar1 = pipe(&iStack_40);" (assignment_expression "iVar1 = pipe(&iStack_40)" identifier = (call_expression "pipe(&iStack_40)" identifier (argument_list "(&iStack_40)" ( (pointer_expression "&iStack_40" & identifier) )))) ;) (if_statement "if (iVar1 < 0) goto LAB_000873a8;" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_000873a8;" goto statement_identifier ;)) })) (expression_statement "cloexec(iStack_4c);" (call_expression "cloexec(iStack_4c)" identifier (argument_list "(iStack_4c)" ( identifier ))) ;) (expression_statement "cloexec(iStack_48);" (call_expression "cloexec(iStack_48)" identifier (argument_list "(iStack_48)" ( identifier ))) ;) (if_statement "if (-1 < iStack_40) {\n          cloexec(iStack_40);\n        }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n          cloexec(iStack_40);\n        }" { (expression_statement "cloexec(iStack_40);" (call_expression "cloexec(iStack_40)" identifier (argument_list "(iStack_40)" ( identifier ))) ;) })) (expression_statement "_Var2 = fork();" (assignment_expression "_Var2 = fork()" identifier = (call_expression "fork()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < _Var2) {\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }" if (parenthesized_expression "(-1 < _Var2)" ( (binary_expression "-1 < _Var2" number_literal < identifier) )) (compound_statement "{\n          if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }\n          safefree(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          e[3] = iStack_40;\n          e[1] = iStack_4c;\n          e[2] = iStack_48;\n          goto LAB_00087192;\n        }" { (if_statement "if (_Var2 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }" if (parenthesized_expression "(_Var2 == 0)" ( (binary_expression "_Var2 == 0" identifier == number_literal) )) (compound_statement "{\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            dup2(iStack_44,1);\n            close(iStack_50);\n            close(iStack_44);\n            if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }\n            noncloexec(0);\n            noncloexec(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    /* WARNING: Subroutine does not return */\n            _exit(0xff);\n          }" { (expression_statement "close(0);" (call_expression "close(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "close(1);" (call_expression "close(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "dup2(iStack_50,0);" (call_expression "dup2(iStack_50,0)" identifier (argument_list "(iStack_50,0)" ( identifier , number_literal ))) ;) (expression_statement "dup2(iStack_44,1);" (call_expression "dup2(iStack_44,1)" identifier (argument_list "(iStack_44,1)" ( identifier , number_literal ))) ;) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" identifier (argument_list "(iStack_50)" ( identifier ))) ;) (expression_statement "close(iStack_44);" (call_expression "close(iStack_44)" identifier (argument_list "(iStack_44)" ( identifier ))) ;) (if_statement "if (-1 < iStack_40) {\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n            }" { (expression_statement "dup2(iStack_3c,2);" (call_expression "dup2(iStack_3c,2)" identifier (argument_list "(iStack_3c,2)" ( identifier , number_literal ))) ;) (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" identifier (argument_list "(iStack_3c)" ( identifier ))) ;) })) (expression_statement "noncloexec(0);" (call_expression "noncloexec(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "noncloexec(1);" (call_expression "noncloexec(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "execl("/bin/sh","sh",&DAT_0009e45c,__file,0);" (call_expression "execl("/bin/sh","sh",&DAT_0009e45c,__file,0)" identifier (argument_list "("/bin/sh","sh",&DAT_0009e45c,__file,0)" ( (string_literal ""/bin/sh"" " string_content ") , (string_literal ""sh"" " string_content ") , (pointer_expression "&DAT_0009e45c" & identifier) , identifier , number_literal ))) ;) comment (expression_statement "_exit(0xff);" (call_expression "_exit(0xff)" identifier (argument_list "(0xff)" ( number_literal ))) ;) })) (expression_statement "safefree(__file);" (call_expression "safefree(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" identifier (argument_list "(iStack_50)" ( identifier ))) ;) (expression_statement "close(iStack_44);" (call_expression "close(iStack_44)" identifier (argument_list "(iStack_44)" ( identifier ))) ;) (if_statement "if (-1 < iStack_40) {\n            close(iStack_3c);\n          }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n            close(iStack_3c);\n          }" { (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" identifier (argument_list "(iStack_3c)" ( identifier ))) ;) })) (expression_statement "e[3] = iStack_40;" (assignment_expression "e[3] = iStack_40" (subscript_expression "e[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "e[1] = iStack_4c;" (assignment_expression "e[1] = iStack_4c" (subscript_expression "e[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "e[2] = iStack_48;" (assignment_expression "e[2] = iStack_48" (subscript_expression "e[2]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00087192;" goto statement_identifier ;) })) (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = strerror(*piVar5);" (assignment_expression "pcVar4 = strerror(*piVar5)" identifier = (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) )))) ;) (expression_statement "pcVar3 = "fork: %s";" (assignment_expression "pcVar3 = "fork: %s"" identifier = (string_literal ""fork: %s"" " string_content ")) ;) (goto_statement "goto LAB_000873c0;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000873a8:\n    piVar5 = __errno_location();" statement_identifier : (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar4 = strerror(*piVar5);" (assignment_expression "pcVar4 = strerror(*piVar5)" identifier = (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) )))) ;) (expression_statement "pcVar3 = "pipe: %s";" (assignment_expression "pcVar3 = "pipe: %s"" identifier = (string_literal ""pipe: %s"" " string_content ")) ;) }) (else_clause "else {\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iVar1 = open64("/dev/null",1);\n    e[1] = iVar1;\n    if (iVar1 == -1) {\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }\n    else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }\n  }" else (compound_statement "{\n    __file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);\n    iVar1 = open64("/dev/null",1);\n    e[1] = iVar1;\n    if (iVar1 == -1) {\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }\n    else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }\n  }" { (expression_statement "__file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len);" (assignment_expression "__file = format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len)" identifier = (call_expression "format_telnet_command((SockAddr)s,(int)unaff_EBX,(Conf *)len)" identifier (argument_list "((SockAddr)s,(int)unaff_EBX,(Conf *)len)" ( (cast_expression "(SockAddr)s" ( (type_descriptor "SockAddr" type_identifier) ) identifier) , (cast_expression "(int)unaff_EBX" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(Conf *)len" ( (type_descriptor "Conf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar1 = open64("/dev/null",1);" (assignment_expression "iVar1 = open64("/dev/null",1)" identifier = (call_expression "open64("/dev/null",1)" identifier (argument_list "("/dev/null",1)" ( (string_literal ""/dev/null"" " string_content ") , number_literal )))) ;) (expression_statement "e[1] = iVar1;" (assignment_expression "e[1] = iVar1" (subscript_expression "e[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar1 == -1) {\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }\n    else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }" if (parenthesized_expression "(iVar1 == -1)" ( (binary_expression "iVar1 == -1" identifier == number_literal) )) (compound_statement "{\n      piVar5 = __errno_location();\n      pcVar4 = strerror(*piVar5);\n      pcVar3 = "/dev/null: %s";\n    }" { (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = strerror(*piVar5);" (assignment_expression "pcVar4 = strerror(*piVar5)" identifier = (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) )))) ;) (expression_statement "pcVar3 = "/dev/null: %s";" (assignment_expression "pcVar3 = "/dev/null: %s"" identifier = (string_literal ""/dev/null: %s"" " string_content ")) ;) }) (else_clause "else {\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }" else (compound_statement "{\n      iVar1 = open64(__file,0);\n      e[2] = iVar1;\n      if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }\n      piVar5 = __errno_location();\n      len = (int)strerror(*piVar5);\n      pcVar3 = "%s: %s";\n      pcVar4 = __file;\n    }" { (expression_statement "iVar1 = open64(__file,0);" (assignment_expression "iVar1 = open64(__file,0)" identifier = (call_expression "open64(__file,0)" identifier (argument_list "(__file,0)" ( identifier , number_literal )))) ;) (expression_statement "e[2] = iVar1;" (assignment_expression "e[2] = iVar1" (subscript_expression "e[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar1 != -1) {\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }" if (parenthesized_expression "(iVar1 != -1)" ( (binary_expression "iVar1 != -1" identifier != number_literal) )) (compound_statement "{\n        safefree(__file);\n        e[3] = 0xffffffff;\nLAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }\n        if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }\n        if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }\n        add234(localproxy_by_fromfd,e);\n        add234(localproxy_by_tofd,e);\n        if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }\n        uxsel_set(e[2],1,localproxy_select_result);\n        if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }\n        sk_addr_free((SockAddr)s);\n        goto LAB_00087218;\n      }" { (expression_statement "safefree(__file);" (call_expression "safefree(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "e[3] = 0xffffffff;" (assignment_expression "e[3] = 0xffffffff" (subscript_expression "e[3]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_00087192:\n        if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }" statement_identifier : (if_statement "if (localproxy_by_fromfd == (tree234 *)0x0) {\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }" if (parenthesized_expression "(localproxy_by_fromfd == (tree234 *)0x0)" ( (binary_expression "localproxy_by_fromfd == (tree234 *)0x0" identifier == (cast_expression "(tree234 *)0x0" ( (type_descriptor "tree234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);\n        }" { (expression_statement "localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp);" (assignment_expression "localproxy_by_fromfd = newtree234(localproxy_fromfd_cmp)" identifier = (call_expression "newtree234(localproxy_fromfd_cmp)" identifier (argument_list "(localproxy_fromfd_cmp)" ( identifier )))) ;) }))) (if_statement "if (localproxy_by_tofd == (tree234 *)0x0) {\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }" if (parenthesized_expression "(localproxy_by_tofd == (tree234 *)0x0)" ( (binary_expression "localproxy_by_tofd == (tree234 *)0x0" identifier == (cast_expression "(tree234 *)0x0" ( (type_descriptor "tree234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          localproxy_by_tofd = newtree234(localproxy_tofd_cmp);\n        }" { (expression_statement "localproxy_by_tofd = newtree234(localproxy_tofd_cmp);" (assignment_expression "localproxy_by_tofd = newtree234(localproxy_tofd_cmp)" identifier = (call_expression "newtree234(localproxy_tofd_cmp)" identifier (argument_list "(localproxy_tofd_cmp)" ( identifier )))) ;) })) (if_statement "if (localproxy_by_errfd == (tree234 *)0x0) {\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }" if (parenthesized_expression "(localproxy_by_errfd == (tree234 *)0x0)" ( (binary_expression "localproxy_by_errfd == (tree234 *)0x0" identifier == (cast_expression "(tree234 *)0x0" ( (type_descriptor "tree234 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          localproxy_by_errfd = newtree234(localproxy_errfd_cmp);\n        }" { (expression_statement "localproxy_by_errfd = newtree234(localproxy_errfd_cmp);" (assignment_expression "localproxy_by_errfd = newtree234(localproxy_errfd_cmp)" identifier = (call_expression "newtree234(localproxy_errfd_cmp)" identifier (argument_list "(localproxy_errfd_cmp)" ( identifier )))) ;) })) (expression_statement "add234(localproxy_by_fromfd,e);" (call_expression "add234(localproxy_by_fromfd,e)" identifier (argument_list "(localproxy_by_fromfd,e)" ( identifier , identifier ))) ;) (expression_statement "add234(localproxy_by_tofd,e);" (call_expression "add234(localproxy_by_tofd,e)" identifier (argument_list "(localproxy_by_tofd,e)" ( identifier , identifier ))) ;) (if_statement "if (-1 < (int)e[3]) {\n          add234(localproxy_by_errfd,e);\n        }" if (parenthesized_expression "(-1 < (int)e[3])" ( (binary_expression "-1 < (int)e[3]" number_literal < (cast_expression "(int)e[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "e[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          add234(localproxy_by_errfd,e);\n        }" { (expression_statement "add234(localproxy_by_errfd,e);" (call_expression "add234(localproxy_by_errfd,e)" identifier (argument_list "(localproxy_by_errfd,e)" ( identifier , identifier ))) ;) })) (expression_statement "uxsel_set(e[2],1,localproxy_select_result);" (call_expression "uxsel_set(e[2],1,localproxy_select_result)" identifier (argument_list "(e[2],1,localproxy_select_result)" ( (subscript_expression "e[2]" identifier [ number_literal ]) , number_literal , identifier ))) ;) (if_statement "if (-1 < (int)e[3]) {\n          uxsel_set(e[3],1,localproxy_select_result);\n        }" if (parenthesized_expression "(-1 < (int)e[3])" ( (binary_expression "-1 < (int)e[3]" number_literal < (cast_expression "(int)e[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "e[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uxsel_set(e[3],1,localproxy_select_result);\n        }" { (expression_statement "uxsel_set(e[3],1,localproxy_select_result);" (call_expression "uxsel_set(e[3],1,localproxy_select_result)" identifier (argument_list "(e[3],1,localproxy_select_result)" ( (subscript_expression "e[3]" identifier [ number_literal ]) , number_literal , identifier ))) ;) })) (expression_statement "sk_addr_free((SockAddr)s);" (call_expression "sk_addr_free((SockAddr)s)" identifier (argument_list "((SockAddr)s)" ( (cast_expression "(SockAddr)s" ( (type_descriptor "SockAddr" type_identifier) ) identifier) ))) ;) (goto_statement "goto LAB_00087218;" goto statement_identifier ;) })) (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "len = (int)strerror(*piVar5);" (assignment_expression "len = (int)strerror(*piVar5)" identifier = (cast_expression "(int)strerror(*piVar5)" ( (type_descriptor "int" primitive_type) ) (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) ))))) ;) (expression_statement "pcVar3 = "%s: %s";" (assignment_expression "pcVar3 = "%s: %s"" identifier = (string_literal ""%s: %s"" " string_content ")) ;) (expression_statement "pcVar4 = __file;" (assignment_expression "pcVar4 = __file" identifier = identifier) ;) }))) }))) (labeled_statement "LAB_000873c0:\n  pcVar3 = dupprintf(pcVar3,pcVar4,len);" statement_identifier : (expression_statement "pcVar3 = dupprintf(pcVar3,pcVar4,len);" (assignment_expression "pcVar3 = dupprintf(pcVar3,pcVar4,len)" identifier = (call_expression "dupprintf(pcVar3,pcVar4,len)" identifier (argument_list "(pcVar3,pcVar4,len)" ( identifier , identifier , identifier )))) ;)) (expression_statement "e[4] = pcVar3;" (assignment_expression "e[4] = pcVar3" (subscript_expression "e[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "safefree(__file);" (call_expression "safefree(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (labeled_statement "LAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)e;\n  }" statement_identifier : (if_statement "if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)e;\n  }" if (parenthesized_expression "(iStack_38 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iStack_38 == *(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    return (int)e;\n  }" { (return_statement "return (int)e;" return (cast_expression "(int)e" ( (type_descriptor "int" primitive_type) ) identifier) ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 * FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    \n  FUN_0008d800();\n}\n\n" (function_definition "undefined4 * FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    \n  FUN_0008d800();\n}" type_identifier (pointer_declarator "* FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)" * (function_declarator "FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)" identifier (parameter_list "(int param_1,undefined4 *param_2,char *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    \n  FUN_0008d800();\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__file;" primitive_type (pointer_declarator "*__file" * identifier) ;) (declaration "__pid_t _Var3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 unaff_EBX;" type_identifier identifier ;) (declaration "int unaff_ESI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "int iStack_48;" primitive_type identifier ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "int iStack_3c;" primitive_type identifier ;) (declaration "int iStack_38;" primitive_type identifier ;) (declaration "undefined4 uStack_2c;" type_identifier identifier ;) (declaration "undefined **ppuStack_28;" type_identifier (pointer_declarator "**ppuStack_28" * (pointer_declarator "*ppuStack_28" * identifier)) ;) (if_statement "if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) == 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" { (expression_statement "FUN_0001d8a0();" (call_expression "FUN_0001d8a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00086ad0();" (call_expression "FUN_00086ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0001d890();" (assignment_expression "puVar1 = (undefined4 *)FUN_0001d890()" identifier = (cast_expression "(undefined4 *)FUN_0001d890()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001d890()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar1;" return identifier ;) })) (expression_statement "FUN_00086fc0();" (call_expression "FUN_00086fc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "ppuStack_28 = &__DT_PLTGOT;" (assignment_expression "ppuStack_28 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" if (parenthesized_expression "(*(int *)(unaff_ESI + 0x3c) == 0)" ( (binary_expression "*(int *)(unaff_ESI + 0x3c) == 0" (pointer_expression "*(int *)(unaff_ESI + 0x3c)" * (cast_expression "(int *)(unaff_ESI + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_ESI + 0x3c)" ( (binary_expression "unaff_ESI + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" { (expression_statement "uStack_2c = 0x8706d;" (assignment_expression "uStack_2c = 0x8706d" identifier = number_literal) ;) (expression_statement "ppuStack_28 = (undefined **)(unaff_ESI + 0x18);" (assignment_expression "ppuStack_28 = (undefined **)(unaff_ESI + 0x18)" identifier = (cast_expression "(undefined **)(unaff_ESI + 0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_ESI + 0x18)" ( (binary_expression "unaff_ESI + 0x18" identifier + number_literal) )))) ;) (expression_statement "FUN_0001d8a0();" (call_expression "FUN_0001d8a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_2c = 0x87074;" (assignment_expression "uStack_2c = 0x87074" identifier = number_literal) ;) (expression_statement "FUN_00086ad0();" (call_expression "FUN_00086ad0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_2c = 0x8707c;" (assignment_expression "uStack_2c = 0x8707c" identifier = number_literal) ;) (expression_statement "ppuStack_28 = (undefined **)(unaff_ESI + 0x18);" (assignment_expression "ppuStack_28 = (undefined **)(unaff_ESI + 0x18)" identifier = (cast_expression "(undefined **)(unaff_ESI + 0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_ESI + 0x18)" ( (binary_expression "unaff_ESI + 0x18" identifier + number_literal) )))) ;) (expression_statement "puVar1 = (undefined4 *)FUN_0001d890();" (assignment_expression "puVar1 = (undefined4 *)FUN_0001d890()" identifier = (cast_expression "(undefined4 *)FUN_0001d890()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001d890()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar1;" return identifier ;) })) (expression_statement "FUN_00086fc0();" (call_expression "FUN_00086fc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uStack_2c = 0x87099;" (assignment_expression "uStack_2c = 0x87099" identifier = number_literal) ;) (expression_statement "iStack_38 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iStack_38 = *(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) ))))) ;) (expression_statement "iVar2 = FUN_000189b0(param_3,0xd);" (assignment_expression "iVar2 = FUN_000189b0(param_3,0xd)" identifier = (call_expression "FUN_000189b0(param_3,0xd)" identifier (argument_list "(param_3,0xd)" ( identifier , number_literal )))) ;) (if_statement "if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" if (parenthesized_expression "(1 < iVar2 - 5U)" ( (binary_expression "1 < iVar2 - 5U" number_literal < (binary_expression "iVar2 - 5U" identifier - number_literal)) )) (compound_statement "{\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" { (expression_statement "puVar1 = (undefined4 *)0x0;" (assignment_expression "puVar1 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00087218;" goto statement_identifier ;) })) (expression_statement "puVar1 = (undefined4 *)FUN_0001db90(1,0x40);" (assignment_expression "puVar1 = (undefined4 *)FUN_0001db90(1,0x40)" identifier = (cast_expression "(undefined4 *)FUN_0001db90(1,0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001db90(1,0x40)" identifier (argument_list "(1,0x40)" ( number_literal , number_literal ))))) ;) (expression_statement "*puVar1 = &PTR_FUN_000ccac0;" (assignment_expression "*puVar1 = &PTR_FUN_000ccac0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_000ccac0" & identifier)) ;) (expression_statement "puVar1[5] = param_2;" (assignment_expression "puVar1[5] = param_2" (subscript_expression "puVar1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[4] = 0;" (assignment_expression "puVar1[4] = 0" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[0xf] = 0;" (assignment_expression "puVar1[0xf] = 0" (subscript_expression "puVar1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0001d820(puVar1 + 9);" (call_expression "FUN_0001d820(puVar1 + 9)" identifier (argument_list "(puVar1 + 9)" ( (binary_expression "puVar1 + 9" identifier + number_literal) ))) ;) (expression_statement "FUN_0001d820(puVar1 + 6);" (call_expression "FUN_0001d820(puVar1 + 6)" identifier (argument_list "(puVar1 + 6)" ( (binary_expression "puVar1 + 6" identifier + number_literal) ))) ;) (expression_statement "FUN_0001d820(puVar1 + 0xc);" (call_expression "FUN_0001d820(puVar1 + 0xc)" identifier (argument_list "(puVar1 + 0xc)" ( (binary_expression "puVar1 + 0xc" identifier + number_literal) ))) ;) (if_statement "if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" if (parenthesized_expression "(iVar2 == 5)" ( (binary_expression "iVar2 == 5" identifier == number_literal) )) (compound_statement "{\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }" { (expression_statement "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);" (assignment_expression "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier = (cast_expression "(char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier (argument_list "(param_1,unaff_EBX,param_3)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;" (assignment_expression "iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f" identifier = (binary_expression "(DAT_000cd964 << 0x1e) >> 0x1f" (parenthesized_expression "(DAT_000cd964 << 0x1e)" ( (binary_expression "DAT_000cd964 << 0x1e" identifier << number_literal) )) >> number_literal)) ;) (expression_statement "iStack_3c = iStack_40;" (assignment_expression "iStack_3c = iStack_40" identifier = identifier) ;) (expression_statement "uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);" (assignment_expression "uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file)" identifier = (call_expression "FUN_0001cea0("Starting local proxy command: %s",__file)" identifier (argument_list "("Starting local proxy command: %s",__file)" ( (string_literal ""Starting local proxy command: %s"" " string_content ") , identifier )))) ;) (expression_statement "(**(code **)*param_2)(param_2,2,0,0,uVar4,0);" (call_expression "(**(code **)*param_2)(param_2,2,0,0,uVar4,0)" (parenthesized_expression "(**(code **)*param_2)" ( (pointer_expression "**(code **)*param_2" * (pointer_expression "*(code **)*param_2" * (cast_expression "(code **)*param_2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*param_2" * identifier)))) )) (argument_list "(param_2,2,0,0,uVar4,0)" ( identifier , number_literal , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "FUN_0001dd30(uVar4);" (call_expression "FUN_0001dd30(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "iVar2 = pipe(&iStack_50);" (assignment_expression "iVar2 = pipe(&iStack_50)" identifier = (call_expression "pipe(&iStack_50)" identifier (argument_list "(&iStack_50)" ( (pointer_expression "&iStack_50" & identifier) )))) ;) (if_statement "if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" if (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) (compound_statement "{\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" { (expression_statement "iVar2 = pipe(&iStack_48);" (assignment_expression "iVar2 = pipe(&iStack_48)" identifier = (call_expression "pipe(&iStack_48)" identifier (argument_list "(&iStack_48)" ( (pointer_expression "&iStack_48" & identifier) )))) ;) (if_statement "if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }" if (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) (compound_statement "{\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }" { (if_statement "if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }" if (parenthesized_expression "(iStack_40 == 0)" ( (binary_expression "iStack_40 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }" { (expression_statement "iVar2 = pipe(&iStack_40);" (assignment_expression "iVar2 = pipe(&iStack_40)" identifier = (call_expression "pipe(&iStack_40)" identifier (argument_list "(&iStack_40)" ( (pointer_expression "&iStack_40" & identifier) )))) ;) (if_statement "if (iVar2 < 0) goto LAB_000873a8;" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (goto_statement "goto LAB_000873a8;" goto statement_identifier ;)) })) (expression_statement "FUN_00082c30(uStack_4c);" (call_expression "FUN_00082c30(uStack_4c)" identifier (argument_list "(uStack_4c)" ( identifier ))) ;) (expression_statement "FUN_00082c30(iStack_48);" (call_expression "FUN_00082c30(iStack_48)" identifier (argument_list "(iStack_48)" ( identifier ))) ;) (if_statement "if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n          FUN_00082c30(iStack_40);\n        }" { (expression_statement "FUN_00082c30(iStack_40);" (call_expression "FUN_00082c30(iStack_40)" identifier (argument_list "(iStack_40)" ( identifier ))) ;) })) (expression_statement "_Var3 = fork();" (assignment_expression "_Var3 = fork()" identifier = (call_expression "fork()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }" if (parenthesized_expression "(-1 < _Var3)" ( (binary_expression "-1 < _Var3" number_literal < identifier) )) (compound_statement "{\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }" { (if_statement "if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }" if (parenthesized_expression "(_Var3 == 0)" ( (binary_expression "_Var3 == 0" identifier == number_literal) )) (compound_statement "{\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }" { (expression_statement "close(0);" (call_expression "close(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "close(1);" (call_expression "close(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "dup2(iStack_50,0);" (call_expression "dup2(iStack_50,0)" identifier (argument_list "(iStack_50,0)" ( identifier , number_literal ))) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "dup2(iStack_44,1);" (call_expression "dup2(iStack_44,1)" identifier (argument_list "(iStack_44,1)" ( identifier , number_literal ))) ;) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" identifier (argument_list "(iStack_50)" ( identifier ))) ;) (expression_statement "pcVar7 = (char *)close(iStack_44);" (assignment_expression "pcVar7 = (char *)close(iStack_44)" identifier = (cast_expression "(char *)close(iStack_44)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "close(iStack_44)" identifier (argument_list "(iStack_44)" ( identifier ))))) ;) (if_statement "if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }" { (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "dup2(iStack_3c,2);" (call_expression "dup2(iStack_3c,2)" identifier (argument_list "(iStack_3c,2)" ( identifier , number_literal ))) ;) (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" identifier (argument_list "(iStack_3c)" ( identifier ))) ;) (expression_statement "param_3 = pcVar7;" (assignment_expression "param_3 = pcVar7" identifier = identifier) ;) })) (expression_statement "FUN_00082cc0(0,uVar4,param_3);" (call_expression "FUN_00082cc0(0,uVar4,param_3)" identifier (argument_list "(0,uVar4,param_3)" ( number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00082cc0(1);" (call_expression "FUN_00082cc0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "execl("/bin/sh","sh",&DAT_0009e45c,__file,0);" (call_expression "execl("/bin/sh","sh",&DAT_0009e45c,__file,0)" identifier (argument_list "("/bin/sh","sh",&DAT_0009e45c,__file,0)" ( (string_literal ""/bin/sh"" " string_content ") , (string_literal ""sh"" " string_content ") , (pointer_expression "&DAT_0009e45c" & identifier) , identifier , number_literal ))) ;) (expression_statement "_exit(0xff);" (call_expression "_exit(0xff)" identifier (argument_list "(0xff)" ( number_literal ))) ;) })) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" identifier (argument_list "(iStack_50)" ( identifier ))) ;) (expression_statement "close(iStack_44);" (call_expression "close(iStack_44)" identifier (argument_list "(iStack_44)" ( identifier ))) ;) (if_statement "if (-1 < iStack_40) {\n            close(iStack_3c);\n          }" if (parenthesized_expression "(-1 < iStack_40)" ( (binary_expression "-1 < iStack_40" number_literal < identifier) )) (compound_statement "{\n            close(iStack_3c);\n          }" { (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" identifier (argument_list "(iStack_3c)" ( identifier ))) ;) })) (expression_statement "puVar1[3] = iStack_40;" (assignment_expression "puVar1[3] = iStack_40" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[1] = uStack_4c;" (assignment_expression "puVar1[1] = uStack_4c" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = iStack_48;" (assignment_expression "puVar1[2] = iStack_48" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00087192;" goto statement_identifier ;) })) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "fork: %s";" (assignment_expression "pcVar7 = "fork: %s"" identifier = (string_literal ""fork: %s"" " string_content ")) ;) (goto_statement "goto LAB_000873c0;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000873a8:\n    piVar6 = __errno_location();" statement_identifier : (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "pipe: %s";" (assignment_expression "pcVar7 = "pipe: %s"" identifier = (string_literal ""pipe: %s"" " string_content ")) ;) }) (else_clause "else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" else (compound_statement "{\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" { (expression_statement "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);" (assignment_expression "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier = (cast_expression "(char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021ba0(param_1,unaff_EBX,param_3)" identifier (argument_list "(param_1,unaff_EBX,param_3)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = open64("/dev/null",1);" (assignment_expression "iVar2 = open64("/dev/null",1)" identifier = (call_expression "open64("/dev/null",1)" identifier (argument_list "("/dev/null",1)" ( (string_literal ""/dev/null"" " string_content ") , number_literal )))) ;) (expression_statement "puVar1[1] = iVar2;" (assignment_expression "puVar1[1] = iVar2" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }" { (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "/dev/null: %s";" (assignment_expression "pcVar7 = "/dev/null: %s"" identifier = (string_literal ""/dev/null: %s"" " string_content ")) ;) }) (else_clause "else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" else (compound_statement "{\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" { (expression_statement "iVar2 = open64(__file,0);" (assignment_expression "iVar2 = open64(__file,0)" identifier = (call_expression "open64(__file,0)" identifier (argument_list "(__file,0)" ( identifier , number_literal )))) ;) (expression_statement "puVar1[2] = iVar2;" (assignment_expression "puVar1[2] = iVar2" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }" { (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "puVar1[3] = 0xffffffff;" (assignment_expression "puVar1[3] = 0xffffffff" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" statement_identifier : (if_statement "if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" if (parenthesized_expression "(DAT_000cd94c == 0)" ( (binary_expression "DAT_000cd94c == 0" identifier == number_literal) )) (compound_statement "{\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" { (expression_statement "DAT_000cd94c = FUN_0007d030(FUN_000869d0);" (assignment_expression "DAT_000cd94c = FUN_0007d030(FUN_000869d0)" identifier = (call_expression "FUN_0007d030(FUN_000869d0)" identifier (argument_list "(FUN_000869d0)" ( identifier )))) ;) }))) (if_statement "if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }" if (parenthesized_expression "(DAT_000cd948 == 0)" ( (binary_expression "DAT_000cd948 == 0" identifier == number_literal) )) (compound_statement "{\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }" { (expression_statement "DAT_000cd948 = FUN_0007d030(FUN_00086a10);" (assignment_expression "DAT_000cd948 = FUN_0007d030(FUN_00086a10)" identifier = (call_expression "FUN_0007d030(FUN_00086a10)" identifier (argument_list "(FUN_00086a10)" ( identifier )))) ;) })) (if_statement "if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }" if (parenthesized_expression "(DAT_000cd944 == 0)" ( (binary_expression "DAT_000cd944 == 0" identifier == number_literal) )) (compound_statement "{\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }" { (expression_statement "DAT_000cd944 = FUN_0007d030(FUN_00086a50);" (assignment_expression "DAT_000cd944 = FUN_0007d030(FUN_00086a50)" identifier = (call_expression "FUN_0007d030(FUN_00086a50)" identifier (argument_list "(FUN_00086a50)" ( identifier )))) ;) })) (expression_statement "FUN_00080910(DAT_000cd94c,puVar1);" (call_expression "FUN_00080910(DAT_000cd94c,puVar1)" identifier (argument_list "(DAT_000cd94c,puVar1)" ( identifier , identifier ))) ;) (expression_statement "FUN_00080910(DAT_000cd948,puVar1);" (call_expression "FUN_00080910(DAT_000cd948,puVar1)" identifier (argument_list "(DAT_000cd948,puVar1)" ( identifier , identifier ))) ;) (if_statement "if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }" if (parenthesized_expression "(-1 < (int)puVar1[3])" ( (binary_expression "-1 < (int)puVar1[3]" number_literal < (cast_expression "(int)puVar1[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          FUN_00080910(DAT_000cd944,puVar1);\n        }" { (expression_statement "FUN_00080910(DAT_000cd944,puVar1);" (call_expression "FUN_00080910(DAT_000cd944,puVar1)" identifier (argument_list "(DAT_000cd944,puVar1)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_000875e0(puVar1[2],1,FUN_00086c40);" (call_expression "FUN_000875e0(puVar1[2],1,FUN_00086c40)" identifier (argument_list "(puVar1[2],1,FUN_00086c40)" ( (subscript_expression "puVar1[2]" identifier [ number_literal ]) , number_literal , identifier ))) ;) (if_statement "if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }" if (parenthesized_expression "(-1 < (int)puVar1[3])" ( (binary_expression "-1 < (int)puVar1[3]" number_literal < (cast_expression "(int)puVar1[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar1[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }" { (expression_statement "FUN_000875e0(puVar1[3],1,FUN_00086c40);" (call_expression "FUN_000875e0(puVar1[3],1,FUN_00086c40)" identifier (argument_list "(puVar1[3],1,FUN_00086c40)" ( (subscript_expression "puVar1[3]" identifier [ number_literal ]) , number_literal , identifier ))) ;) })) (expression_statement "FUN_000843f0(param_1);" (call_expression "FUN_000843f0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_00087218;" goto statement_identifier ;) })) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "param_3 = strerror(*piVar6);" (assignment_expression "param_3 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) (expression_statement "pcVar7 = "%s: %s";" (assignment_expression "pcVar7 = "%s: %s"" identifier = (string_literal ""%s: %s"" " string_content ")) ;) (expression_statement "pcVar5 = __file;" (assignment_expression "pcVar5 = __file" identifier = identifier) ;) }))) }))) (labeled_statement "LAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);" statement_identifier : (expression_statement "uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);" (assignment_expression "uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3)" identifier = (call_expression "FUN_0001cea0(pcVar7,pcVar5,param_3)" identifier (argument_list "(pcVar7,pcVar5,param_3)" ( identifier , identifier , identifier )))) ;)) (expression_statement "puVar1[4] = uVar4;" (assignment_expression "puVar1[4] = uVar4" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (labeled_statement "LAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }" statement_identifier : (if_statement "if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }" if (parenthesized_expression "(iStack_38 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iStack_38 == *(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    return puVar1;\n  }" { (return_statement "return puVar1;" return identifier ;) }))) (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT)))) )) (argument_list ( IDENT , LIT , LIT , LIT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (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 { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 * FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    \n  FUN_0008d800();\n}" (type_identifier "undefined4") (pointer_declarator "* FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)" (* "*") (function_declarator "FUN_00086ff0(int param_1,undefined4 *param_2,char *param_3)" (identifier "FUN_00086ff0") (parameter_list "(int param_1,undefined4 *param_2,char *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  char *__file;\n  __pid_t _Var3;\n  undefined4 uVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined4 unaff_EBX;\n  int unaff_ESI;\n  int in_GS_OFFSET;\n  int iStack_50;\n  undefined4 uStack_4c;\n  int iStack_48;\n  int iStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  undefined4 uStack_2c;\n  undefined **ppuStack_28;\n  \n  if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  ppuStack_28 = &__DT_PLTGOT;\n  if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }\n  FUN_00086fc0();\n  uStack_2c = 0x87099;\n  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = FUN_000189b0(param_3,0xd);\n  if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }\n  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);\n  *puVar1 = &PTR_FUN_000ccac0;\n  puVar1[5] = param_2;\n  puVar1[4] = 0;\n  puVar1[0xf] = 0;\n  FUN_0001d820(puVar1 + 9);\n  FUN_0001d820(puVar1 + 6);\n  FUN_0001d820(puVar1 + 0xc);\n  if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }\nLAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);\n  puVar1[4] = uVar4;\n  FUN_0001dd30(__file);\nLAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }\n                    \n  FUN_0008d800();\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *__file;" (primitive_type "char") (pointer_declarator "*__file" (* "*") (identifier "__file")) (; ";")) (declaration "__pid_t _Var3;" (type_identifier "__pid_t") (identifier "_Var3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "undefined4 unaff_EBX;" (type_identifier "undefined4") (identifier "unaff_EBX") (; ";")) (declaration "int unaff_ESI;" (primitive_type "int") (identifier "unaff_ESI") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int iStack_50;" (primitive_type "int") (identifier "iStack_50") (; ";")) (declaration "undefined4 uStack_4c;" (type_identifier "undefined4") (identifier "uStack_4c") (; ";")) (declaration "int iStack_48;" (primitive_type "int") (identifier "iStack_48") (; ";")) (declaration "int iStack_44;" (primitive_type "int") (identifier "iStack_44") (; ";")) (declaration "int iStack_40;" (primitive_type "int") (identifier "iStack_40") (; ";")) (declaration "int iStack_3c;" (primitive_type "int") (identifier "iStack_3c") (; ";")) (declaration "int iStack_38;" (primitive_type "int") (identifier "iStack_38") (; ";")) (declaration "undefined4 uStack_2c;" (type_identifier "undefined4") (identifier "uStack_2c") (; ";")) (declaration "undefined **ppuStack_28;" (type_identifier "undefined") (pointer_declarator "**ppuStack_28" (* "*") (pointer_declarator "*ppuStack_28" (* "*") (identifier "ppuStack_28"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x3c) == 0) {\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x3c) == 0" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0001d8a0();\n    FUN_00086ad0();\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" ({ "{") (expression_statement "FUN_0001d8a0();" (call_expression "FUN_0001d8a0()" (identifier "FUN_0001d8a0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00086ad0();" (call_expression "FUN_00086ad0()" (identifier "FUN_00086ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar1 = (undefined4 *)FUN_0001d890();" (assignment_expression "puVar1 = (undefined4 *)FUN_0001d890()" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)FUN_0001d890()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001d890()" (identifier "FUN_0001d890") (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}"))) (expression_statement "FUN_00086fc0();" (call_expression "FUN_00086fc0()" (identifier "FUN_00086fc0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "ppuStack_28 = &__DT_PLTGOT;" (assignment_expression "ppuStack_28 = &__DT_PLTGOT" (identifier "ppuStack_28") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (if_statement "if (*(int *)(unaff_ESI + 0x3c) == 0) {\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" (if "if") (parenthesized_expression "(*(int *)(unaff_ESI + 0x3c) == 0)" (( "(") (binary_expression "*(int *)(unaff_ESI + 0x3c) == 0" (pointer_expression "*(int *)(unaff_ESI + 0x3c)" (* "*") (cast_expression "(int *)(unaff_ESI + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_ESI + 0x3c)" (( "(") (binary_expression "unaff_ESI + 0x3c" (identifier "unaff_ESI") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uStack_2c = 0x8706d;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    FUN_0001d8a0();\n    uStack_2c = 0x87074;\n    FUN_00086ad0();\n    uStack_2c = 0x8707c;\n    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);\n    puVar1 = (undefined4 *)FUN_0001d890();\n    return puVar1;\n  }" ({ "{") (expression_statement "uStack_2c = 0x8706d;" (assignment_expression "uStack_2c = 0x8706d" (identifier "uStack_2c") (= "=") (number_literal "0x8706d")) (; ";")) (expression_statement "ppuStack_28 = (undefined **)(unaff_ESI + 0x18);" (assignment_expression "ppuStack_28 = (undefined **)(unaff_ESI + 0x18)" (identifier "ppuStack_28") (= "=") (cast_expression "(undefined **)(unaff_ESI + 0x18)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_ESI + 0x18)" (( "(") (binary_expression "unaff_ESI + 0x18" (identifier "unaff_ESI") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "FUN_0001d8a0();" (call_expression "FUN_0001d8a0()" (identifier "FUN_0001d8a0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uStack_2c = 0x87074;" (assignment_expression "uStack_2c = 0x87074" (identifier "uStack_2c") (= "=") (number_literal "0x87074")) (; ";")) (expression_statement "FUN_00086ad0();" (call_expression "FUN_00086ad0()" (identifier "FUN_00086ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uStack_2c = 0x8707c;" (assignment_expression "uStack_2c = 0x8707c" (identifier "uStack_2c") (= "=") (number_literal "0x8707c")) (; ";")) (expression_statement "ppuStack_28 = (undefined **)(unaff_ESI + 0x18);" (assignment_expression "ppuStack_28 = (undefined **)(unaff_ESI + 0x18)" (identifier "ppuStack_28") (= "=") (cast_expression "(undefined **)(unaff_ESI + 0x18)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_ESI + 0x18)" (( "(") (binary_expression "unaff_ESI + 0x18" (identifier "unaff_ESI") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar1 = (undefined4 *)FUN_0001d890();" (assignment_expression "puVar1 = (undefined4 *)FUN_0001d890()" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)FUN_0001d890()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001d890()" (identifier "FUN_0001d890") (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}"))) (expression_statement "FUN_00086fc0();" (call_expression "FUN_00086fc0()" (identifier "FUN_00086fc0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uStack_2c = 0x87099;" (assignment_expression "uStack_2c = 0x87099" (identifier "uStack_2c") (= "=") (number_literal "0x87099")) (; ";")) (expression_statement "iStack_38 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iStack_38 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iStack_38") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar2 = FUN_000189b0(param_3,0xd);" (assignment_expression "iVar2 = FUN_000189b0(param_3,0xd)" (identifier "iVar2") (= "=") (call_expression "FUN_000189b0(param_3,0xd)" (identifier "FUN_000189b0") (argument_list "(param_3,0xd)" (( "(") (identifier "param_3") (, ",") (number_literal "0xd") () ")")))) (; ";")) (if_statement "if (1 < iVar2 - 5U) {\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" (if "if") (parenthesized_expression "(1 < iVar2 - 5U)" (( "(") (binary_expression "1 < iVar2 - 5U" (number_literal "1") (< "<") (binary_expression "iVar2 - 5U" (identifier "iVar2") (- "-") (number_literal "5U"))) () ")")) (compound_statement "{\n    puVar1 = (undefined4 *)0x0;\n    goto LAB_00087218;\n  }" ({ "{") (expression_statement "puVar1 = (undefined4 *)0x0;" (assignment_expression "puVar1 = (undefined4 *)0x0" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00087218;" (goto "goto") (statement_identifier "LAB_00087218") (; ";")) (} "}"))) (expression_statement "puVar1 = (undefined4 *)FUN_0001db90(1,0x40);" (assignment_expression "puVar1 = (undefined4 *)FUN_0001db90(1,0x40)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)FUN_0001db90(1,0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001db90(1,0x40)" (identifier "FUN_0001db90") (argument_list "(1,0x40)" (( "(") (number_literal "1") (, ",") (number_literal "0x40") () ")"))))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_000ccac0;" (assignment_expression "*puVar1 = &PTR_FUN_000ccac0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_000ccac0" (& "&") (identifier "PTR_FUN_000ccac0"))) (; ";")) (expression_statement "puVar1[5] = param_2;" (assignment_expression "puVar1[5] = param_2" (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar1[4] = 0;" (assignment_expression "puVar1[4] = 0" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[0xf] = 0;" (assignment_expression "puVar1[0xf] = 0" (subscript_expression "puVar1[0xf]" (identifier "puVar1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001d820(puVar1 + 9);" (call_expression "FUN_0001d820(puVar1 + 9)" (identifier "FUN_0001d820") (argument_list "(puVar1 + 9)" (( "(") (binary_expression "puVar1 + 9" (identifier "puVar1") (+ "+") (number_literal "9")) () ")"))) (; ";")) (expression_statement "FUN_0001d820(puVar1 + 6);" (call_expression "FUN_0001d820(puVar1 + 6)" (identifier "FUN_0001d820") (argument_list "(puVar1 + 6)" (( "(") (binary_expression "puVar1 + 6" (identifier "puVar1") (+ "+") (number_literal "6")) () ")"))) (; ";")) (expression_statement "FUN_0001d820(puVar1 + 0xc);" (call_expression "FUN_0001d820(puVar1 + 0xc)" (identifier "FUN_0001d820") (argument_list "(puVar1 + 0xc)" (( "(") (binary_expression "puVar1 + 0xc" (identifier "puVar1") (+ "+") (number_literal "0xc")) () ")"))) (; ";")) (if_statement "if (iVar2 == 5) {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }\n  else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 5)" (( "(") (binary_expression "iVar2 == 5" (identifier "iVar2") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;\n    iStack_3c = iStack_40;\n    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);\n    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);\n    FUN_0001dd30(uVar4);\n    iVar2 = pipe(&iStack_50);\n    if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }\nLAB_000873a8:\n    piVar6 = __errno_location();\n    pcVar5 = strerror(*piVar6);\n    pcVar7 = "pipe: %s";\n  }" ({ "{") (expression_statement "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);" (assignment_expression "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" (identifier "__file") (= "=") (cast_expression "(char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00021ba0(param_1,unaff_EBX,param_3)" (identifier "FUN_00021ba0") (argument_list "(param_1,unaff_EBX,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "unaff_EBX") (, ",") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;" (assignment_expression "iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f" (identifier "iStack_40") (= "=") (binary_expression "(DAT_000cd964 << 0x1e) >> 0x1f" (parenthesized_expression "(DAT_000cd964 << 0x1e)" (( "(") (binary_expression "DAT_000cd964 << 0x1e" (identifier "DAT_000cd964") (<< "<<") (number_literal "0x1e")) () ")")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iStack_3c = iStack_40;" (assignment_expression "iStack_3c = iStack_40" (identifier "iStack_3c") (= "=") (identifier "iStack_40")) (; ";")) (expression_statement "uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);" (assignment_expression "uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file)" (identifier "uVar4") (= "=") (call_expression "FUN_0001cea0("Starting local proxy command: %s",__file)" (identifier "FUN_0001cea0") (argument_list "("Starting local proxy command: %s",__file)" (( "(") (string_literal ""Starting local proxy command: %s"" (" """) (string_content "Starting local proxy command: %s") (" """)) (, ",") (identifier "__file") () ")")))) (; ";")) (expression_statement "(**(code **)*param_2)(param_2,2,0,0,uVar4,0);" (call_expression "(**(code **)*param_2)(param_2,2,0,0,uVar4,0)" (parenthesized_expression "(**(code **)*param_2)" (( "(") (pointer_expression "**(code **)*param_2" (* "*") (pointer_expression "*(code **)*param_2" (* "*") (cast_expression "(code **)*param_2" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))))) () ")")) (argument_list "(param_2,2,0,0,uVar4,0)" (( "(") (identifier "param_2") (, ",") (number_literal "2") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0001dd30(uVar4);" (call_expression "FUN_0001dd30(uVar4)" (identifier "FUN_0001dd30") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "iVar2 = pipe(&iStack_50);" (assignment_expression "iVar2 = pipe(&iStack_50)" (identifier "iVar2") (= "=") (call_expression "pipe(&iStack_50)" (identifier "pipe") (argument_list "(&iStack_50)" (( "(") (pointer_expression "&iStack_50" (& "&") (identifier "iStack_50")) () ")")))) (; ";")) (if_statement "if (-1 < iVar2) {\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" (if "if") (parenthesized_expression "(-1 < iVar2)" (( "(") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n      iVar2 = pipe(&iStack_48);\n      if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }\n    }" ({ "{") (expression_statement "iVar2 = pipe(&iStack_48);" (assignment_expression "iVar2 = pipe(&iStack_48)" (identifier "iVar2") (= "=") (call_expression "pipe(&iStack_48)" (identifier "pipe") (argument_list "(&iStack_48)" (( "(") (pointer_expression "&iStack_48" (& "&") (identifier "iStack_48")) () ")")))) (; ";")) (if_statement "if (-1 < iVar2) {\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }" (if "if") (parenthesized_expression "(-1 < iVar2)" (( "(") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n        if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }\n        FUN_00082c30(uStack_4c);\n        FUN_00082c30(iStack_48);\n        if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }\n        _Var3 = fork();\n        if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }\n        piVar6 = __errno_location();\n        pcVar5 = strerror(*piVar6);\n        pcVar7 = "fork: %s";\n        goto LAB_000873c0;\n      }" ({ "{") (if_statement "if (iStack_40 == 0) {\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }" (if "if") (parenthesized_expression "(iStack_40 == 0)" (( "(") (binary_expression "iStack_40 == 0" (identifier "iStack_40") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar2 = pipe(&iStack_40);\n          if (iVar2 < 0) goto LAB_000873a8;\n        }" ({ "{") (expression_statement "iVar2 = pipe(&iStack_40);" (assignment_expression "iVar2 = pipe(&iStack_40)" (identifier "iVar2") (= "=") (call_expression "pipe(&iStack_40)" (identifier "pipe") (argument_list "(&iStack_40)" (( "(") (pointer_expression "&iStack_40" (& "&") (identifier "iStack_40")) () ")")))) (; ";")) (if_statement "if (iVar2 < 0) goto LAB_000873a8;" (if "if") (parenthesized_expression "(iVar2 < 0)" (( "(") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_000873a8;" (goto "goto") (statement_identifier "LAB_000873a8") (; ";"))) (} "}"))) (expression_statement "FUN_00082c30(uStack_4c);" (call_expression "FUN_00082c30(uStack_4c)" (identifier "FUN_00082c30") (argument_list "(uStack_4c)" (( "(") (identifier "uStack_4c") () ")"))) (; ";")) (expression_statement "FUN_00082c30(iStack_48);" (call_expression "FUN_00082c30(iStack_48)" (identifier "FUN_00082c30") (argument_list "(iStack_48)" (( "(") (identifier "iStack_48") () ")"))) (; ";")) (if_statement "if (-1 < iStack_40) {\n          FUN_00082c30(iStack_40);\n        }" (if "if") (parenthesized_expression "(-1 < iStack_40)" (( "(") (binary_expression "-1 < iStack_40" (number_literal "-1") (< "<") (identifier "iStack_40")) () ")")) (compound_statement "{\n          FUN_00082c30(iStack_40);\n        }" ({ "{") (expression_statement "FUN_00082c30(iStack_40);" (call_expression "FUN_00082c30(iStack_40)" (identifier "FUN_00082c30") (argument_list "(iStack_40)" (( "(") (identifier "iStack_40") () ")"))) (; ";")) (} "}"))) (expression_statement "_Var3 = fork();" (assignment_expression "_Var3 = fork()" (identifier "_Var3") (= "=") (call_expression "fork()" (identifier "fork") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (-1 < _Var3) {\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }" (if "if") (parenthesized_expression "(-1 < _Var3)" (( "(") (binary_expression "-1 < _Var3" (number_literal "-1") (< "<") (identifier "_Var3")) () ")")) (compound_statement "{\n          if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }\n          FUN_0001dd30(__file);\n          close(iStack_50);\n          close(iStack_44);\n          if (-1 < iStack_40) {\n            close(iStack_3c);\n          }\n          puVar1[3] = iStack_40;\n          puVar1[1] = uStack_4c;\n          puVar1[2] = iStack_48;\n          goto LAB_00087192;\n        }" ({ "{") (if_statement "if (_Var3 == 0) {\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }" (if "if") (parenthesized_expression "(_Var3 == 0)" (( "(") (binary_expression "_Var3 == 0" (identifier "_Var3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            close(0);\n            close(1);\n            dup2(iStack_50,0);\n            uVar4 = 1;\n            dup2(iStack_44,1);\n            close(iStack_50);\n            pcVar7 = (char *)close(iStack_44);\n            if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }\n            FUN_00082cc0(0,uVar4,param_3);\n            FUN_00082cc0(1);\n            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);\n                    \n            _exit(0xff);\n          }" ({ "{") (expression_statement "close(0);" (call_expression "close(0)" (identifier "close") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "close(1);" (call_expression "close(1)" (identifier "close") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "dup2(iStack_50,0);" (call_expression "dup2(iStack_50,0)" (identifier "dup2") (argument_list "(iStack_50,0)" (( "(") (identifier "iStack_50") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "dup2(iStack_44,1);" (call_expression "dup2(iStack_44,1)" (identifier "dup2") (argument_list "(iStack_44,1)" (( "(") (identifier "iStack_44") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" (identifier "close") (argument_list "(iStack_50)" (( "(") (identifier "iStack_50") () ")"))) (; ";")) (expression_statement "pcVar7 = (char *)close(iStack_44);" (assignment_expression "pcVar7 = (char *)close(iStack_44)" (identifier "pcVar7") (= "=") (cast_expression "(char *)close(iStack_44)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "close(iStack_44)" (identifier "close") (argument_list "(iStack_44)" (( "(") (identifier "iStack_44") () ")"))))) (; ";")) (if_statement "if (-1 < iStack_40) {\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }" (if "if") (parenthesized_expression "(-1 < iStack_40)" (( "(") (binary_expression "-1 < iStack_40" (number_literal "-1") (< "<") (identifier "iStack_40")) () ")")) (compound_statement "{\n              uVar4 = 2;\n              dup2(iStack_3c,2);\n              close(iStack_3c);\n              param_3 = pcVar7;\n            }" ({ "{") (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" (identifier "uVar4") (= "=") (number_literal "2")) (; ";")) (expression_statement "dup2(iStack_3c,2);" (call_expression "dup2(iStack_3c,2)" (identifier "dup2") (argument_list "(iStack_3c,2)" (( "(") (identifier "iStack_3c") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" (identifier "close") (argument_list "(iStack_3c)" (( "(") (identifier "iStack_3c") () ")"))) (; ";")) (expression_statement "param_3 = pcVar7;" (assignment_expression "param_3 = pcVar7" (identifier "param_3") (= "=") (identifier "pcVar7")) (; ";")) (} "}"))) (expression_statement "FUN_00082cc0(0,uVar4,param_3);" (call_expression "FUN_00082cc0(0,uVar4,param_3)" (identifier "FUN_00082cc0") (argument_list "(0,uVar4,param_3)" (( "(") (number_literal "0") (, ",") (identifier "uVar4") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "FUN_00082cc0(1);" (call_expression "FUN_00082cc0(1)" (identifier "FUN_00082cc0") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "execl("/bin/sh","sh",&DAT_0009e45c,__file,0);" (call_expression "execl("/bin/sh","sh",&DAT_0009e45c,__file,0)" (identifier "execl") (argument_list "("/bin/sh","sh",&DAT_0009e45c,__file,0)" (( "(") (string_literal ""/bin/sh"" (" """) (string_content "/bin/sh") (" """)) (, ",") (string_literal ""sh"" (" """) (string_content "sh") (" """)) (, ",") (pointer_expression "&DAT_0009e45c" (& "&") (identifier "DAT_0009e45c")) (, ",") (identifier "__file") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "_exit(0xff);" (call_expression "_exit(0xff)" (identifier "_exit") (argument_list "(0xff)" (( "(") (number_literal "0xff") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" (identifier "FUN_0001dd30") (argument_list "(__file)" (( "(") (identifier "__file") () ")"))) (; ";")) (expression_statement "close(iStack_50);" (call_expression "close(iStack_50)" (identifier "close") (argument_list "(iStack_50)" (( "(") (identifier "iStack_50") () ")"))) (; ";")) (expression_statement "close(iStack_44);" (call_expression "close(iStack_44)" (identifier "close") (argument_list "(iStack_44)" (( "(") (identifier "iStack_44") () ")"))) (; ";")) (if_statement "if (-1 < iStack_40) {\n            close(iStack_3c);\n          }" (if "if") (parenthesized_expression "(-1 < iStack_40)" (( "(") (binary_expression "-1 < iStack_40" (number_literal "-1") (< "<") (identifier "iStack_40")) () ")")) (compound_statement "{\n            close(iStack_3c);\n          }" ({ "{") (expression_statement "close(iStack_3c);" (call_expression "close(iStack_3c)" (identifier "close") (argument_list "(iStack_3c)" (( "(") (identifier "iStack_3c") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar1[3] = iStack_40;" (assignment_expression "puVar1[3] = iStack_40" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iStack_40")) (; ";")) (expression_statement "puVar1[1] = uStack_4c;" (assignment_expression "puVar1[1] = uStack_4c" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uStack_4c")) (; ";")) (expression_statement "puVar1[2] = iStack_48;" (assignment_expression "puVar1[2] = iStack_48" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iStack_48")) (; ";")) (goto_statement "goto LAB_00087192;" (goto "goto") (statement_identifier "LAB_00087192") (; ";")) (} "}"))) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" (identifier "piVar6") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" (identifier "pcVar5") (= "=") (call_expression "strerror(*piVar6)" (identifier "strerror") (argument_list "(*piVar6)" (( "(") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) () ")")))) (; ";")) (expression_statement "pcVar7 = "fork: %s";" (assignment_expression "pcVar7 = "fork: %s"" (identifier "pcVar7") (= "=") (string_literal ""fork: %s"" (" """) (string_content "fork: %s") (" """))) (; ";")) (goto_statement "goto LAB_000873c0;" (goto "goto") (statement_identifier "LAB_000873c0") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000873a8:\n    piVar6 = __errno_location();" (statement_identifier "LAB_000873a8") (: ":") (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" (identifier "piVar6") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" (identifier "pcVar5") (= "=") (call_expression "strerror(*piVar6)" (identifier "strerror") (argument_list "(*piVar6)" (( "(") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) () ")")))) (; ";")) (expression_statement "pcVar7 = "pipe: %s";" (assignment_expression "pcVar7 = "pipe: %s"" (identifier "pcVar7") (= "=") (string_literal ""pipe: %s"" (" """) (string_content "pipe: %s") (" """))) (; ";")) (} "}")) (else_clause "else {\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" (else "else") (compound_statement "{\n    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);\n    iVar2 = open64("/dev/null",1);\n    puVar1[1] = iVar2;\n    if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }\n  }" ({ "{") (expression_statement "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);" (assignment_expression "__file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" (identifier "__file") (= "=") (cast_expression "(char *)FUN_00021ba0(param_1,unaff_EBX,param_3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00021ba0(param_1,unaff_EBX,param_3)" (identifier "FUN_00021ba0") (argument_list "(param_1,unaff_EBX,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "unaff_EBX") (, ",") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "iVar2 = open64("/dev/null",1);" (assignment_expression "iVar2 = open64("/dev/null",1)" (identifier "iVar2") (= "=") (call_expression "open64("/dev/null",1)" (identifier "open64") (argument_list "("/dev/null",1)" (( "(") (string_literal ""/dev/null"" (" """) (string_content "/dev/null") (" """)) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "puVar1[1] = iVar2;" (assignment_expression "puVar1[1] = iVar2" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 == -1) {\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }\n    else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      piVar6 = __errno_location();\n      pcVar5 = strerror(*piVar6);\n      pcVar7 = "/dev/null: %s";\n    }" ({ "{") (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" (identifier "piVar6") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar5 = strerror(*piVar6);" (assignment_expression "pcVar5 = strerror(*piVar6)" (identifier "pcVar5") (= "=") (call_expression "strerror(*piVar6)" (identifier "strerror") (argument_list "(*piVar6)" (( "(") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) () ")")))) (; ";")) (expression_statement "pcVar7 = "/dev/null: %s";" (assignment_expression "pcVar7 = "/dev/null: %s"" (identifier "pcVar7") (= "=") (string_literal ""/dev/null: %s"" (" """) (string_content "/dev/null: %s") (" """))) (; ";")) (} "}")) (else_clause "else {\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" (else "else") (compound_statement "{\n      iVar2 = open64(__file,0);\n      puVar1[2] = iVar2;\n      if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }\n      piVar6 = __errno_location();\n      param_3 = strerror(*piVar6);\n      pcVar7 = "%s: %s";\n      pcVar5 = __file;\n    }" ({ "{") (expression_statement "iVar2 = open64(__file,0);" (assignment_expression "iVar2 = open64(__file,0)" (identifier "iVar2") (= "=") (call_expression "open64(__file,0)" (identifier "open64") (argument_list "(__file,0)" (( "(") (identifier "__file") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "puVar1[2] = iVar2;" (assignment_expression "puVar1[2] = iVar2" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 != -1) {\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }" (if "if") (parenthesized_expression "(iVar2 != -1)" (( "(") (binary_expression "iVar2 != -1" (identifier "iVar2") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        FUN_0001dd30(__file);\n        puVar1[3] = 0xffffffff;\nLAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }\n        if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }\n        if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }\n        FUN_00080910(DAT_000cd94c,puVar1);\n        FUN_00080910(DAT_000cd948,puVar1);\n        if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }\n        FUN_000875e0(puVar1[2],1,FUN_00086c40);\n        if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }\n        FUN_000843f0(param_1);\n        goto LAB_00087218;\n      }" ({ "{") (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" (identifier "FUN_0001dd30") (argument_list "(__file)" (( "(") (identifier "__file") () ")"))) (; ";")) (expression_statement "puVar1[3] = 0xffffffff;" (assignment_expression "puVar1[3] = 0xffffffff" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (labeled_statement "LAB_00087192:\n        if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" (statement_identifier "LAB_00087192") (: ":") (if_statement "if (DAT_000cd94c == 0) {\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" (if "if") (parenthesized_expression "(DAT_000cd94c == 0)" (( "(") (binary_expression "DAT_000cd94c == 0" (identifier "DAT_000cd94c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          DAT_000cd94c = FUN_0007d030(FUN_000869d0);\n        }" ({ "{") (expression_statement "DAT_000cd94c = FUN_0007d030(FUN_000869d0);" (assignment_expression "DAT_000cd94c = FUN_0007d030(FUN_000869d0)" (identifier "DAT_000cd94c") (= "=") (call_expression "FUN_0007d030(FUN_000869d0)" (identifier "FUN_0007d030") (argument_list "(FUN_000869d0)" (( "(") (identifier "FUN_000869d0") () ")")))) (; ";")) (} "}")))) (if_statement "if (DAT_000cd948 == 0) {\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }" (if "if") (parenthesized_expression "(DAT_000cd948 == 0)" (( "(") (binary_expression "DAT_000cd948 == 0" (identifier "DAT_000cd948") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          DAT_000cd948 = FUN_0007d030(FUN_00086a10);\n        }" ({ "{") (expression_statement "DAT_000cd948 = FUN_0007d030(FUN_00086a10);" (assignment_expression "DAT_000cd948 = FUN_0007d030(FUN_00086a10)" (identifier "DAT_000cd948") (= "=") (call_expression "FUN_0007d030(FUN_00086a10)" (identifier "FUN_0007d030") (argument_list "(FUN_00086a10)" (( "(") (identifier "FUN_00086a10") () ")")))) (; ";")) (} "}"))) (if_statement "if (DAT_000cd944 == 0) {\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }" (if "if") (parenthesized_expression "(DAT_000cd944 == 0)" (( "(") (binary_expression "DAT_000cd944 == 0" (identifier "DAT_000cd944") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          DAT_000cd944 = FUN_0007d030(FUN_00086a50);\n        }" ({ "{") (expression_statement "DAT_000cd944 = FUN_0007d030(FUN_00086a50);" (assignment_expression "DAT_000cd944 = FUN_0007d030(FUN_00086a50)" (identifier "DAT_000cd944") (= "=") (call_expression "FUN_0007d030(FUN_00086a50)" (identifier "FUN_0007d030") (argument_list "(FUN_00086a50)" (( "(") (identifier "FUN_00086a50") () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_00080910(DAT_000cd94c,puVar1);" (call_expression "FUN_00080910(DAT_000cd94c,puVar1)" (identifier "FUN_00080910") (argument_list "(DAT_000cd94c,puVar1)" (( "(") (identifier "DAT_000cd94c") (, ",") (identifier "puVar1") () ")"))) (; ";")) (expression_statement "FUN_00080910(DAT_000cd948,puVar1);" (call_expression "FUN_00080910(DAT_000cd948,puVar1)" (identifier "FUN_00080910") (argument_list "(DAT_000cd948,puVar1)" (( "(") (identifier "DAT_000cd948") (, ",") (identifier "puVar1") () ")"))) (; ";")) (if_statement "if (-1 < (int)puVar1[3]) {\n          FUN_00080910(DAT_000cd944,puVar1);\n        }" (if "if") (parenthesized_expression "(-1 < (int)puVar1[3])" (( "(") (binary_expression "-1 < (int)puVar1[3]" (number_literal "-1") (< "<") (cast_expression "(int)puVar1[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          FUN_00080910(DAT_000cd944,puVar1);\n        }" ({ "{") (expression_statement "FUN_00080910(DAT_000cd944,puVar1);" (call_expression "FUN_00080910(DAT_000cd944,puVar1)" (identifier "FUN_00080910") (argument_list "(DAT_000cd944,puVar1)" (( "(") (identifier "DAT_000cd944") (, ",") (identifier "puVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000875e0(puVar1[2],1,FUN_00086c40);" (call_expression "FUN_000875e0(puVar1[2],1,FUN_00086c40)" (identifier "FUN_000875e0") (argument_list "(puVar1[2],1,FUN_00086c40)" (( "(") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "FUN_00086c40") () ")"))) (; ";")) (if_statement "if (-1 < (int)puVar1[3]) {\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }" (if "if") (parenthesized_expression "(-1 < (int)puVar1[3])" (( "(") (binary_expression "-1 < (int)puVar1[3]" (number_literal "-1") (< "<") (cast_expression "(int)puVar1[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          FUN_000875e0(puVar1[3],1,FUN_00086c40);\n        }" ({ "{") (expression_statement "FUN_000875e0(puVar1[3],1,FUN_00086c40);" (call_expression "FUN_000875e0(puVar1[3],1,FUN_00086c40)" (identifier "FUN_000875e0") (argument_list "(puVar1[3],1,FUN_00086c40)" (( "(") (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "FUN_00086c40") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000843f0(param_1);" (call_expression "FUN_000843f0(param_1)" (identifier "FUN_000843f0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (goto_statement "goto LAB_00087218;" (goto "goto") (statement_identifier "LAB_00087218") (; ";")) (} "}"))) (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" (identifier "piVar6") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "param_3 = strerror(*piVar6);" (assignment_expression "param_3 = strerror(*piVar6)" (identifier "param_3") (= "=") (call_expression "strerror(*piVar6)" (identifier "strerror") (argument_list "(*piVar6)" (( "(") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) () ")")))) (; ";")) (expression_statement "pcVar7 = "%s: %s";" (assignment_expression "pcVar7 = "%s: %s"" (identifier "pcVar7") (= "=") (string_literal ""%s: %s"" (" """) (string_content "%s: %s") (" """))) (; ";")) (expression_statement "pcVar5 = __file;" (assignment_expression "pcVar5 = __file" (identifier "pcVar5") (= "=") (identifier "__file")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_000873c0:\n  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);" (statement_identifier "LAB_000873c0") (: ":") (expression_statement "uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);" (assignment_expression "uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3)" (identifier "uVar4") (= "=") (call_expression "FUN_0001cea0(pcVar7,pcVar5,param_3)" (identifier "FUN_0001cea0") (argument_list "(pcVar7,pcVar5,param_3)" (( "(") (identifier "pcVar7") (, ",") (identifier "pcVar5") (, ",") (identifier "param_3") () ")")))) (; ";"))) (expression_statement "puVar1[4] = uVar4;" (assignment_expression "puVar1[4] = uVar4" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" (identifier "FUN_0001dd30") (argument_list "(__file)" (( "(") (identifier "__file") () ")"))) (; ";")) (labeled_statement "LAB_00087218:\n  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }" (statement_identifier "LAB_00087218") (: ":") (if_statement "if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return puVar1;\n  }" (if "if") (parenthesized_expression "(iStack_38 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iStack_38 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "iStack_38") (== "==") (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    return puVar1;\n  }" ({ "{") (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}")))) (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" (identifier "FUN_0008d800") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int function_1(type_1 var_2,char *data,int len)

{
  int var_9;
  type_2 *var_12;
  char *__file;
  type_3 var_21;
  char *pcVar3;
  char *pcVar4;
  int *piVar5;
  type_1 unaff_EBX;
  type_4 unaff_ESI;
  void *unaff_EDI;
  int var_7;
  int unaff_retaddr;
  int iStack_50;
  int iStack_4c;
  int iStack_48;
  int iStack_44;
  int var_18;
  int iStack_3c;
  int var_37;
  type_2 uStack_2c;
  void *data_00;
  
  if (var_2[0xf] == (type_5 *)0x0) {
    var_1((type_6 *)(var_2 + 6),data,len);
    var_3((type_4)var_2);
    var_9 = var_4((type_6 *)(var_2 + 6));
    return var_9;
  }
  data_00 = unaff_EDI;
  function_1(unaff_EBX,(char *)unaff_ESI,(int)unaff_EDI);
  if (unaff_ESI->outgoingeof == var_5) {
    uStack_2c = 0x8706d;
    var_1(&unaff_ESI->pending_output_data,data_00,unaff_retaddr);
    uStack_2c = 0x87074;
    var_3(unaff_ESI);
    uStack_2c = 0x8707c;
    var_9 = var_4(&unaff_ESI->pending_output_data);
    return var_9;
  }
  function_1((type_1)&var_6,(char *)var_2,(int)unaff_EDI);
  uStack_2c = 0x87099;
  var_37 = *(int *)(var_7 + 0x14);
  var_9 = var_8((type_7 *)len,0xd);
  if (1 < var_9 - 5U) {
    var_12 = (type_2 *)0x0;
    goto LAB_00087218;
  }
  var_12 = (type_2 *)var_10(1,0x40);
  *var_12 = &platform_new_connection::socket_fn_table;
  var_12[5] = data;
  var_12[4] = 0;
  var_12[0xf] = 0;
  var_11((type_6 *)(var_12 + 9));
  var_11((type_6 *)(var_12 + 6));
  var_11((type_6 *)(var_12 + 0xc));
  if (var_9 == 5) {
    __file = var_13((type_8)var_2,(int)unaff_EBX,(type_7 *)len);
    var_18 = (var_14 << 0x1e) >> 0x1f;
    iStack_3c = var_18;
    pcVar3 = var_15("Starting local proxy command: %s",__file);
    (*(type_9 *)**(type_2 **)data)(data,2,0,0,pcVar3,0);
    var_16(pcVar3);
    var_9 = var_17(&iStack_50);
    if (-1 < var_9) {
      var_9 = var_17(&iStack_48);
      if (-1 < var_9) {
        if (var_18 == 0) {
          var_9 = var_17(&var_18);
          if (var_9 < 0) goto LAB_000873a8;
        }
        var_19(iStack_4c);
        var_19(iStack_48);
        if (-1 < var_18) {
          var_19(var_18);
        }
        var_21 = var_20();
        if (-1 < var_21) {
          if (var_21 == 0) {
            var_22(0);
            var_22(1);
            var_23(iStack_50,0);
            var_23(iStack_44,1);
            var_22(iStack_50);
            var_22(iStack_44);
            if (-1 < var_18) {
              var_23(iStack_3c,2);
              var_22(iStack_3c);
            }
            var_24(0);
            var_24(1);
            var_25("/bin/sh","sh",&DAT_0009e45c,__file,0);
                    /* WARNING: Subroutine does not return */
            var_26(0xff);
          }
          var_16(__file);
          var_22(iStack_50);
          var_22(iStack_44);
          if (-1 < var_18) {
            var_22(iStack_3c);
          }
          var_12[3] = var_18;
          var_12[1] = iStack_4c;
          var_12[2] = iStack_48;
          goto LAB_00087192;
        }
        piVar5 = var_27();
        pcVar4 = var_28(*piVar5);
        pcVar3 = "fork: %s";
        goto LAB_000873c0;
      }
    }
LAB_000873a8:
    piVar5 = var_27();
    pcVar4 = var_28(*piVar5);
    pcVar3 = "pipe: %s";
  }
  else {
    __file = var_13((type_8)var_2,(int)unaff_EBX,(type_7 *)len);
    var_9 = var_29("/dev/null",1);
    var_12[1] = var_9;
    if (var_9 == -1) {
      piVar5 = var_27();
      pcVar4 = var_28(*piVar5);
      pcVar3 = "/dev/null: %s";
    }
    else {
      var_9 = var_29(__file,0);
      var_12[2] = var_9;
      if (var_9 != -1) {
        var_16(__file);
        var_12[3] = 0xffffffff;
LAB_00087192:
        if (var_30 == (type_10 *)0x0) {
          var_30 = var_31(localproxy_fromfd_cmp);
        }
        if (var_32 == (type_10 *)0x0) {
          var_32 = var_31(localproxy_tofd_cmp);
        }
        if (var_33 == (type_10 *)0x0) {
          var_33 = var_31(localproxy_errfd_cmp);
        }
        var_34(var_30,var_12);
        var_34(var_32,var_12);
        if (-1 < (int)var_12[3]) {
          var_34(var_33,var_12);
        }
        var_35(var_12[2],1,localproxy_select_result);
        if (-1 < (int)var_12[3]) {
          var_35(var_12[3],1,localproxy_select_result);
        }
        var_36((type_8)var_2);
        goto LAB_00087218;
      }
      piVar5 = var_27();
      len = (int)var_28(*piVar5);
      pcVar3 = "%s: %s";
      pcVar4 = __file;
    }
  }
LAB_000873c0:
  pcVar3 = var_15(pcVar3,pcVar4,len);
  var_12[4] = pcVar3;
  var_16(__file);
LAB_00087218:
  if (var_37 == *(int *)(var_7 + 0x14)) {
    return (int)var_12;
  }
                    /* WARNING: Subroutine does not return */
  var_38();
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  undefined4 *puVar1;
  int iVar2;
  char *__file;
  __pid_t _Var3;
  undefined4 uVar4;
  char *pcVar5;
  int *piVar6;
  char *pcVar7;
  undefined4 unaff_EBX;
  int unaff_ESI;
  int in_GS_OFFSET;
  int iStack_50;
  undefined4 uStack_4c;
  int iStack_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  undefined4 uStack_2c;
  undefined **ppuStack_28;
  
  if (*(int *)(param_1 + 0x3c) == 0) {
    FUN_0001d8a0();
    FUN_00086ad0();
    puVar1 = (undefined4 *)FUN_0001d890();
    return puVar1;
  }
  FUN_00086fc0();
  ppuStack_28 = &__DT_PLTGOT;
  if (*(int *)(unaff_ESI + 0x3c) == 0) {
    uStack_2c = 0x8706d;
    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);
    FUN_0001d8a0();
    uStack_2c = 0x87074;
    FUN_00086ad0();
    uStack_2c = 0x8707c;
    ppuStack_28 = (undefined **)(unaff_ESI + 0x18);
    puVar1 = (undefined4 *)FUN_0001d890();
    return puVar1;
  }
  FUN_00086fc0();
  uStack_2c = 0x87099;
  iStack_38 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = FUN_000189b0(param_3,0xd);
  if (1 < iVar2 - 5U) {
    puVar1 = (undefined4 *)0x0;
    goto LAB_00087218;
  }
  puVar1 = (undefined4 *)FUN_0001db90(1,0x40);
  *puVar1 = &PTR_FUN_000ccac0;
  puVar1[5] = param_2;
  puVar1[4] = 0;
  puVar1[0xf] = 0;
  FUN_0001d820(puVar1 + 9);
  FUN_0001d820(puVar1 + 6);
  FUN_0001d820(puVar1 + 0xc);
  if (iVar2 == 5) {
    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);
    iStack_40 = (DAT_000cd964 << 0x1e) >> 0x1f;
    iStack_3c = iStack_40;
    uVar4 = FUN_0001cea0("Starting local proxy command: %s",__file);
    (**(code **)*param_2)(param_2,2,0,0,uVar4,0);
    FUN_0001dd30(uVar4);
    iVar2 = pipe(&iStack_50);
    if (-1 < iVar2) {
      iVar2 = pipe(&iStack_48);
      if (-1 < iVar2) {
        if (iStack_40 == 0) {
          iVar2 = pipe(&iStack_40);
          if (iVar2 < 0) goto LAB_000873a8;
        }
        FUN_00082c30(uStack_4c);
        FUN_00082c30(iStack_48);
        if (-1 < iStack_40) {
          FUN_00082c30(iStack_40);
        }
        _Var3 = fork();
        if (-1 < _Var3) {
          if (_Var3 == 0) {
            close(0);
            close(1);
            dup2(iStack_50,0);
            uVar4 = 1;
            dup2(iStack_44,1);
            close(iStack_50);
            pcVar7 = (char *)close(iStack_44);
            if (-1 < iStack_40) {
              uVar4 = 2;
              dup2(iStack_3c,2);
              close(iStack_3c);
              param_3 = pcVar7;
            }
            FUN_00082cc0(0,uVar4,param_3);
            FUN_00082cc0(1);
            execl("/bin/sh","sh",&DAT_0009e45c,__file,0);
                    /* WARNING: Subroutine does not return */
            _exit(0xff);
          }
          FUN_0001dd30(__file);
          close(iStack_50);
          close(iStack_44);
          if (-1 < iStack_40) {
            close(iStack_3c);
          }
          puVar1[3] = iStack_40;
          puVar1[1] = uStack_4c;
          puVar1[2] = iStack_48;
          goto LAB_00087192;
        }
        piVar6 = __errno_location();
        pcVar5 = strerror(*piVar6);
        pcVar7 = "fork: %s";
        goto LAB_000873c0;
      }
    }
LAB_000873a8:
    piVar6 = __errno_location();
    pcVar5 = strerror(*piVar6);
    pcVar7 = "pipe: %s";
  }
  else {
    __file = (char *)FUN_00021ba0(param_1,unaff_EBX,param_3);
    iVar2 = open64("/dev/null",1);
    puVar1[1] = iVar2;
    if (iVar2 == -1) {
      piVar6 = __errno_location();
      pcVar5 = strerror(*piVar6);
      pcVar7 = "/dev/null: %s";
    }
    else {
      iVar2 = open64(__file,0);
      puVar1[2] = iVar2;
      if (iVar2 != -1) {
        FUN_0001dd30(__file);
        puVar1[3] = 0xffffffff;
LAB_00087192:
        if (DAT_000cd94c == 0) {
          DAT_000cd94c = FUN_0007d030(FUN_000869d0);
        }
        if (DAT_000cd948 == 0) {
          DAT_000cd948 = FUN_0007d030(FUN_00086a10);
        }
        if (DAT_000cd944 == 0) {
          DAT_000cd944 = FUN_0007d030(FUN_00086a50);
        }
        FUN_00080910(DAT_000cd94c,puVar1);
        FUN_00080910(DAT_000cd948,puVar1);
        if (-1 < (int)puVar1[3]) {
          FUN_00080910(DAT_000cd944,puVar1);
        }
        FUN_000875e0(puVar1[2],1,FUN_00086c40);
        if (-1 < (int)puVar1[3]) {
          FUN_000875e0(puVar1[3],1,FUN_00086c40);
        }
        FUN_000843f0(param_1);
        goto LAB_00087218;
      }
      piVar6 = __errno_location();
      param_3 = strerror(*piVar6);
      pcVar7 = "%s: %s";
      pcVar5 = __file;
    }
  }
LAB_000873c0:
  uVar4 = FUN_0001cea0(pcVar7,pcVar5,param_3);
  puVar1[4] = uVar4;
  FUN_0001dd30(__file);
LAB_00087218:
  if (iStack_38 == *(int *)(in_GS_OFFSET + 0x14)) {
    return puVar1;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008d800();
}

