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

void ssh2_msg_channel_open(Ssh_conflict ssh,Packet *pktin)

{
  int iVar1;
  ssh_channel *c;
  ulong uVar2;
  ulong uVar3;
  ulong uVar4;
  int iVar5;
  Packet *pPVar6;
  ulong uVar7;
  void *pvVar8;
  X11Connection *pXVar9;
  char *pcVar10;
  int in_GS_OFFSET;
  undefined4 uVar11;
  char *local_74;
  char *type;
  int typelen;
  char *peeraddr;
  int peeraddrlen;
  char *shost;
  int shostlen;
  ssh_rportfwd pf;
  uchar x [4];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  ssh_pkt_getstring(pktin,&type,&typelen);
  c = (ssh_channel *)safemalloc(1,0x5c);
  c->ssh = ssh;
  uVar2 = ssh_pkt_getuint32(pktin);
  uVar3 = ssh_pkt_getuint32(pktin);
  uVar4 = ssh_pkt_getuint32(pktin);
  if (typelen == 3) {
    if ((*(short *)type == 0x3178) && (type[2] == '1')) {
      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);
      if (peeraddr == (char *)0x0) {
        peeraddr = "";
      }
      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);
      uVar7 = ssh_pkt_getuint32(pktin);
      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);
      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {
        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);
        c->type = 1;
        (c->u).x11.xconn = pXVar9;
        pvVar8 = ssh->connshare;
        (c->u).x11.initial = 1;
        if (pvVar8 == (void *)0x0) {
          logevent(ssh->frontend,"Opened X11 forward channel");
          safefree(pcVar10);
          c->halfopen = 0;
          c->remoteid = uVar2;
          ssh_channel_init(c);
          (c->v).v2.remwindow = uVar3;
          (c->v).v2.remmaxpkt = uVar4;
        }
        else {
          logevent(ssh->frontend,"Opened X11 forward channel");
          safefree(pcVar10);
          c->halfopen = 0;
          c->remoteid = uVar2;
          ssh_channel_init(c);
          (c->v).v2.remlocwin = 0x80;
          (c->v).v2.locmaxwin = 0x80;
          (c->v).v2.remwindow = uVar3;
          (c->v).v2.locwindow = 0x80;
          (c->v).v2.remmaxpkt = uVar4;
        }
LAB_00033c63:
        pPVar6 = ssh2_pkt_init(0x5b);
        ssh_pkt_adduint32(pPVar6,c->remoteid);
        ssh_pkt_adduint32(pPVar6,c->localid);
        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);
        x[0] = '\0';
        x[1] = '\0';
        x[2] = '@';
        x[3] = '\0';
        ssh_pkt_adddata(pPVar6,x,4);
        ssh2_pkt_send(ssh,pPVar6);
        goto LAB_00033d5c;
      }
      safefree(pcVar10);
      local_74 = "X11 forwarding is not enabled";
    }
    else {
LAB_00033d90:
      local_74 = "Unsupported channel type requested";
    }
  }
  else if (typelen == 0xf) {
    iVar5 = memcmp(type,"forwarded-tcpip",0xf);
    local_74 = "Unsupported channel type requested";
    if (iVar5 == 0) {
      ssh_pkt_getstring(pktin,&shost,&shostlen);
      if (shost == (char *)0x0) {
        shost = "";
      }
      pf.shost = dupprintf("%.*s",shostlen,shost);
      pf.sport = ssh_pkt_getuint32(pktin);
      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);
      uVar7 = ssh_pkt_getuint32(pktin);
      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);
      if (peeraddr == (char *)0x0) {
        peeraddr = "";
      }
      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,
                peeraddrlen,peeraddr,uVar7);
      safefree(pf.shost);
      if (pvVar8 == (void *)0x0) {
        local_74 = "Remote port is not recognised";
      }
      else {
        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {
          share_got_pkt_from_server
                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);
          safefree(c);
          goto LAB_00033d5c;
        }
        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)
                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));
        uVar11 = *(undefined4 *)((int)pvVar8 + 4);
        logeventf(ssh,"Attempting to forward remote port to %s:%d",
                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);
        if (pcVar10 == (char *)0x0) {
          logevent(ssh->frontend,"Forwarded port opened successfully");
          c->type = 3;
          c->halfopen = 0;
          c->remoteid = uVar2;
          goto LAB_00033c4e;
        }
        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);
        safefree(pcVar10);
        local_74 = "Port open failed";
      }
    }
  }
  else {
    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))
    goto LAB_00033d90;
    local_74 = "Agent forwarding is not enabled";
    if (ssh->agentfwd_enabled != 0) {
      c->type = 2;
      bufchain_init(&(c->u).a.inbuffer);
      (c->u).a.pending = (agent_pending_query *)0x0;
      c->halfopen = 0;
      c->remoteid = uVar2;
LAB_00033c4e:
      ssh_channel_init(c);
      (c->v).v2.remwindow = uVar3;
      (c->v).v2.remmaxpkt = uVar4;
      goto LAB_00033c63;
    }
  }
  c->halfopen = 0;
  c->remoteid = uVar2;
  pPVar6 = ssh2_pkt_init(0x5c);
  ssh_pkt_adduint32(pPVar6,c->remoteid);
  x[0] = '\0';
  x[1] = '\0';
  x[2] = '\0';
  x[3] = '\x02';
  ssh_pkt_adddata(pPVar6,x,4);
  ssh_pkt_addstring(pPVar6,local_74);
  ssh_pkt_addstring(pPVar6,"en");
  ssh2_pkt_send(ssh,pPVar6);
  logeventf(ssh,"Rejected channel open: %s",local_74);
  safefree(c);
LAB_00033d5c:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return;
}



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

void FUN_00033b60(int param_1,undefined4 *param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  int in_GS_OFFSET;
  char *local_74;
  short *local_58;
  int local_54;
  undefined *local_50;
  undefined4 local_4c;
  undefined *local_48;
  undefined4 local_44;
  undefined4 local_40 [2];
  undefined4 local_38;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x33b69;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  FUN_000273d0();
  piVar1 = (int *)FUN_0001c990(1,0x5c);
  *piVar1 = param_1;
  iVar2 = FUN_00026ae0();
  iVar3 = FUN_00026ae0();
  iVar4 = FUN_00026ae0();
  if (local_54 == 3) {
    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {
      FUN_000273d0();
      if (local_50 == (undefined *)0x0) {
        local_50 = &DAT_0006f2ee;
      }
      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);
      uVar7 = FUN_00026ae0();
      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);
      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {
        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);
        piVar1[3] = 1;
        piVar1[0x13] = iVar5;
        iVar5 = *(int *)(param_1 + 0xf4);
        piVar1[0x14] = 1;
        if (iVar5 == 0) {
          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);
          FUN_0001d220(uVar6);
          piVar1[4] = 0;
          piVar1[1] = iVar2;
          FUN_0002c3f0();
          piVar1[0xb] = iVar3;
          piVar1[0xc] = iVar4;
        }
        else {
          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");
          FUN_0001d220(uVar6);
          piVar1[4] = 0;
          piVar1[1] = iVar2;
          FUN_0002c3f0();
          piVar1[0xf] = 0x80;
          piVar1[0xe] = 0x80;
          piVar1[0xb] = iVar3;
          piVar1[0xd] = 0x80;
          piVar1[0xc] = iVar4;
        }
LAB_00033c63:
        FUN_00029d20();
        FUN_00029e10();
        FUN_00029e10();
        FUN_00029e10();
        local_24 = 0x400000;
        FUN_00029c40();
        FUN_00033b40();
        goto LAB_00033d5c;
      }
      FUN_0001d220(uVar6);
      local_74 = "X11 forwarding is not enabled";
    }
    else {
LAB_00033d90:
      local_74 = "Unsupported channel type requested";
    }
  }
  else if (local_54 == 0xf) {
    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);
    local_74 = "Unsupported channel type requested";
    if (iVar5 == 0) {
      FUN_000273d0();
      if (local_48 == (undefined *)0x0) {
        local_48 = &DAT_0006f2ee;
      }
      local_38 = FUN_0001d000("%.*s",local_44,local_48);
      local_40[0] = FUN_00026ae0();
      FUN_000273d0();
      uVar6 = FUN_00026ae0();
      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);
      if (local_50 == (undefined *)0x0) {
        local_50 = &DAT_0006f2ee;
      }
      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,
                   local_40[0],local_4c,local_50,uVar6);
      FUN_0001d220(local_38);
      if (iVar5 == 0) {
        local_74 = "Remote port is not recognised";
      }
      else {
        if (*(int *)(iVar5 + 0x14) != 0) {
          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);
          FUN_0001d220(piVar1);
          goto LAB_00033d5c;
        }
        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),
                             piVar1,*(undefined4 *)(param_1 + 0x248),
                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));
        uVar6 = *(undefined4 *)(iVar5 + 4);
        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",
                     *(undefined4 *)(iVar5 + 0xc),uVar6);
        if (iVar8 == 0) {
          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");
          piVar1[3] = 3;
          piVar1[4] = 0;
          piVar1[1] = iVar2;
          goto LAB_00033c4e;
        }
        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);
        FUN_0001d220(iVar8);
        local_74 = "Port open failed";
      }
    }
  }
  else {
    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))
    goto LAB_00033d90;
    local_74 = "Agent forwarding is not enabled";
    if (*(int *)(param_1 + 0x48) != 0) {
      piVar1[3] = 2;
      FUN_0001c780(piVar1 + 0x13);
      piVar1[0x16] = 0;
      piVar1[4] = 0;
      piVar1[1] = iVar2;
LAB_00033c4e:
      FUN_0002c3f0();
      piVar1[0xb] = iVar3;
      piVar1[0xc] = iVar4;
      goto LAB_00033c63;
    }
  }
  piVar1[4] = 0;
  piVar1[1] = iVar2;
  FUN_00029d20();
  FUN_00029e10();
  local_24 = 0x2000000;
  FUN_00029c40();
  FUN_00029e50();
  FUN_00029e50();
  FUN_00033b40();
  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);
  FUN_0001d220(piVar1);
LAB_00033d5c:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0006dad0();
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00015fa0
ADD EBX,0x71207
SUB ESP,0x6c
MOV EDI,dword ptr [ESP + 0x84]
LEA ECX,[ESP + 0x28]
LEA EDX,[ESP + 0x24]
MOV EBP,dword ptr [ESP + 0x80]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x5c],EAX
XOR EAX,EAX
MOV EAX,EDI
CALL 0x000273d0
SUB ESP,0x8
PUSH 0x5c
PUSH 0x1
CALL 0x0001c990
MOV dword ptr [EAX],EBP
MOV ESI,EAX
MOV EAX,EDI
CALL 0x00026ae0
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,EDI
CALL 0x00026ae0
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,EDI
CALL 0x00026ae0
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
CMP EAX,0x3
JZ 0x00033d78
CMP EAX,0xf
JZ 0x00033cb8
CMP EAX,0x16
JNZ 0x00033d90
SUB ESP,0x4
LEA EAX,[EBX + 0xfffccb3c]
PUSH 0x16
PUSH EAX
PUSH dword ptr [ESP + 0x30]
CALL 0x000141c0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00033d90
MOV EDI,dword ptr [EBP + 0x48]
LEA EAX,[EBX + 0xfffcf080]
MOV dword ptr [ESP + 0x8],EAX
TEST EDI,EDI
JZ 0x00033ce2
SUB ESP,0xc
LEA EAX,[ESI + 0x4c]
MOV dword ptr [ESI + 0xc],0x2
PUSH EAX
CALL 0x0001c780
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [ESI + 0x58],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,ESI
CALL 0x0002c3f0
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESI + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESI + 0x30],EAX
MOV EAX,0x5b
CALL 0x00029d20
MOV EDX,dword ptr [ESI + 0x4]
MOV EBX,EAX
CALL 0x00029e10
MOV EDX,dword ptr [ESI + 0x8]
MOV EAX,EBX
CALL 0x00029e10
MOV EDX,dword ptr [ESI + 0x34]
MOV EAX,EBX
CALL 0x00029e10
LEA EDX,[ESP + 0x58]
MOV EAX,EBX
MOV ECX,0x4
MOV dword ptr [ESP + 0x58],0x400000
CALL 0x00029c40
MOV EDX,EBX
MOV EAX,EBP
CALL 0x00033b40
JMP 0x00033d5c
SUB ESP,0x4
LEA EAX,[EBX + 0xfffccb17]
PUSH 0xf
PUSH EAX
PUSH dword ptr [ESP + 0x30]
CALL 0x000141c0
ADD ESP,0x10
LEA ECX,[EBX + 0xfffcf05c]
MOV dword ptr [ESP + 0x8],ECX
TEST EAX,EAX
JZ 0x00033da0
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,0x5c
CALL 0x00029d20
MOV EDX,dword ptr [ESI + 0x4]
MOV EDI,EAX
CALL 0x00029e10
MOV ECX,0x4
LEA EDX,[ESP + 0x58]
MOV EAX,EDI
MOV dword ptr [ESP + 0x58],0x2000000
CALL 0x00029c40
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,EDI
CALL 0x00029e50
LEA EDX,[EBX + 0xfffcb35c]
MOV EAX,EDI
CALL 0x00029e50
MOV EDX,EDI
MOV EAX,EBP
CALL 0x00033b40
SUB ESP,0x4
LEA EAX,[EBX + 0xfffccb53]
PUSH dword ptr [ESP + 0xc]
PUSH EAX
PUSH EBP
CALL 0x00026c00
MOV dword ptr [ESP],ESI
CALL 0x0001d220
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x5c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00034070
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x24]
CMP word ptr [EAX],0x3178
JNZ 0x00033d90
CMP byte ptr [EAX + 0x2],0x31
JZ 0x00033e90
LEA ESI,[ESI]
LEA EAX,[EBX + 0xfffcf05c]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00033ce2
LEA ECX,[ESP + 0x38]
LEA EDX,[ESP + 0x34]
MOV EAX,EDI
CALL 0x000273d0
MOV EAX,dword ptr [ESP + 0x34]
LEA EDX,[EBX + 0xfffca57e]
MOV dword ptr [ESP + 0x8],EDX
TEST EAX,EAX
CMOVZ EAX,EDX
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xfffcbe6e]
PUSH dword ptr [ESP + 0x40]
PUSH EAX
CALL 0x0001d000
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,EDI
CALL 0x00026ae0
LEA EDX,[ESP + 0x3c]
LEA ECX,[ESP + 0x40]
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,EDI
CALL 0x000273d0
MOV EAX,EDI
CALL 0x00026ae0
MOV dword ptr [ESP + 0x2c],EAX
ADD ESP,0xc
PUSH 0x0
LEA EAX,[ESP + 0x44]
PUSH EAX
PUSH dword ptr [EBP + 0x13c]
CALL 0x000615a0
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x3c]
ADD ESP,0xc
MOV ECX,dword ptr [ESP + 0x20]
TEST EAX,EAX
CMOVZ EAX,dword ptr [ESP + 0xc]
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xfffcf0c8]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x58]
PUSH EAX
PUSH EBP
CALL 0x00026c00
ADD ESP,0x14
PUSH dword ptr [ESP + 0x50]
CALL 0x0001d220
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x18]
TEST EDX,EDX
JZ 0x00034008
MOV EAX,dword ptr [EDX + 0x14]
TEST EAX,EAX
JZ 0x00033f90
PUSH dword ptr [EDI]
PUSH dword ptr [EDI + 0x14]
PUSH dword ptr [EDI + 0x8]
PUSH EAX
CALL 0x0005bce0
MOV dword ptr [ESP],ESI
CALL 0x0001d220
ADD ESP,0x10
JMP 0x00033d5c
LEA ECX,[ESP + 0x30]
LEA EDX,[ESP + 0x2c]
MOV EAX,EDI
CALL 0x000273d0
MOV EAX,dword ptr [ESP + 0x2c]
LEA EDX,[EBX + 0xfffca57e]
TEST EAX,EAX
CMOVZ EAX,EDX
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xfffcbe6e]
PUSH dword ptr [ESP + 0x38]
PUSH EAX
CALL 0x0001d000
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,EDI
CALL 0x00026ae0
PUSH EAX
MOV EDI,EAX
LEA EAX,[EBX + 0xfffcf0a0]
PUSH dword ptr [ESP + 0x1c]
PUSH EAX
PUSH EBP
CALL 0x00026c00
MOV EAX,dword ptr [EBP + 0x4c]
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x00033ef9
MOV EAX,dword ptr [EBP + 0xf4]
TEST EAX,EAX
JZ 0x00034020
PUSH EDI
PUSH dword ptr [ESP + 0xc]
PUSH ESI
PUSH dword ptr [EBP + 0x194]
CALL 0x0006cd00
MOV dword ptr [ESI + 0xc],0x1
ADD ESP,0x10
MOV dword ptr [ESI + 0x4c],EAX
MOV EAX,dword ptr [EBP + 0xf4]
MOV dword ptr [ESI + 0x50],0x1
TEST EAX,EAX
JZ 0x00034075
SUB ESP,0x8
LEA EAX,[EBX + 0xfffccb6d]
PUSH EAX
PUSH dword ptr [EBP + 0x110]
CALL 0x000628e0
POP ECX
PUSH dword ptr [ESP + 0x14]
CALL 0x0001d220
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,ESI
CALL 0x0002c3f0
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESI + 0x3c],0x80
MOV dword ptr [ESI + 0x38],0x80
MOV dword ptr [ESI + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x24]
ADD ESP,0x10
MOV dword ptr [ESI + 0x34],0x80
MOV dword ptr [ESI + 0x30],EAX
JMP 0x00033c63
MOV EAX,dword ptr [EDX + 0x18]
SUB ESP,0x8
PUSH dword ptr [EAX + 0x24]
LEA EAX,[ESI + 0x4c]
PUSH dword ptr [EBP + 0x248]
PUSH ESI
PUSH dword ptr [EDX + 0x4]
PUSH dword ptr [EDX + 0xc]
MOV dword ptr [ESP + 0x24],EDX
PUSH EAX
CALL 0x0001dc80
ADD ESP,0x20
MOV EDX,dword ptr [ESP + 0x8]
MOV EDI,EAX
LEA EAX,[EBX + 0xfffcf100]
PUSH dword ptr [EDX + 0x4]
PUSH dword ptr [EDX + 0xc]
PUSH EAX
PUSH EBP
CALL 0x00026c00
ADD ESP,0x10
TEST EDI,EDI
JZ 0x0003403e
SUB ESP,0x4
LEA EAX,[EBX + 0xfffccb27]
PUSH EDI
PUSH EAX
PUSH EBP
CALL 0x00026c00
MOV dword ptr [ESP],EDI
CALL 0x0001d220
ADD ESP,0x10
LEA EAX,[EBX + 0xfffccac6]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00033ce2
LEA EAX,[EBX + 0xfffccad7]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00033ce2
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x0001d220
ADD ESP,0x10
LEA EAX,[EBX + 0xfffccaf5]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00033ce2
SUB ESP,0x8
LEA EAX,[EBX + 0xfffcf12c]
PUSH EAX
PUSH dword ptr [EBP + 0x110]
CALL 0x000628e0
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [ESI + 0xc],0x3
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
JMP 0x00033c4e
CALL 0x0006dad0
PUSH EAX
PUSH EAX
LEA EAX,[EBX + 0xfffccb6d]
PUSH EAX
PUSH dword ptr [EBP + 0x110]
CALL 0x000628e0
POP EDX
PUSH dword ptr [ESP + 0x14]
CALL 0x0001d220
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,ESI
CALL 0x0002c3f0
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESI + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x24]
ADD ESP,0x10
MOV dword ptr [ESI + 0x30],EAX
JMP 0x00033c63
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00033b60(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00033b60(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00033b60(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "short *local_58;" (sized_type_specifier "short" short) (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x33b69;" (assignment_expression "uStack_14 = 0x33b69" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)FUN_0001c990(1,0x5c);" (assignment_expression "piVar1 = (int *)FUN_0001c990(1,0x5c)" identifier = (cast_expression "(int *)FUN_0001c990(1,0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001c990(1,0x5c)" identifier (argument_list "(1,0x5c)" ( number_literal , number_literal ))))) ;) (expression_statement "*piVar1 = param_1;" (assignment_expression "*piVar1 = param_1" (pointer_expression "*piVar1" * identifier) = identifier) ;) (expression_statement "iVar2 = FUN_00026ae0();" (assignment_expression "iVar2 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = FUN_00026ae0();" (assignment_expression "iVar3 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = FUN_00026ae0();" (assignment_expression "iVar4 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" if (parenthesized_expression "(local_54 == 3)" ( (binary_expression "local_54 == 3" identifier == number_literal) )) (compound_statement "{\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }" { (if_statement "if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" if (parenthesized_expression "((*local_58 == 0x3178) && ((char)local_58[1] == '1'))" ( (binary_expression "(*local_58 == 0x3178) && ((char)local_58[1] == '1')" (parenthesized_expression "(*local_58 == 0x3178)" ( (binary_expression "*local_58 == 0x3178" (pointer_expression "*local_58" * identifier) == number_literal) )) && (parenthesized_expression "((char)local_58[1] == '1')" ( (binary_expression "(char)local_58[1] == '1'" (cast_expression "(char)local_58[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_58[1]" identifier [ number_literal ])) == (char_literal "'1'" ' character ')) ))) )) (compound_statement "{\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }" { (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }" if (parenthesized_expression "(local_50 == (undefined *)0x0)" ( (binary_expression "local_50 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_50 = &DAT_0006f2ee;\n      }" { (expression_statement "local_50 = &DAT_0006f2ee;" (assignment_expression "local_50 = &DAT_0006f2ee" identifier = (pointer_expression "&DAT_0006f2ee" & identifier)) ;) })) (expression_statement "uVar6 = FUN_0001d000("%.*s",local_4c,local_50);" (assignment_expression "uVar6 = FUN_0001d000("%.*s",local_4c,local_50)" identifier = (call_expression "FUN_0001d000("%.*s",local_4c,local_50)" identifier (argument_list "("%.*s",local_4c,local_50)" ( (string_literal ""%.*s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_00026ae0();" (assignment_expression "uVar7 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);" (call_expression "FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7)" identifier (argument_list "(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7)" ( identifier , (string_literal ""Received X11 connect request from %s:%d"" " string_content ") , identifier , identifier ))) ;) (if_statement "if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }" if (parenthesized_expression "((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0))" ( (binary_expression "(*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)" (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0xf4) != 0)" ( (binary_expression "*(int *)(param_1 + 0xf4) != 0" (pointer_expression "*(int *)(param_1 + 0xf4)" * (cast_expression "(int *)(param_1 + 0xf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf4)" ( (binary_expression "param_1 + 0xf4" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }" { (expression_statement "iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);" (assignment_expression "iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" identifier = (call_expression "FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x194)" * (cast_expression "(undefined4 *)(param_1 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x194)" ( (binary_expression "param_1 + 0x194" identifier + number_literal) )))) , identifier , identifier , identifier )))) ;) (expression_statement "piVar1[3] = 1;" (assignment_expression "piVar1[3] = 1" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0x13] = iVar5;" (assignment_expression "piVar1[0x13] = iVar5" (subscript_expression "piVar1[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0xf4);" (assignment_expression "iVar5 = *(int *)(param_1 + 0xf4)" identifier = (pointer_expression "*(int *)(param_1 + 0xf4)" * (cast_expression "(int *)(param_1 + 0xf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf4)" ( (binary_expression "param_1 + 0xf4" identifier + number_literal) ))))) ;) (expression_statement "piVar1[0x14] = 1;" (assignment_expression "piVar1[0x14] = 1" (subscript_expression "piVar1[0x14]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }" { (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) , (string_literal ""Opened X11 forward channel"" " string_content ") , number_literal , number_literal ))) ;) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" else (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" { (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel")" identifier (argument_list "(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel")" ( (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) , (string_literal ""Opened X11 forward channel"" " string_content ") ))) ;) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1[0xf] = 0x80;" (assignment_expression "piVar1[0xf] = 0x80" (subscript_expression "piVar1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0xe] = 0x80;" (assignment_expression "piVar1[0xe] = 0x80" (subscript_expression "piVar1[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar1[0xd] = 0x80;" (assignment_expression "piVar1[0xd] = 0x80" (subscript_expression "piVar1[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" identifier [ number_literal ]) = identifier) ;) }))) (labeled_statement "LAB_00033c63:\n        FUN_00029d20();" statement_identifier : (expression_statement "FUN_00029d20();" (call_expression "FUN_00029d20()" identifier (argument_list "()" ( ))) ;)) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = 0x400000;" (assignment_expression "local_24 = 0x400000" identifier = number_literal) ;) (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00033b40();" (call_expression "FUN_00033b40()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00033d5c;" goto statement_identifier ;) })) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "local_74 = "X11 forwarding is not enabled";" (assignment_expression "local_74 = "X11 forwarding is not enabled"" identifier = (string_literal ""X11 forwarding is not enabled"" " string_content ")) ;) }) (else_clause "else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" else (compound_statement "{\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" { (labeled_statement "LAB_00033d90:\n      local_74 = "Unsupported channel type requested";" statement_identifier : (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" identifier = (string_literal ""Unsupported channel type requested"" " string_content ")) ;)) }))) }) (else_clause "else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" else (if_statement "if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" if (parenthesized_expression "(local_54 == 0xf)" ( (binary_expression "local_54 == 0xf" identifier == number_literal) )) (compound_statement "{\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }" { (expression_statement "iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);" (assignment_expression "iVar5 = memcmp(local_58,"forwarded-tcpip",0xf)" identifier = (call_expression "memcmp(local_58,"forwarded-tcpip",0xf)" identifier (argument_list "(local_58,"forwarded-tcpip",0xf)" ( identifier , (string_literal ""forwarded-tcpip"" " string_content ") , number_literal )))) ;) (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" identifier = (string_literal ""Unsupported channel type requested"" " string_content ")) ;) (if_statement "if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }" { (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }" if (parenthesized_expression "(local_48 == (undefined *)0x0)" ( (binary_expression "local_48 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_48 = &DAT_0006f2ee;\n      }" { (expression_statement "local_48 = &DAT_0006f2ee;" (assignment_expression "local_48 = &DAT_0006f2ee" identifier = (pointer_expression "&DAT_0006f2ee" & identifier)) ;) })) (expression_statement "local_38 = FUN_0001d000("%.*s",local_44,local_48);" (assignment_expression "local_38 = FUN_0001d000("%.*s",local_44,local_48)" identifier = (call_expression "FUN_0001d000("%.*s",local_44,local_48)" identifier (argument_list "("%.*s",local_44,local_48)" ( (string_literal ""%.*s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "local_40[0] = FUN_00026ae0();" (assignment_expression "local_40[0] = FUN_00026ae0()" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar6 = FUN_00026ae0();" (assignment_expression "uVar6 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);" (assignment_expression "iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0)" identifier = (call_expression "FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x13c),local_40,0)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" * (cast_expression "(undefined4 *)(param_1 + 0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) , identifier , number_literal )))) ;) (if_statement "if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }" if (parenthesized_expression "(local_50 == (undefined *)0x0)" ( (binary_expression "local_50 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_50 = &DAT_0006f2ee;\n      }" { (expression_statement "local_50 = &DAT_0006f2ee;" (assignment_expression "local_50 = &DAT_0006f2ee" identifier = (pointer_expression "&DAT_0006f2ee" & identifier)) ;) })) (expression_statement "FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);" (call_expression "FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6)" identifier (argument_list "(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6)" ( identifier , (string_literal ""Received remote port %s:%d open request from %.*s:%d"" " string_content ") , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0001d220(local_38);" (call_expression "FUN_0001d220(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) (if_statement "if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        local_74 = "Remote port is not recognised";\n      }" { (expression_statement "local_74 = "Remote port is not recognised";" (assignment_expression "local_74 = "Remote port is not recognised"" identifier = (string_literal ""Remote port is not recognised"" " string_content ")) ;) }) (else_clause "else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" else (compound_statement "{\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" { (if_statement "if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }" if (parenthesized_expression "(*(int *)(iVar5 + 0x14) != 0)" ( (binary_expression "*(int *)(iVar5 + 0x14) != 0" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }" { (expression_statement "FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);" (call_expression "FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2)" identifier (argument_list "(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2)" ( (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) , (subscript_expression "param_2[2]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "FUN_0001d220(piVar1);" (call_expression "FUN_0001d220(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) (goto_statement "goto LAB_00033d5c;" goto statement_identifier ;) })) (expression_statement "iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));" (assignment_expression "iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" identifier = (call_expression "FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" identifier (argument_list "(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" ( (binary_expression "piVar1 + 0x13" identifier + number_literal) , (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24)" * (cast_expression "(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0x18) + 0x24)" ( (binary_expression "*(int *)(iVar5 + 0x18) + 0x24" (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);" (call_expression "FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6)" identifier (argument_list "(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6)" ( identifier , (string_literal ""Attempting to forward remote port to %s:%d"" " string_content ") , (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (if_statement "if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }" { (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully")" identifier (argument_list "(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully")" ( (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) , (string_literal ""Forwarded port opened successfully"" " string_content ") ))) ;) (expression_statement "piVar1[3] = 3;" (assignment_expression "piVar1[3] = 3" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00033c4e;" goto statement_identifier ;) })) (expression_statement "FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);" (call_expression "FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6)" identifier (argument_list "(param_1,"Port open failed: %s",iVar8,uVar6)" ( identifier , (string_literal ""Port open failed: %s"" " string_content ") , identifier , identifier ))) ;) (expression_statement "FUN_0001d220(iVar8);" (call_expression "FUN_0001d220(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "local_74 = "Port open failed";" (assignment_expression "local_74 = "Port open failed"" identifier = (string_literal ""Port open failed"" " string_content ")) ;) }))) })) }) (else_clause "else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" else (compound_statement "{\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" { (if_statement "if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;" if (parenthesized_expression "((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))" ( (binary_expression "(local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0)" (parenthesized_expression "(local_54 != 0x16)" ( (binary_expression "local_54 != 0x16" identifier != number_literal) )) || (parenthesized_expression "(iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0)" ( (comma_expression "iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0" (assignment_expression "iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16)" identifier = (call_expression "memcmp(local_58,"auth-agent@openssh.com",0x16)" identifier (argument_list "(local_58,"auth-agent@openssh.com",0x16)" ( identifier , (string_literal ""auth-agent@openssh.com"" " string_content ") , number_literal )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00033d90;" goto statement_identifier ;)) (expression_statement "local_74 = "Agent forwarding is not enabled";" (assignment_expression "local_74 = "Agent forwarding is not enabled"" identifier = (string_literal ""Agent forwarding is not enabled"" " string_content ")) ;) (if_statement "if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x48) != 0)" ( (binary_expression "*(int *)(param_1 + 0x48) != 0" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }" { (expression_statement "piVar1[3] = 2;" (assignment_expression "piVar1[3] = 2" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0001c780(piVar1 + 0x13);" (call_expression "FUN_0001c780(piVar1 + 0x13)" identifier (argument_list "(piVar1 + 0x13)" ( (binary_expression "piVar1 + 0x13" identifier + number_literal) ))) ;) (expression_statement "piVar1[0x16] = 0;" (assignment_expression "piVar1[0x16] = 0" (subscript_expression "piVar1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_00033c4e:\n      FUN_0002c3f0();" statement_identifier : (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" identifier (argument_list "()" ( ))) ;)) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00033c63;" goto statement_identifier ;) })) }))))) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00029d20();" (call_expression "FUN_00029d20()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = 0x2000000;" (assignment_expression "local_24 = 0x2000000" identifier = number_literal) ;) (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e50();" (call_expression "FUN_00029e50()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e50();" (call_expression "FUN_00029e50()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00033b40();" (call_expression "FUN_00033b40()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00026c00(param_1,"Rejected channel open: %s",local_74);" (call_expression "FUN_00026c00(param_1,"Rejected channel open: %s",local_74)" identifier (argument_list "(param_1,"Rejected channel open: %s",local_74)" ( identifier , (string_literal ""Rejected channel open: %s"" " string_content ") , identifier ))) ;) (expression_statement "FUN_0001d220(piVar1);" (call_expression "FUN_0001d220(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) (labeled_statement "LAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }" { comment (expression_statement "FUN_0006dad0();" (call_expression "FUN_0006dad0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid ssh2_msg_channel_open(Ssh_conflict ssh,Packet *pktin)\n\n{\n  int iVar1;\n  ssh_channel *c;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  int iVar5;\n  Packet *pPVar6;\n  ulong uVar7;\n  void *pvVar8;\n  X11Connection *pXVar9;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  undefined4 uVar11;\n  char *local_74;\n  char *type;\n  int typelen;\n  char *peeraddr;\n  int peeraddrlen;\n  char *shost;\n  int shostlen;\n  ssh_rportfwd pf;\n  uchar x [4];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  ssh_pkt_getstring(pktin,&type,&typelen);\n  c = (ssh_channel *)safemalloc(1,0x5c);\n  c->ssh = ssh;\n  uVar2 = ssh_pkt_getuint32(pktin);\n  uVar3 = ssh_pkt_getuint32(pktin);\n  uVar4 = ssh_pkt_getuint32(pktin);\n  if (typelen == 3) {\n    if ((*(short *)type == 0x3178) && (type[2] == '1')) {\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);\n      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }\n      safefree(pcVar10);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (typelen == 0xf) {\n    iVar5 = memcmp(type,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }\n  c->halfopen = 0;\n  c->remoteid = uVar2;\n  pPVar6 = ssh2_pkt_init(0x5c);\n  ssh_pkt_adduint32(pPVar6,c->remoteid);\n  x[0] = '\0';\n  x[1] = '\0';\n  x[2] = '\0';\n  x[3] = '\x02';\n  ssh_pkt_adddata(pPVar6,x,4);\n  ssh_pkt_addstring(pPVar6,local_74);\n  ssh_pkt_addstring(pPVar6,"en");\n  ssh2_pkt_send(ssh,pPVar6);\n  logeventf(ssh,"Rejected channel open: %s",local_74);\n  safefree(c);\nLAB_00033d5c:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void ssh2_msg_channel_open(Ssh_conflict ssh,Packet *pktin)\n\n{\n  int iVar1;\n  ssh_channel *c;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  int iVar5;\n  Packet *pPVar6;\n  ulong uVar7;\n  void *pvVar8;\n  X11Connection *pXVar9;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  undefined4 uVar11;\n  char *local_74;\n  char *type;\n  int typelen;\n  char *peeraddr;\n  int peeraddrlen;\n  char *shost;\n  int shostlen;\n  ssh_rportfwd pf;\n  uchar x [4];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  ssh_pkt_getstring(pktin,&type,&typelen);\n  c = (ssh_channel *)safemalloc(1,0x5c);\n  c->ssh = ssh;\n  uVar2 = ssh_pkt_getuint32(pktin);\n  uVar3 = ssh_pkt_getuint32(pktin);\n  uVar4 = ssh_pkt_getuint32(pktin);\n  if (typelen == 3) {\n    if ((*(short *)type == 0x3178) && (type[2] == '1')) {\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);\n      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }\n      safefree(pcVar10);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (typelen == 0xf) {\n    iVar5 = memcmp(type,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }\n  c->halfopen = 0;\n  c->remoteid = uVar2;\n  pPVar6 = ssh2_pkt_init(0x5c);\n  ssh_pkt_adduint32(pPVar6,c->remoteid);\n  x[0] = '\0';\n  x[1] = '\0';\n  x[2] = '\0';\n  x[3] = '\x02';\n  ssh_pkt_adddata(pPVar6,x,4);\n  ssh_pkt_addstring(pPVar6,local_74);\n  ssh_pkt_addstring(pPVar6,"en");\n  ssh2_pkt_send(ssh,pPVar6);\n  logeventf(ssh,"Rejected channel open: %s",local_74);\n  safefree(c);\nLAB_00033d5c:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" primitive_type (function_declarator "ssh2_msg_channel_open(Ssh_conflict ssh,Packet *pktin)" identifier (parameter_list "(Ssh_conflict ssh,Packet *pktin)" ( (parameter_declaration "Ssh_conflict ssh" type_identifier identifier) , (parameter_declaration "Packet *pktin" type_identifier (pointer_declarator "*pktin" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  ssh_channel *c;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  int iVar5;\n  Packet *pPVar6;\n  ulong uVar7;\n  void *pvVar8;\n  X11Connection *pXVar9;\n  char *pcVar10;\n  int in_GS_OFFSET;\n  undefined4 uVar11;\n  char *local_74;\n  char *type;\n  int typelen;\n  char *peeraddr;\n  int peeraddrlen;\n  char *shost;\n  int shostlen;\n  ssh_rportfwd pf;\n  uchar x [4];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  ssh_pkt_getstring(pktin,&type,&typelen);\n  c = (ssh_channel *)safemalloc(1,0x5c);\n  c->ssh = ssh;\n  uVar2 = ssh_pkt_getuint32(pktin);\n  uVar3 = ssh_pkt_getuint32(pktin);\n  uVar4 = ssh_pkt_getuint32(pktin);\n  if (typelen == 3) {\n    if ((*(short *)type == 0x3178) && (type[2] == '1')) {\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);\n      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }\n      safefree(pcVar10);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (typelen == 0xf) {\n    iVar5 = memcmp(type,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }\n  c->halfopen = 0;\n  c->remoteid = uVar2;\n  pPVar6 = ssh2_pkt_init(0x5c);\n  ssh_pkt_adduint32(pPVar6,c->remoteid);\n  x[0] = '\0';\n  x[1] = '\0';\n  x[2] = '\0';\n  x[3] = '\x02';\n  ssh_pkt_adddata(pPVar6,x,4);\n  ssh_pkt_addstring(pPVar6,local_74);\n  ssh_pkt_addstring(pPVar6,"en");\n  ssh2_pkt_send(ssh,pPVar6);\n  logeventf(ssh,"Rejected channel open: %s",local_74);\n  safefree(c);\nLAB_00033d5c:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ssh_channel *c;" type_identifier (pointer_declarator "*c" * identifier) ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "Packet *pPVar6;" type_identifier (pointer_declarator "*pPVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (declaration "X11Connection *pXVar9;" type_identifier (pointer_declarator "*pXVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "char *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "char *type;" primitive_type (pointer_declarator "*type" * identifier) ;) (declaration "int typelen;" primitive_type identifier ;) (declaration "char *peeraddr;" primitive_type (pointer_declarator "*peeraddr" * identifier) ;) (declaration "int peeraddrlen;" primitive_type identifier ;) (declaration "char *shost;" primitive_type (pointer_declarator "*shost" * identifier) ;) (declaration "int shostlen;" primitive_type identifier ;) (declaration "ssh_rportfwd pf;" type_identifier identifier ;) (declaration "uchar x [4];" type_identifier (array_declarator "x [4]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(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 "ssh_pkt_getstring(pktin,&type,&typelen);" (call_expression "ssh_pkt_getstring(pktin,&type,&typelen)" identifier (argument_list "(pktin,&type,&typelen)" ( identifier , (pointer_expression "&type" & identifier) , (pointer_expression "&typelen" & identifier) ))) ;) (expression_statement "c = (ssh_channel *)safemalloc(1,0x5c);" (assignment_expression "c = (ssh_channel *)safemalloc(1,0x5c)" identifier = (cast_expression "(ssh_channel *)safemalloc(1,0x5c)" ( (type_descriptor "ssh_channel *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x5c)" identifier (argument_list "(1,0x5c)" ( number_literal , number_literal ))))) ;) (expression_statement "c->ssh = ssh;" (assignment_expression "c->ssh = ssh" (field_expression "c->ssh" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar2 = ssh_pkt_getuint32(pktin);" (assignment_expression "uVar2 = ssh_pkt_getuint32(pktin)" identifier = (call_expression "ssh_pkt_getuint32(pktin)" identifier (argument_list "(pktin)" ( identifier )))) ;) (expression_statement "uVar3 = ssh_pkt_getuint32(pktin);" (assignment_expression "uVar3 = ssh_pkt_getuint32(pktin)" identifier = (call_expression "ssh_pkt_getuint32(pktin)" identifier (argument_list "(pktin)" ( identifier )))) ;) (expression_statement "uVar4 = ssh_pkt_getuint32(pktin);" (assignment_expression "uVar4 = ssh_pkt_getuint32(pktin)" identifier = (call_expression "ssh_pkt_getuint32(pktin)" identifier (argument_list "(pktin)" ( identifier )))) ;) (if_statement "if (typelen == 3) {\n    if ((*(short *)type == 0x3178) && (type[2] == '1')) {\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);\n      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }\n      safefree(pcVar10);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (typelen == 0xf) {\n    iVar5 = memcmp(type,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }" if (parenthesized_expression "(typelen == 3)" ( (binary_expression "typelen == 3" identifier == number_literal) )) (compound_statement "{\n    if ((*(short *)type == 0x3178) && (type[2] == '1')) {\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);\n      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }\n      safefree(pcVar10);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }" { (if_statement "if ((*(short *)type == 0x3178) && (type[2] == '1')) {\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);\n      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }\n      safefree(pcVar10);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" if (parenthesized_expression "((*(short *)type == 0x3178) && (type[2] == '1'))" ( (binary_expression "(*(short *)type == 0x3178) && (type[2] == '1')" (parenthesized_expression "(*(short *)type == 0x3178)" ( (binary_expression "*(short *)type == 0x3178" (pointer_expression "*(short *)type" * (cast_expression "(short *)type" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) && (parenthesized_expression "(type[2] == '1')" ( (binary_expression "type[2] == '1'" (subscript_expression "type[2]" identifier [ number_literal ]) == (char_literal "'1'" ' character ')) ))) )) (compound_statement "{\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);\n      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }\n      safefree(pcVar10);\n      local_74 = "X11 forwarding is not enabled";\n    }" { (expression_statement "ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);" (call_expression "ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen)" identifier (argument_list "(pktin,&peeraddr,&peeraddrlen)" ( identifier , (pointer_expression "&peeraddr" & identifier) , (pointer_expression "&peeraddrlen" & identifier) ))) ;) (if_statement "if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }" if (parenthesized_expression "(peeraddr == (char *)0x0)" ( (binary_expression "peeraddr == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        peeraddr = "";\n      }" { (expression_statement "peeraddr = "";" (assignment_expression "peeraddr = """ identifier = (string_literal """" " ")) ;) })) (expression_statement "pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr);" (assignment_expression "pcVar10 = dupprintf("%.*s",peeraddrlen,peeraddr)" identifier = (call_expression "dupprintf("%.*s",peeraddrlen,peeraddr)" identifier (argument_list "("%.*s",peeraddrlen,peeraddr)" ( (string_literal ""%.*s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "uVar7 = ssh_pkt_getuint32(pktin);" (assignment_expression "uVar7 = ssh_pkt_getuint32(pktin)" identifier = (call_expression "ssh_pkt_getuint32(pktin)" identifier (argument_list "(pktin)" ( identifier )))) ;) (expression_statement "logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7);" (call_expression "logeventf(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7)" identifier (argument_list "(ssh,"Received X11 connect request from %s:%d",pcVar10,uVar7)" ( identifier , (string_literal ""Received X11 connect request from %s:%d"" " string_content ") , identifier , identifier ))) ;) (if_statement "if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }" if (parenthesized_expression "((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0))" ( (binary_expression "(ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)" (parenthesized_expression "(ssh->X11_fwd_enabled != 0)" ( (binary_expression "ssh->X11_fwd_enabled != 0" (field_expression "ssh->X11_fwd_enabled" identifier -> field_identifier) != number_literal) )) || (parenthesized_expression "(ssh->connshare != (void *)0x0)" ( (binary_expression "ssh->connshare != (void *)0x0" (field_expression "ssh->connshare" identifier -> field_identifier) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);\n        c->type = 1;\n        (c->u).x11.xconn = pXVar9;\n        pvVar8 = ssh->connshare;\n        (c->u).x11.initial = 1;\n        if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\nLAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);\n        ssh_pkt_adduint32(pPVar6,c->remoteid);\n        ssh_pkt_adduint32(pPVar6,c->localid);\n        ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);\n        x[0] = '\0';\n        x[1] = '\0';\n        x[2] = '@';\n        x[3] = '\0';\n        ssh_pkt_adddata(pPVar6,x,4);\n        ssh2_pkt_send(ssh,pPVar6);\n        goto LAB_00033d5c;\n      }" { (expression_statement "pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7);" (assignment_expression "pXVar9 = x11_init(ssh->x11authtree,c,pcVar10,uVar7)" identifier = (call_expression "x11_init(ssh->x11authtree,c,pcVar10,uVar7)" identifier (argument_list "(ssh->x11authtree,c,pcVar10,uVar7)" ( (field_expression "ssh->x11authtree" identifier -> field_identifier) , identifier , identifier , identifier )))) ;) (expression_statement "c->type = 1;" (assignment_expression "c->type = 1" (field_expression "c->type" identifier -> field_identifier) = number_literal) ;) (expression_statement "(c->u).x11.xconn = pXVar9;" (assignment_expression "(c->u).x11.xconn = pXVar9" (field_expression "(c->u).x11.xconn" (field_expression "(c->u).x11" (parenthesized_expression "(c->u)" ( (field_expression "c->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pvVar8 = ssh->connshare;" (assignment_expression "pvVar8 = ssh->connshare" identifier = (field_expression "ssh->connshare" identifier -> field_identifier)) ;) (expression_statement "(c->u).x11.initial = 1;" (assignment_expression "(c->u).x11.initial = 1" (field_expression "(c->u).x11.initial" (field_expression "(c->u).x11" (parenthesized_expression "(c->u)" ( (field_expression "c->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (pvVar8 == (void *)0x0) {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }\n        else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.remmaxpkt = uVar4;\n        }" { (expression_statement "logevent(ssh->frontend,"Opened X11 forward channel");" (call_expression "logevent(ssh->frontend,"Opened X11 forward channel")" identifier (argument_list "(ssh->frontend,"Opened X11 forward channel")" ( (field_expression "ssh->frontend" identifier -> field_identifier) , (string_literal ""Opened X11 forward channel"" " string_content ") ))) ;) (expression_statement "safefree(pcVar10);" (call_expression "safefree(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "c->halfopen = 0;" (assignment_expression "c->halfopen = 0" (field_expression "c->halfopen" identifier -> field_identifier) = number_literal) ;) (expression_statement "c->remoteid = uVar2;" (assignment_expression "c->remoteid = uVar2" (field_expression "c->remoteid" identifier -> field_identifier) = identifier) ;) (expression_statement "ssh_channel_init(c);" (call_expression "ssh_channel_init(c)" identifier (argument_list "(c)" ( identifier ))) ;) (expression_statement "(c->v).v2.remwindow = uVar3;" (assignment_expression "(c->v).v2.remwindow = uVar3" (field_expression "(c->v).v2.remwindow" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(c->v).v2.remmaxpkt = uVar4;" (assignment_expression "(c->v).v2.remmaxpkt = uVar4" (field_expression "(c->v).v2.remmaxpkt" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) }) (else_clause "else {\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }" else (compound_statement "{\n          logevent(ssh->frontend,"Opened X11 forward channel");\n          safefree(pcVar10);\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          ssh_channel_init(c);\n          (c->v).v2.remlocwin = 0x80;\n          (c->v).v2.locmaxwin = 0x80;\n          (c->v).v2.remwindow = uVar3;\n          (c->v).v2.locwindow = 0x80;\n          (c->v).v2.remmaxpkt = uVar4;\n        }" { (expression_statement "logevent(ssh->frontend,"Opened X11 forward channel");" (call_expression "logevent(ssh->frontend,"Opened X11 forward channel")" identifier (argument_list "(ssh->frontend,"Opened X11 forward channel")" ( (field_expression "ssh->frontend" identifier -> field_identifier) , (string_literal ""Opened X11 forward channel"" " string_content ") ))) ;) (expression_statement "safefree(pcVar10);" (call_expression "safefree(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "c->halfopen = 0;" (assignment_expression "c->halfopen = 0" (field_expression "c->halfopen" identifier -> field_identifier) = number_literal) ;) (expression_statement "c->remoteid = uVar2;" (assignment_expression "c->remoteid = uVar2" (field_expression "c->remoteid" identifier -> field_identifier) = identifier) ;) (expression_statement "ssh_channel_init(c);" (call_expression "ssh_channel_init(c)" identifier (argument_list "(c)" ( identifier ))) ;) (expression_statement "(c->v).v2.remlocwin = 0x80;" (assignment_expression "(c->v).v2.remlocwin = 0x80" (field_expression "(c->v).v2.remlocwin" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(c->v).v2.locmaxwin = 0x80;" (assignment_expression "(c->v).v2.locmaxwin = 0x80" (field_expression "(c->v).v2.locmaxwin" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(c->v).v2.remwindow = uVar3;" (assignment_expression "(c->v).v2.remwindow = uVar3" (field_expression "(c->v).v2.remwindow" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(c->v).v2.locwindow = 0x80;" (assignment_expression "(c->v).v2.locwindow = 0x80" (field_expression "(c->v).v2.locwindow" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(c->v).v2.remmaxpkt = uVar4;" (assignment_expression "(c->v).v2.remmaxpkt = uVar4" (field_expression "(c->v).v2.remmaxpkt" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) }))) (labeled_statement "LAB_00033c63:\n        pPVar6 = ssh2_pkt_init(0x5b);" statement_identifier : (expression_statement "pPVar6 = ssh2_pkt_init(0x5b);" (assignment_expression "pPVar6 = ssh2_pkt_init(0x5b)" identifier = (call_expression "ssh2_pkt_init(0x5b)" identifier (argument_list "(0x5b)" ( number_literal )))) ;)) (expression_statement "ssh_pkt_adduint32(pPVar6,c->remoteid);" (call_expression "ssh_pkt_adduint32(pPVar6,c->remoteid)" identifier (argument_list "(pPVar6,c->remoteid)" ( identifier , (field_expression "c->remoteid" identifier -> field_identifier) ))) ;) (expression_statement "ssh_pkt_adduint32(pPVar6,c->localid);" (call_expression "ssh_pkt_adduint32(pPVar6,c->localid)" identifier (argument_list "(pPVar6,c->localid)" ( identifier , (field_expression "c->localid" identifier -> field_identifier) ))) ;) (expression_statement "ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow);" (call_expression "ssh_pkt_adduint32(pPVar6,(c->v).v2.locwindow)" identifier (argument_list "(pPVar6,(c->v).v2.locwindow)" ( identifier , (field_expression "(c->v).v2.locwindow" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) (expression_statement "x[0] = '\0';" (assignment_expression "x[0] = '\0'" (subscript_expression "x[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "x[1] = '\0';" (assignment_expression "x[1] = '\0'" (subscript_expression "x[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "x[2] = '@';" (assignment_expression "x[2] = '@'" (subscript_expression "x[2]" identifier [ number_literal ]) = (char_literal "'@'" ' character ')) ;) (expression_statement "x[3] = '\0';" (assignment_expression "x[3] = '\0'" (subscript_expression "x[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "ssh_pkt_adddata(pPVar6,x,4);" (call_expression "ssh_pkt_adddata(pPVar6,x,4)" identifier (argument_list "(pPVar6,x,4)" ( identifier , identifier , number_literal ))) ;) (expression_statement "ssh2_pkt_send(ssh,pPVar6);" (call_expression "ssh2_pkt_send(ssh,pPVar6)" identifier (argument_list "(ssh,pPVar6)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_00033d5c;" goto statement_identifier ;) })) (expression_statement "safefree(pcVar10);" (call_expression "safefree(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "local_74 = "X11 forwarding is not enabled";" (assignment_expression "local_74 = "X11 forwarding is not enabled"" identifier = (string_literal ""X11 forwarding is not enabled"" " string_content ")) ;) }) (else_clause "else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" else (compound_statement "{\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" { (labeled_statement "LAB_00033d90:\n      local_74 = "Unsupported channel type requested";" statement_identifier : (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" identifier = (string_literal ""Unsupported channel type requested"" " string_content ")) ;)) }))) }) (else_clause "else if (typelen == 0xf) {\n    iVar5 = memcmp(type,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }" else (if_statement "if (typelen == 0xf) {\n    iVar5 = memcmp(type,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }" if (parenthesized_expression "(typelen == 0xf)" ( (binary_expression "typelen == 0xf" identifier == number_literal) )) (compound_statement "{\n    iVar5 = memcmp(type,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }\n  }" { (expression_statement "iVar5 = memcmp(type,"forwarded-tcpip",0xf);" (assignment_expression "iVar5 = memcmp(type,"forwarded-tcpip",0xf)" identifier = (call_expression "memcmp(type,"forwarded-tcpip",0xf)" identifier (argument_list "(type,"forwarded-tcpip",0xf)" ( identifier , (string_literal ""forwarded-tcpip"" " string_content ") , number_literal )))) ;) (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" identifier = (string_literal ""Unsupported channel type requested"" " string_content ")) ;) (if_statement "if (iVar5 == 0) {\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      ssh_pkt_getstring(pktin,&shost,&shostlen);\n      if (shost == (char *)0x0) {\n        shost = "";\n      }\n      pf.shost = dupprintf("%.*s",shostlen,shost);\n      pf.sport = ssh_pkt_getuint32(pktin);\n      ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);\n      uVar7 = ssh_pkt_getuint32(pktin);\n      pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);\n      if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }\n      logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);\n      safefree(pf.shost);\n      if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }\n    }" { (expression_statement "ssh_pkt_getstring(pktin,&shost,&shostlen);" (call_expression "ssh_pkt_getstring(pktin,&shost,&shostlen)" identifier (argument_list "(pktin,&shost,&shostlen)" ( identifier , (pointer_expression "&shost" & identifier) , (pointer_expression "&shostlen" & identifier) ))) ;) (if_statement "if (shost == (char *)0x0) {\n        shost = "";\n      }" if (parenthesized_expression "(shost == (char *)0x0)" ( (binary_expression "shost == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        shost = "";\n      }" { (expression_statement "shost = "";" (assignment_expression "shost = """ identifier = (string_literal """" " ")) ;) })) (expression_statement "pf.shost = dupprintf("%.*s",shostlen,shost);" (assignment_expression "pf.shost = dupprintf("%.*s",shostlen,shost)" (field_expression "pf.shost" identifier . field_identifier) = (call_expression "dupprintf("%.*s",shostlen,shost)" identifier (argument_list "("%.*s",shostlen,shost)" ( (string_literal ""%.*s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "pf.sport = ssh_pkt_getuint32(pktin);" (assignment_expression "pf.sport = ssh_pkt_getuint32(pktin)" (field_expression "pf.sport" identifier . field_identifier) = (call_expression "ssh_pkt_getuint32(pktin)" identifier (argument_list "(pktin)" ( identifier )))) ;) (expression_statement "ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen);" (call_expression "ssh_pkt_getstring(pktin,&peeraddr,&peeraddrlen)" identifier (argument_list "(pktin,&peeraddr,&peeraddrlen)" ( identifier , (pointer_expression "&peeraddr" & identifier) , (pointer_expression "&peeraddrlen" & identifier) ))) ;) (expression_statement "uVar7 = ssh_pkt_getuint32(pktin);" (assignment_expression "uVar7 = ssh_pkt_getuint32(pktin)" identifier = (call_expression "ssh_pkt_getuint32(pktin)" identifier (argument_list "(pktin)" ( identifier )))) ;) (expression_statement "pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0);" (assignment_expression "pvVar8 = find234(ssh->rportfwds,&pf,(cmpfn234)0x0)" identifier = (call_expression "find234(ssh->rportfwds,&pf,(cmpfn234)0x0)" identifier (argument_list "(ssh->rportfwds,&pf,(cmpfn234)0x0)" ( (field_expression "ssh->rportfwds" identifier -> field_identifier) , (pointer_expression "&pf" & identifier) , (cast_expression "(cmpfn234)0x0" ( (type_descriptor "cmpfn234" type_identifier) ) number_literal) )))) ;) (if_statement "if (peeraddr == (char *)0x0) {\n        peeraddr = "";\n      }" if (parenthesized_expression "(peeraddr == (char *)0x0)" ( (binary_expression "peeraddr == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        peeraddr = "";\n      }" { (expression_statement "peeraddr = "";" (assignment_expression "peeraddr = """ identifier = (string_literal """" " ")) ;) })) (expression_statement "logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7);" (call_expression "logeventf(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7)" identifier (argument_list "(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.shost,pf.sport,\n                peeraddrlen,peeraddr,uVar7)" ( identifier , (string_literal ""Received remote port %s:%d open request from %.*s:%d"" " string_content ") , (field_expression "pf.shost" identifier . field_identifier) , (field_expression "pf.sport" identifier . field_identifier) , identifier , identifier , identifier ))) ;) (expression_statement "safefree(pf.shost);" (call_expression "safefree(pf.shost)" identifier (argument_list "(pf.shost)" ( (field_expression "pf.shost" identifier . field_identifier) ))) ;) (if_statement "if (pvVar8 == (void *)0x0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_74 = "Remote port is not recognised";\n      }" { (expression_statement "local_74 = "Remote port is not recognised";" (assignment_expression "local_74 = "Remote port is not recognised"" identifier = (string_literal ""Remote port is not recognised"" " string_content ")) ;) }) (else_clause "else {\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }" else (compound_statement "{\n        if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }\n        pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));\n        uVar11 = *(undefined4 *)((int)pvVar8 + 4);\n        logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);\n        if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }\n        logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);\n        safefree(pcVar10);\n        local_74 = "Port open failed";\n      }" { (if_statement "if (*(void **)((int)pvVar8 + 0x14) != (void *)0x0) {\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }" if (parenthesized_expression "(*(void **)((int)pvVar8 + 0x14) != (void *)0x0)" ( (binary_expression "*(void **)((int)pvVar8 + 0x14) != (void *)0x0" (pointer_expression "*(void **)((int)pvVar8 + 0x14)" * (cast_expression "(void **)((int)pvVar8 + 0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar8 + 0x14)" ( (binary_expression "(int)pvVar8 + 0x14" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);\n          safefree(c);\n          goto LAB_00033d5c;\n        }" { (expression_statement "share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length);" (call_expression "share_got_pkt_from_server\n                    (*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length)" identifier (argument_list "(*(void **)((int)pvVar8 + 0x14),pktin->type,pktin->body,pktin->length)" ( (pointer_expression "*(void **)((int)pvVar8 + 0x14)" * (cast_expression "(void **)((int)pvVar8 + 0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar8 + 0x14)" ( (binary_expression "(int)pvVar8 + 0x14" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (field_expression "pktin->type" identifier -> field_identifier) , (field_expression "pktin->body" identifier -> field_identifier) , (field_expression "pktin->length" identifier -> field_identifier) ))) ;) (expression_statement "safefree(c);" (call_expression "safefree(c)" identifier (argument_list "(c)" ( identifier ))) ;) (goto_statement "goto LAB_00033d5c;" goto statement_identifier ;) })) (expression_statement "pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24));" (assignment_expression "pcVar10 = pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24))" identifier = (call_expression "pfd_connect(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24))" identifier (argument_list "(&(c->u).pfd.pf,*(char **)((int)pvVar8 + 0xc),*(int *)((int)pvVar8 + 4)\n                              ,c,ssh->conf,*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24))" ( (pointer_expression "&(c->u).pfd.pf" & (field_expression "(c->u).pfd.pf" (field_expression "(c->u).pfd" (parenthesized_expression "(c->u)" ( (field_expression "c->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (pointer_expression "*(char **)((int)pvVar8 + 0xc)" * (cast_expression "(char **)((int)pvVar8 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar8 + 0xc)" ( (binary_expression "(int)pvVar8 + 0xc" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(int *)((int)pvVar8 + 4)" * (cast_expression "(int *)((int)pvVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 + 4)" ( (binary_expression "(int)pvVar8 + 4" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , (field_expression "ssh->conf" identifier -> field_identifier) , (pointer_expression "*(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24)" * (cast_expression "(int *)(*(int *)((int)pvVar8 + 0x18) + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)pvVar8 + 0x18) + 0x24)" ( (binary_expression "*(int *)((int)pvVar8 + 0x18) + 0x24" (pointer_expression "*(int *)((int)pvVar8 + 0x18)" * (cast_expression "(int *)((int)pvVar8 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 + 0x18)" ( (binary_expression "(int)pvVar8 + 0x18" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "uVar11 = *(undefined4 *)((int)pvVar8 + 4);" (assignment_expression "uVar11 = *(undefined4 *)((int)pvVar8 + 4)" identifier = (pointer_expression "*(undefined4 *)((int)pvVar8 + 4)" * (cast_expression "(undefined4 *)((int)pvVar8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 + 4)" ( (binary_expression "(int)pvVar8 + 4" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11);" (call_expression "logeventf(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11)" identifier (argument_list "(ssh,"Attempting to forward remote port to %s:%d",\n                  *(undefined4 *)((int)pvVar8 + 0xc),uVar11)" ( identifier , (string_literal ""Attempting to forward remote port to %s:%d"" " string_content ") , (pointer_expression "*(undefined4 *)((int)pvVar8 + 0xc)" * (cast_expression "(undefined4 *)((int)pvVar8 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar8 + 0xc)" ( (binary_expression "(int)pvVar8 + 0xc" (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;) (if_statement "if (pcVar10 == (char *)0x0) {\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          logevent(ssh->frontend,"Forwarded port opened successfully");\n          c->type = 3;\n          c->halfopen = 0;\n          c->remoteid = uVar2;\n          goto LAB_00033c4e;\n        }" { (expression_statement "logevent(ssh->frontend,"Forwarded port opened successfully");" (call_expression "logevent(ssh->frontend,"Forwarded port opened successfully")" identifier (argument_list "(ssh->frontend,"Forwarded port opened successfully")" ( (field_expression "ssh->frontend" identifier -> field_identifier) , (string_literal ""Forwarded port opened successfully"" " string_content ") ))) ;) (expression_statement "c->type = 3;" (assignment_expression "c->type = 3" (field_expression "c->type" identifier -> field_identifier) = number_literal) ;) (expression_statement "c->halfopen = 0;" (assignment_expression "c->halfopen = 0" (field_expression "c->halfopen" identifier -> field_identifier) = number_literal) ;) (expression_statement "c->remoteid = uVar2;" (assignment_expression "c->remoteid = uVar2" (field_expression "c->remoteid" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_00033c4e;" goto statement_identifier ;) })) (expression_statement "logeventf(ssh,"Port open failed: %s",pcVar10,uVar11);" (call_expression "logeventf(ssh,"Port open failed: %s",pcVar10,uVar11)" identifier (argument_list "(ssh,"Port open failed: %s",pcVar10,uVar11)" ( identifier , (string_literal ""Port open failed: %s"" " string_content ") , identifier , identifier ))) ;) (expression_statement "safefree(pcVar10);" (call_expression "safefree(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "local_74 = "Port open failed";" (assignment_expression "local_74 = "Port open failed"" identifier = (string_literal ""Port open failed"" " string_content ")) ;) }))) })) }) (else_clause "else {\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }" else (compound_statement "{\n    if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }\n  }" { (if_statement "if ((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;" if (parenthesized_expression "((typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0))" ( (binary_expression "(typelen != 0x16) || (iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0)" (parenthesized_expression "(typelen != 0x16)" ( (binary_expression "typelen != 0x16" identifier != number_literal) )) || (parenthesized_expression "(iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0)" ( (comma_expression "iVar5 = memcmp(type,"auth-agent@openssh.com",0x16), iVar5 != 0" (assignment_expression "iVar5 = memcmp(type,"auth-agent@openssh.com",0x16)" identifier = (call_expression "memcmp(type,"auth-agent@openssh.com",0x16)" identifier (argument_list "(type,"auth-agent@openssh.com",0x16)" ( identifier , (string_literal ""auth-agent@openssh.com"" " string_content ") , number_literal )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00033d90;" goto statement_identifier ;)) (expression_statement "local_74 = "Agent forwarding is not enabled";" (assignment_expression "local_74 = "Agent forwarding is not enabled"" identifier = (string_literal ""Agent forwarding is not enabled"" " string_content ")) ;) (if_statement "if (ssh->agentfwd_enabled != 0) {\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }" if (parenthesized_expression "(ssh->agentfwd_enabled != 0)" ( (binary_expression "ssh->agentfwd_enabled != 0" (field_expression "ssh->agentfwd_enabled" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      c->type = 2;\n      bufchain_init(&(c->u).a.inbuffer);\n      (c->u).a.pending = (agent_pending_query *)0x0;\n      c->halfopen = 0;\n      c->remoteid = uVar2;\nLAB_00033c4e:\n      ssh_channel_init(c);\n      (c->v).v2.remwindow = uVar3;\n      (c->v).v2.remmaxpkt = uVar4;\n      goto LAB_00033c63;\n    }" { (expression_statement "c->type = 2;" (assignment_expression "c->type = 2" (field_expression "c->type" identifier -> field_identifier) = number_literal) ;) (expression_statement "bufchain_init(&(c->u).a.inbuffer);" (call_expression "bufchain_init(&(c->u).a.inbuffer)" identifier (argument_list "(&(c->u).a.inbuffer)" ( (pointer_expression "&(c->u).a.inbuffer" & (field_expression "(c->u).a.inbuffer" (field_expression "(c->u).a" (parenthesized_expression "(c->u)" ( (field_expression "c->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ))) ;) (expression_statement "(c->u).a.pending = (agent_pending_query *)0x0;" (assignment_expression "(c->u).a.pending = (agent_pending_query *)0x0" (field_expression "(c->u).a.pending" (field_expression "(c->u).a" (parenthesized_expression "(c->u)" ( (field_expression "c->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(agent_pending_query *)0x0" ( (type_descriptor "agent_pending_query *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "c->halfopen = 0;" (assignment_expression "c->halfopen = 0" (field_expression "c->halfopen" identifier -> field_identifier) = number_literal) ;) (expression_statement "c->remoteid = uVar2;" (assignment_expression "c->remoteid = uVar2" (field_expression "c->remoteid" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_00033c4e:\n      ssh_channel_init(c);" statement_identifier : (expression_statement "ssh_channel_init(c);" (call_expression "ssh_channel_init(c)" identifier (argument_list "(c)" ( identifier ))) ;)) (expression_statement "(c->v).v2.remwindow = uVar3;" (assignment_expression "(c->v).v2.remwindow = uVar3" (field_expression "(c->v).v2.remwindow" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(c->v).v2.remmaxpkt = uVar4;" (assignment_expression "(c->v).v2.remmaxpkt = uVar4" (field_expression "(c->v).v2.remmaxpkt" (field_expression "(c->v).v2" (parenthesized_expression "(c->v)" ( (field_expression "c->v" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (goto_statement "goto LAB_00033c63;" goto statement_identifier ;) })) }))))) (expression_statement "c->halfopen = 0;" (assignment_expression "c->halfopen = 0" (field_expression "c->halfopen" identifier -> field_identifier) = number_literal) ;) (expression_statement "c->remoteid = uVar2;" (assignment_expression "c->remoteid = uVar2" (field_expression "c->remoteid" identifier -> field_identifier) = identifier) ;) (expression_statement "pPVar6 = ssh2_pkt_init(0x5c);" (assignment_expression "pPVar6 = ssh2_pkt_init(0x5c)" identifier = (call_expression "ssh2_pkt_init(0x5c)" identifier (argument_list "(0x5c)" ( number_literal )))) ;) (expression_statement "ssh_pkt_adduint32(pPVar6,c->remoteid);" (call_expression "ssh_pkt_adduint32(pPVar6,c->remoteid)" identifier (argument_list "(pPVar6,c->remoteid)" ( identifier , (field_expression "c->remoteid" identifier -> field_identifier) ))) ;) (expression_statement "x[0] = '\0';" (assignment_expression "x[0] = '\0'" (subscript_expression "x[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "x[1] = '\0';" (assignment_expression "x[1] = '\0'" (subscript_expression "x[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "x[2] = '\0';" (assignment_expression "x[2] = '\0'" (subscript_expression "x[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "x[3] = '\x02';" (assignment_expression "x[3] = '\x02'" (subscript_expression "x[3]" identifier [ number_literal ]) = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "ssh_pkt_adddata(pPVar6,x,4);" (call_expression "ssh_pkt_adddata(pPVar6,x,4)" identifier (argument_list "(pPVar6,x,4)" ( identifier , identifier , number_literal ))) ;) (expression_statement "ssh_pkt_addstring(pPVar6,local_74);" (call_expression "ssh_pkt_addstring(pPVar6,local_74)" identifier (argument_list "(pPVar6,local_74)" ( identifier , identifier ))) ;) (expression_statement "ssh_pkt_addstring(pPVar6,"en");" (call_expression "ssh_pkt_addstring(pPVar6,"en")" identifier (argument_list "(pPVar6,"en")" ( identifier , (string_literal ""en"" " string_content ") ))) ;) (expression_statement "ssh2_pkt_send(ssh,pPVar6);" (call_expression "ssh2_pkt_send(ssh,pPVar6)" identifier (argument_list "(ssh,pPVar6)" ( identifier , identifier ))) ;) (expression_statement "logeventf(ssh,"Rejected channel open: %s",local_74);" (call_expression "logeventf(ssh,"Rejected channel open: %s",local_74)" identifier (argument_list "(ssh,"Rejected channel open: %s",local_74)" ( identifier , (string_literal ""Rejected channel open: %s"" " string_content ") , identifier ))) ;) (expression_statement "safefree(c);" (call_expression "safefree(c)" identifier (argument_list "(c)" ( identifier ))) ;) (labeled_statement "LAB_00033d5c:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00033b60(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00033b60(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00033b60(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "short *local_58;" (sized_type_specifier "short" short) (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x33b69;" (assignment_expression "uStack_14 = 0x33b69" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1 = (int *)FUN_0001c990(1,0x5c);" (assignment_expression "piVar1 = (int *)FUN_0001c990(1,0x5c)" identifier = (cast_expression "(int *)FUN_0001c990(1,0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001c990(1,0x5c)" identifier (argument_list "(1,0x5c)" ( number_literal , number_literal ))))) ;) (expression_statement "*piVar1 = param_1;" (assignment_expression "*piVar1 = param_1" (pointer_expression "*piVar1" * identifier) = identifier) ;) (expression_statement "iVar2 = FUN_00026ae0();" (assignment_expression "iVar2 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = FUN_00026ae0();" (assignment_expression "iVar3 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = FUN_00026ae0();" (assignment_expression "iVar4 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" if (parenthesized_expression "(local_54 == 3)" ( (binary_expression "local_54 == 3" identifier == number_literal) )) (compound_statement "{\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }" { (if_statement "if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" if (parenthesized_expression "((*local_58 == 0x3178) && ((char)local_58[1] == '1'))" ( (binary_expression "(*local_58 == 0x3178) && ((char)local_58[1] == '1')" (parenthesized_expression "(*local_58 == 0x3178)" ( (binary_expression "*local_58 == 0x3178" (pointer_expression "*local_58" * identifier) == number_literal) )) && (parenthesized_expression "((char)local_58[1] == '1')" ( (binary_expression "(char)local_58[1] == '1'" (cast_expression "(char)local_58[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "local_58[1]" identifier [ number_literal ])) == (char_literal "'1'" ' character ')) ))) )) (compound_statement "{\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }" { (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }" if (parenthesized_expression "(local_50 == (undefined *)0x0)" ( (binary_expression "local_50 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_50 = &DAT_0006f2ee;\n      }" { (expression_statement "local_50 = &DAT_0006f2ee;" (assignment_expression "local_50 = &DAT_0006f2ee" identifier = (pointer_expression "&DAT_0006f2ee" & identifier)) ;) })) (expression_statement "uVar6 = FUN_0001d000("%.*s",local_4c,local_50);" (assignment_expression "uVar6 = FUN_0001d000("%.*s",local_4c,local_50)" identifier = (call_expression "FUN_0001d000("%.*s",local_4c,local_50)" identifier (argument_list "("%.*s",local_4c,local_50)" ( (string_literal ""%.*s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_00026ae0();" (assignment_expression "uVar7 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);" (call_expression "FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7)" identifier (argument_list "(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7)" ( identifier , (string_literal ""Received X11 connect request from %s:%d"" " string_content ") , identifier , identifier ))) ;) (if_statement "if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }" if (parenthesized_expression "((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0))" ( (binary_expression "(*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)" (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(param_1 + 0xf4) != 0)" ( (binary_expression "*(int *)(param_1 + 0xf4) != 0" (pointer_expression "*(int *)(param_1 + 0xf4)" * (cast_expression "(int *)(param_1 + 0xf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf4)" ( (binary_expression "param_1 + 0xf4" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }" { (expression_statement "iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);" (assignment_expression "iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" identifier = (call_expression "FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x194)" * (cast_expression "(undefined4 *)(param_1 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x194)" ( (binary_expression "param_1 + 0x194" identifier + number_literal) )))) , identifier , identifier , identifier )))) ;) (expression_statement "piVar1[3] = 1;" (assignment_expression "piVar1[3] = 1" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0x13] = iVar5;" (assignment_expression "piVar1[0x13] = iVar5" (subscript_expression "piVar1[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0xf4);" (assignment_expression "iVar5 = *(int *)(param_1 + 0xf4)" identifier = (pointer_expression "*(int *)(param_1 + 0xf4)" * (cast_expression "(int *)(param_1 + 0xf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf4)" ( (binary_expression "param_1 + 0xf4" identifier + number_literal) ))))) ;) (expression_statement "piVar1[0x14] = 1;" (assignment_expression "piVar1[0x14] = 1" (subscript_expression "piVar1[0x14]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }" { (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) , (string_literal ""Opened X11 forward channel"" " string_content ") , number_literal , number_literal ))) ;) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" else (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" { (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel")" identifier (argument_list "(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel")" ( (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) , (string_literal ""Opened X11 forward channel"" " string_content ") ))) ;) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar1[0xf] = 0x80;" (assignment_expression "piVar1[0xf] = 0x80" (subscript_expression "piVar1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0xe] = 0x80;" (assignment_expression "piVar1[0xe] = 0x80" (subscript_expression "piVar1[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar1[0xd] = 0x80;" (assignment_expression "piVar1[0xd] = 0x80" (subscript_expression "piVar1[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" identifier [ number_literal ]) = identifier) ;) }))) (labeled_statement "LAB_00033c63:\n        FUN_00029d20();" statement_identifier : (expression_statement "FUN_00029d20();" (call_expression "FUN_00029d20()" identifier (argument_list "()" ( ))) ;)) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = 0x400000;" (assignment_expression "local_24 = 0x400000" identifier = number_literal) ;) (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00033b40();" (call_expression "FUN_00033b40()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_00033d5c;" goto statement_identifier ;) })) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "local_74 = "X11 forwarding is not enabled";" (assignment_expression "local_74 = "X11 forwarding is not enabled"" identifier = (string_literal ""X11 forwarding is not enabled"" " string_content ")) ;) }) (else_clause "else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" else (compound_statement "{\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" { (labeled_statement "LAB_00033d90:\n      local_74 = "Unsupported channel type requested";" statement_identifier : (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" identifier = (string_literal ""Unsupported channel type requested"" " string_content ")) ;)) }))) }) (else_clause "else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" else (if_statement "if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" if (parenthesized_expression "(local_54 == 0xf)" ( (binary_expression "local_54 == 0xf" identifier == number_literal) )) (compound_statement "{\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }" { (expression_statement "iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);" (assignment_expression "iVar5 = memcmp(local_58,"forwarded-tcpip",0xf)" identifier = (call_expression "memcmp(local_58,"forwarded-tcpip",0xf)" identifier (argument_list "(local_58,"forwarded-tcpip",0xf)" ( identifier , (string_literal ""forwarded-tcpip"" " string_content ") , number_literal )))) ;) (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" identifier = (string_literal ""Unsupported channel type requested"" " string_content ")) ;) (if_statement "if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }" { (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }" if (parenthesized_expression "(local_48 == (undefined *)0x0)" ( (binary_expression "local_48 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_48 = &DAT_0006f2ee;\n      }" { (expression_statement "local_48 = &DAT_0006f2ee;" (assignment_expression "local_48 = &DAT_0006f2ee" identifier = (pointer_expression "&DAT_0006f2ee" & identifier)) ;) })) (expression_statement "local_38 = FUN_0001d000("%.*s",local_44,local_48);" (assignment_expression "local_38 = FUN_0001d000("%.*s",local_44,local_48)" identifier = (call_expression "FUN_0001d000("%.*s",local_44,local_48)" identifier (argument_list "("%.*s",local_44,local_48)" ( (string_literal ""%.*s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "local_40[0] = FUN_00026ae0();" (assignment_expression "local_40[0] = FUN_00026ae0()" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar6 = FUN_00026ae0();" (assignment_expression "uVar6 = FUN_00026ae0()" identifier = (call_expression "FUN_00026ae0()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);" (assignment_expression "iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0)" identifier = (call_expression "FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x13c),local_40,0)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" * (cast_expression "(undefined4 *)(param_1 + 0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) )))) , identifier , number_literal )))) ;) (if_statement "if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }" if (parenthesized_expression "(local_50 == (undefined *)0x0)" ( (binary_expression "local_50 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_50 = &DAT_0006f2ee;\n      }" { (expression_statement "local_50 = &DAT_0006f2ee;" (assignment_expression "local_50 = &DAT_0006f2ee" identifier = (pointer_expression "&DAT_0006f2ee" & identifier)) ;) })) (expression_statement "FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);" (call_expression "FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6)" identifier (argument_list "(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6)" ( identifier , (string_literal ""Received remote port %s:%d open request from %.*s:%d"" " string_content ") , identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0001d220(local_38);" (call_expression "FUN_0001d220(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) (if_statement "if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        local_74 = "Remote port is not recognised";\n      }" { (expression_statement "local_74 = "Remote port is not recognised";" (assignment_expression "local_74 = "Remote port is not recognised"" identifier = (string_literal ""Remote port is not recognised"" " string_content ")) ;) }) (else_clause "else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" else (compound_statement "{\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" { (if_statement "if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }" if (parenthesized_expression "(*(int *)(iVar5 + 0x14) != 0)" ( (binary_expression "*(int *)(iVar5 + 0x14) != 0" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }" { (expression_statement "FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);" (call_expression "FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2)" identifier (argument_list "(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2)" ( (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) , (subscript_expression "param_2[2]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "FUN_0001d220(piVar1);" (call_expression "FUN_0001d220(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) (goto_statement "goto LAB_00033d5c;" goto statement_identifier ;) })) (expression_statement "iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));" (assignment_expression "iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" identifier = (call_expression "FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" identifier (argument_list "(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" ( (binary_expression "piVar1 + 0x13" identifier + number_literal) , (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x248)" * (cast_expression "(undefined4 *)(param_1 + 0x248)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24)" * (cast_expression "(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0x18) + 0x24)" ( (binary_expression "*(int *)(iVar5 + 0x18) + 0x24" (pointer_expression "*(int *)(iVar5 + 0x18)" * (cast_expression "(int *)(iVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);" (call_expression "FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6)" identifier (argument_list "(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6)" ( identifier , (string_literal ""Attempting to forward remote port to %s:%d"" " string_content ") , (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) , identifier ))) ;) (if_statement "if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }" { (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully")" identifier (argument_list "(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully")" ( (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) , (string_literal ""Forwarded port opened successfully"" " string_content ") ))) ;) (expression_statement "piVar1[3] = 3;" (assignment_expression "piVar1[3] = 3" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00033c4e;" goto statement_identifier ;) })) (expression_statement "FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);" (call_expression "FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6)" identifier (argument_list "(param_1,"Port open failed: %s",iVar8,uVar6)" ( identifier , (string_literal ""Port open failed: %s"" " string_content ") , identifier , identifier ))) ;) (expression_statement "FUN_0001d220(iVar8);" (call_expression "FUN_0001d220(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "local_74 = "Port open failed";" (assignment_expression "local_74 = "Port open failed"" identifier = (string_literal ""Port open failed"" " string_content ")) ;) }))) })) }) (else_clause "else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" else (compound_statement "{\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" { (if_statement "if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;" if (parenthesized_expression "((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))" ( (binary_expression "(local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0)" (parenthesized_expression "(local_54 != 0x16)" ( (binary_expression "local_54 != 0x16" identifier != number_literal) )) || (parenthesized_expression "(iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0)" ( (comma_expression "iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0" (assignment_expression "iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16)" identifier = (call_expression "memcmp(local_58,"auth-agent@openssh.com",0x16)" identifier (argument_list "(local_58,"auth-agent@openssh.com",0x16)" ( identifier , (string_literal ""auth-agent@openssh.com"" " string_content ") , number_literal )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00033d90;" goto statement_identifier ;)) (expression_statement "local_74 = "Agent forwarding is not enabled";" (assignment_expression "local_74 = "Agent forwarding is not enabled"" identifier = (string_literal ""Agent forwarding is not enabled"" " string_content ")) ;) (if_statement "if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x48) != 0)" ( (binary_expression "*(int *)(param_1 + 0x48) != 0" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }" { (expression_statement "piVar1[3] = 2;" (assignment_expression "piVar1[3] = 2" (subscript_expression "piVar1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0001c780(piVar1 + 0x13);" (call_expression "FUN_0001c780(piVar1 + 0x13)" identifier (argument_list "(piVar1 + 0x13)" ( (binary_expression "piVar1 + 0x13" identifier + number_literal) ))) ;) (expression_statement "piVar1[0x16] = 0;" (assignment_expression "piVar1[0x16] = 0" (subscript_expression "piVar1[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_00033c4e:\n      FUN_0002c3f0();" statement_identifier : (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" identifier (argument_list "()" ( ))) ;)) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00033c63;" goto statement_identifier ;) })) }))))) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00029d20();" (call_expression "FUN_00029d20()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_24 = 0x2000000;" (assignment_expression "local_24 = 0x2000000" identifier = number_literal) ;) (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e50();" (call_expression "FUN_00029e50()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00029e50();" (call_expression "FUN_00029e50()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00033b40();" (call_expression "FUN_00033b40()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00026c00(param_1,"Rejected channel open: %s",local_74);" (call_expression "FUN_00026c00(param_1,"Rejected channel open: %s",local_74)" identifier (argument_list "(param_1,"Rejected channel open: %s",local_74)" ( identifier , (string_literal ""Rejected channel open: %s"" " string_content ") , identifier ))) ;) (expression_statement "FUN_0001d220(piVar1);" (call_expression "FUN_0001d220(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) (labeled_statement "LAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0006dad0();\n  }" { (expression_statement "FUN_0006dad0();" (call_expression "FUN_0006dad0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (call_expression IDENT (argument_list ( ))) ;) (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) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (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 ]) = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;)) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , 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 { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return ;) })))
(function_definition "void FUN_00033b60(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00033b60(int param_1,undefined4 *param_2)" (identifier "FUN_00033b60") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (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"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  char *local_74;\n  short *local_58;\n  int local_54;\n  undefined *local_50;\n  undefined4 local_4c;\n  undefined *local_48;\n  undefined4 local_44;\n  undefined4 local_40 [2];\n  undefined4 local_38;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x33b69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000273d0();\n  piVar1 = (int *)FUN_0001c990(1,0x5c);\n  *piVar1 = param_1;\n  iVar2 = FUN_00026ae0();\n  iVar3 = FUN_00026ae0();\n  iVar4 = FUN_00026ae0();\n  if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }\n  piVar1[4] = 0;\n  piVar1[1] = iVar2;\n  FUN_00029d20();\n  FUN_00029e10();\n  local_24 = 0x2000000;\n  FUN_00029c40();\n  FUN_00029e50();\n  FUN_00029e50();\n  FUN_00033b40();\n  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);\n  FUN_0001d220(piVar1);\nLAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "char *local_74;" (primitive_type "char") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "short *local_58;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "undefined *local_50;" (type_identifier "undefined") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined *local_48;" (type_identifier "undefined") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40 [2];" (type_identifier "undefined4") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x33b69;" (assignment_expression "uStack_14 = 0x33b69" (identifier "uStack_14") (= "=") (number_literal "0x33b69")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" (identifier "FUN_000273d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar1 = (int *)FUN_0001c990(1,0x5c);" (assignment_expression "piVar1 = (int *)FUN_0001c990(1,0x5c)" (identifier "piVar1") (= "=") (cast_expression "(int *)FUN_0001c990(1,0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001c990(1,0x5c)" (identifier "FUN_0001c990") (argument_list "(1,0x5c)" (( "(") (number_literal "1") (, ",") (number_literal "0x5c") () ")"))))) (; ";")) (expression_statement "*piVar1 = param_1;" (assignment_expression "*piVar1 = param_1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar2 = FUN_00026ae0();" (assignment_expression "iVar2 = FUN_00026ae0()" (identifier "iVar2") (= "=") (call_expression "FUN_00026ae0()" (identifier "FUN_00026ae0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar3 = FUN_00026ae0();" (assignment_expression "iVar3 = FUN_00026ae0()" (identifier "iVar3") (= "=") (call_expression "FUN_00026ae0()" (identifier "FUN_00026ae0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = FUN_00026ae0();" (assignment_expression "iVar4 = FUN_00026ae0()" (identifier "iVar4") (= "=") (call_expression "FUN_00026ae0()" (identifier "FUN_00026ae0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_54 == 3) {\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }\n  else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" (if "if") (parenthesized_expression "(local_54 == 3)" (( "(") (binary_expression "local_54 == 3" (identifier "local_54") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }\n  }" ({ "{") (if_statement "if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }\n    else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" (if "if") (parenthesized_expression "((*local_58 == 0x3178) && ((char)local_58[1] == '1'))" (( "(") (binary_expression "(*local_58 == 0x3178) && ((char)local_58[1] == '1')" (parenthesized_expression "(*local_58 == 0x3178)" (( "(") (binary_expression "*local_58 == 0x3178" (pointer_expression "*local_58" (* "*") (identifier "local_58")) (== "==") (number_literal "0x3178")) () ")")) (&& "&&") (parenthesized_expression "((char)local_58[1] == '1')" (( "(") (binary_expression "(char)local_58[1] == '1'" (cast_expression "(char)local_58[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]"))) (== "==") (char_literal "'1'" (' "'") (character "1") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      FUN_000273d0();\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);\n      uVar7 = FUN_00026ae0();\n      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);\n      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }\n      FUN_0001d220(uVar6);\n      local_74 = "X11 forwarding is not enabled";\n    }" ({ "{") (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" (identifier "FUN_000273d0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }" (if "if") (parenthesized_expression "(local_50 == (undefined *)0x0)" (( "(") (binary_expression "local_50 == (undefined *)0x0" (identifier "local_50") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_50 = &DAT_0006f2ee;\n      }" ({ "{") (expression_statement "local_50 = &DAT_0006f2ee;" (assignment_expression "local_50 = &DAT_0006f2ee" (identifier "local_50") (= "=") (pointer_expression "&DAT_0006f2ee" (& "&") (identifier "DAT_0006f2ee"))) (; ";")) (} "}"))) (expression_statement "uVar6 = FUN_0001d000("%.*s",local_4c,local_50);" (assignment_expression "uVar6 = FUN_0001d000("%.*s",local_4c,local_50)" (identifier "uVar6") (= "=") (call_expression "FUN_0001d000("%.*s",local_4c,local_50)" (identifier "FUN_0001d000") (argument_list "("%.*s",local_4c,local_50)" (( "(") (string_literal ""%.*s"" (" """) (string_content "%.*s") (" """)) (, ",") (identifier "local_4c") (, ",") (identifier "local_50") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_00026ae0();" (assignment_expression "uVar7 = FUN_00026ae0()" (identifier "uVar7") (= "=") (call_expression "FUN_00026ae0()" (identifier "FUN_00026ae0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);" (call_expression "FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7)" (identifier "FUN_00026c00") (argument_list "(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7)" (( "(") (identifier "param_1") (, ",") (string_literal ""Received X11 connect request from %s:%d"" (" """) (string_content "Received X11 connect request from %s:%d") (" """)) (, ",") (identifier "uVar6") (, ",") (identifier "uVar7") () ")"))) (; ";")) (if_statement "if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0))" (( "(") (binary_expression "(*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)" (parenthesized_expression "(*(int *)(param_1 + 0x4c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x4c) != 0" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_1 + 0xf4) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xf4) != 0" (pointer_expression "*(int *)(param_1 + 0xf4)" (* "*") (cast_expression "(int *)(param_1 + 0xf4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf4)" (( "(") (binary_expression "param_1 + 0xf4" (identifier "param_1") (+ "+") (number_literal "0xf4")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);\n        piVar1[3] = 1;\n        piVar1[0x13] = iVar5;\n        iVar5 = *(int *)(param_1 + 0xf4);\n        piVar1[0x14] = 1;\n        if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }\nLAB_00033c63:\n        FUN_00029d20();\n        FUN_00029e10();\n        FUN_00029e10();\n        FUN_00029e10();\n        local_24 = 0x400000;\n        FUN_00029c40();\n        FUN_00033b40();\n        goto LAB_00033d5c;\n      }" ({ "{") (expression_statement "iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);" (assignment_expression "iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" (identifier "iVar5") (= "=") (call_expression "FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" (identifier "FUN_0006cd00") (argument_list "(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x194)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x194)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x194)" (( "(") (binary_expression "param_1 + 0x194" (identifier "param_1") (+ "+") (number_literal "0x194")) () ")")))) (, ",") (identifier "piVar1") (, ",") (identifier "uVar6") (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "piVar1[3] = 1;" (assignment_expression "piVar1[3] = 1" (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar1[0x13] = iVar5;" (assignment_expression "piVar1[0x13] = iVar5" (subscript_expression "piVar1[0x13]" (identifier "piVar1") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0xf4);" (assignment_expression "iVar5 = *(int *)(param_1 + 0xf4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0xf4)" (* "*") (cast_expression "(int *)(param_1 + 0xf4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf4)" (( "(") (binary_expression "param_1 + 0xf4" (identifier "param_1") (+ "+") (number_literal "0xf4")) () ")"))))) (; ";")) (expression_statement "piVar1[0x14] = 1;" (assignment_expression "piVar1[0x14] = 1" (subscript_expression "piVar1[0x14]" (identifier "piVar1") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar5 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }\n        else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xb] = iVar3;\n          piVar1[0xc] = iVar4;\n        }" ({ "{") (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0)" (identifier "FUN_000628e0") (argument_list "(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (, ",") (string_literal ""Opened X11 forward channel"" (" """) (string_content "Opened X11 forward channel") (" """)) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" (identifier "FUN_0001d220") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" (identifier "FUN_0002c3f0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" (identifier "piVar1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" (identifier "piVar1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (} "}")) (else_clause "else {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" (else "else") (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");\n          FUN_0001d220(uVar6);\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          FUN_0002c3f0();\n          piVar1[0xf] = 0x80;\n          piVar1[0xe] = 0x80;\n          piVar1[0xb] = iVar3;\n          piVar1[0xd] = 0x80;\n          piVar1[0xc] = iVar4;\n        }" ({ "{") (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel")" (identifier "FUN_000628e0") (argument_list "(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel")" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (, ",") (string_literal ""Opened X11 forward channel"" (" """) (string_content "Opened X11 forward channel") (" """)) () ")"))) (; ";")) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" (identifier "FUN_0001d220") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" (identifier "FUN_0002c3f0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar1[0xf] = 0x80;" (assignment_expression "piVar1[0xf] = 0x80" (subscript_expression "piVar1[0xf]" (identifier "piVar1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0x80")) (; ";")) (expression_statement "piVar1[0xe] = 0x80;" (assignment_expression "piVar1[0xe] = 0x80" (subscript_expression "piVar1[0xe]" (identifier "piVar1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0x80")) (; ";")) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" (identifier "piVar1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar1[0xd] = 0x80;" (assignment_expression "piVar1[0xd] = 0x80" (subscript_expression "piVar1[0xd]" (identifier "piVar1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0x80")) (; ";")) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" (identifier "piVar1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (} "}")))) (labeled_statement "LAB_00033c63:\n        FUN_00029d20();" (statement_identifier "LAB_00033c63") (: ":") (expression_statement "FUN_00029d20();" (call_expression "FUN_00029d20()" (identifier "FUN_00029d20") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" (identifier "FUN_00029e10") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" (identifier "FUN_00029e10") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" (identifier "FUN_00029e10") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_24 = 0x400000;" (assignment_expression "local_24 = 0x400000" (identifier "local_24") (= "=") (number_literal "0x400000")) (; ";")) (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" (identifier "FUN_00029c40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00033b40();" (call_expression "FUN_00033b40()" (identifier "FUN_00033b40") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_00033d5c;" (goto "goto") (statement_identifier "LAB_00033d5c") (; ";")) (} "}"))) (expression_statement "FUN_0001d220(uVar6);" (call_expression "FUN_0001d220(uVar6)" (identifier "FUN_0001d220") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "local_74 = "X11 forwarding is not enabled";" (assignment_expression "local_74 = "X11 forwarding is not enabled"" (identifier "local_74") (= "=") (string_literal ""X11 forwarding is not enabled"" (" """) (string_content "X11 forwarding is not enabled") (" """))) (; ";")) (} "}")) (else_clause "else {\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" (else "else") (compound_statement "{\nLAB_00033d90:\n      local_74 = "Unsupported channel type requested";\n    }" ({ "{") (labeled_statement "LAB_00033d90:\n      local_74 = "Unsupported channel type requested";" (statement_identifier "LAB_00033d90") (: ":") (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" (identifier "local_74") (= "=") (string_literal ""Unsupported channel type requested"" (" """) (string_content "Unsupported channel type requested") (" """))) (; ";"))) (} "}")))) (} "}")) (else_clause "else if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" (else "else") (if_statement "if (local_54 == 0xf) {\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }\n  else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" (if "if") (parenthesized_expression "(local_54 == 0xf)" (( "(") (binary_expression "local_54 == 0xf" (identifier "local_54") (== "==") (number_literal "0xf")) () ")")) (compound_statement "{\n    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);\n    local_74 = "Unsupported channel type requested";\n    if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }\n  }" ({ "{") (expression_statement "iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);" (assignment_expression "iVar5 = memcmp(local_58,"forwarded-tcpip",0xf)" (identifier "iVar5") (= "=") (call_expression "memcmp(local_58,"forwarded-tcpip",0xf)" (identifier "memcmp") (argument_list "(local_58,"forwarded-tcpip",0xf)" (( "(") (identifier "local_58") (, ",") (string_literal ""forwarded-tcpip"" (" """) (string_content "forwarded-tcpip") (" """)) (, ",") (number_literal "0xf") () ")")))) (; ";")) (expression_statement "local_74 = "Unsupported channel type requested";" (assignment_expression "local_74 = "Unsupported channel type requested"" (identifier "local_74") (= "=") (string_literal ""Unsupported channel type requested"" (" """) (string_content "Unsupported channel type requested") (" """))) (; ";")) (if_statement "if (iVar5 == 0) {\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000273d0();\n      if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }\n      local_38 = FUN_0001d000("%.*s",local_44,local_48);\n      local_40[0] = FUN_00026ae0();\n      FUN_000273d0();\n      uVar6 = FUN_00026ae0();\n      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);\n      if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }\n      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);\n      FUN_0001d220(local_38);\n      if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }\n    }" ({ "{") (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" (identifier "FUN_000273d0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_48 == (undefined *)0x0) {\n        local_48 = &DAT_0006f2ee;\n      }" (if "if") (parenthesized_expression "(local_48 == (undefined *)0x0)" (( "(") (binary_expression "local_48 == (undefined *)0x0" (identifier "local_48") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_48 = &DAT_0006f2ee;\n      }" ({ "{") (expression_statement "local_48 = &DAT_0006f2ee;" (assignment_expression "local_48 = &DAT_0006f2ee" (identifier "local_48") (= "=") (pointer_expression "&DAT_0006f2ee" (& "&") (identifier "DAT_0006f2ee"))) (; ";")) (} "}"))) (expression_statement "local_38 = FUN_0001d000("%.*s",local_44,local_48);" (assignment_expression "local_38 = FUN_0001d000("%.*s",local_44,local_48)" (identifier "local_38") (= "=") (call_expression "FUN_0001d000("%.*s",local_44,local_48)" (identifier "FUN_0001d000") (argument_list "("%.*s",local_44,local_48)" (( "(") (string_literal ""%.*s"" (" """) (string_content "%.*s") (" """)) (, ",") (identifier "local_44") (, ",") (identifier "local_48") () ")")))) (; ";")) (expression_statement "local_40[0] = FUN_00026ae0();" (assignment_expression "local_40[0] = FUN_00026ae0()" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (call_expression "FUN_00026ae0()" (identifier "FUN_00026ae0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_000273d0();" (call_expression "FUN_000273d0()" (identifier "FUN_000273d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar6 = FUN_00026ae0();" (assignment_expression "uVar6 = FUN_00026ae0()" (identifier "uVar6") (= "=") (call_expression "FUN_00026ae0()" (identifier "FUN_00026ae0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);" (assignment_expression "iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0)" (identifier "iVar5") (= "=") (call_expression "FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0)" (identifier "FUN_000615a0") (argument_list "(*(undefined4 *)(param_1 + 0x13c),local_40,0)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x13c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x13c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")")))) (, ",") (identifier "local_40") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (local_50 == (undefined *)0x0) {\n        local_50 = &DAT_0006f2ee;\n      }" (if "if") (parenthesized_expression "(local_50 == (undefined *)0x0)" (( "(") (binary_expression "local_50 == (undefined *)0x0" (identifier "local_50") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_50 = &DAT_0006f2ee;\n      }" ({ "{") (expression_statement "local_50 = &DAT_0006f2ee;" (assignment_expression "local_50 = &DAT_0006f2ee" (identifier "local_50") (= "=") (pointer_expression "&DAT_0006f2ee" (& "&") (identifier "DAT_0006f2ee"))) (; ";")) (} "}"))) (expression_statement "FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6);" (call_expression "FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6)" (identifier "FUN_00026c00") (argument_list "(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,\n                   local_40[0],local_4c,local_50,uVar6)" (( "(") (identifier "param_1") (, ",") (string_literal ""Received remote port %s:%d open request from %.*s:%d"" (" """) (string_content "Received remote port %s:%d open request from %.*s:%d") (" """)) (, ",") (identifier "local_38") (, ",") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "local_4c") (, ",") (identifier "local_50") (, ",") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "FUN_0001d220(local_38);" (call_expression "FUN_0001d220(local_38)" (identifier "FUN_0001d220") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (if_statement "if (iVar5 == 0) {\n        local_74 = "Remote port is not recognised";\n      }\n      else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_74 = "Remote port is not recognised";\n      }" ({ "{") (expression_statement "local_74 = "Remote port is not recognised";" (assignment_expression "local_74 = "Remote port is not recognised"" (identifier "local_74") (= "=") (string_literal ""Remote port is not recognised"" (" """) (string_content "Remote port is not recognised") (" """))) (; ";")) (} "}")) (else_clause "else {\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" (else "else") (compound_statement "{\n        if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }\n        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));\n        uVar6 = *(undefined4 *)(iVar5 + 4);\n        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);\n        if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }\n        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);\n        FUN_0001d220(iVar8);\n        local_74 = "Port open failed";\n      }" ({ "{") (if_statement "if (*(int *)(iVar5 + 0x14) != 0) {\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0x14) != 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0x14) != 0" (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);\n          FUN_0001d220(piVar1);\n          goto LAB_00033d5c;\n        }" ({ "{") (expression_statement "FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);" (call_expression "FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2)" (identifier "FUN_0005bce0") (argument_list "(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2)" (( "(") (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "FUN_0001d220(piVar1);" (call_expression "FUN_0001d220(piVar1)" (identifier "FUN_0001d220") (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")"))) (; ";")) (goto_statement "goto LAB_00033d5c;" (goto "goto") (statement_identifier "LAB_00033d5c") (; ";")) (} "}"))) (expression_statement "iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));" (assignment_expression "iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" (identifier "iVar8") (= "=") (call_expression "FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" (identifier "FUN_0001dc80") (argument_list "(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),\n                             piVar1,*(undefined4 *)(param_1 + 0x248),\n                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24))" (( "(") (binary_expression "piVar1 + 0x13" (identifier "piVar1") (+ "+") (number_literal "0x13")) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "piVar1") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x248)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x248)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar5 + 0x18) + 0x24)" (( "(") (binary_expression "*(int *)(iVar5 + 0x18) + 0x24" (pointer_expression "*(int *)(iVar5 + 0x18)" (* "*") (cast_expression "(int *)(iVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "0x24")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar6 = *(undefined4 *)(iVar5 + 4);" (assignment_expression "uVar6 = *(undefined4 *)(iVar5 + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6);" (call_expression "FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6)" (identifier "FUN_00026c00") (argument_list "(param_1,"Attempting to forward remote port to %s:%d",\n                     *(undefined4 *)(iVar5 + 0xc),uVar6)" (( "(") (identifier "param_1") (, ",") (string_literal ""Attempting to forward remote port to %s:%d"" (" """) (string_content "Attempting to forward remote port to %s:%d") (" """)) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "uVar6") () ")"))) (; ";")) (if_statement "if (iVar8 == 0) {\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");\n          piVar1[3] = 3;\n          piVar1[4] = 0;\n          piVar1[1] = iVar2;\n          goto LAB_00033c4e;\n        }" ({ "{") (expression_statement "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");" (call_expression "FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully")" (identifier "FUN_000628e0") (argument_list "(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully")" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (, ",") (string_literal ""Forwarded port opened successfully"" (" """) (string_content "Forwarded port opened successfully") (" """)) () ")"))) (; ";")) (expression_statement "piVar1[3] = 3;" (assignment_expression "piVar1[3] = 3" (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "3")) (; ";")) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (goto_statement "goto LAB_00033c4e;" (goto "goto") (statement_identifier "LAB_00033c4e") (; ";")) (} "}"))) (expression_statement "FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);" (call_expression "FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6)" (identifier "FUN_00026c00") (argument_list "(param_1,"Port open failed: %s",iVar8,uVar6)" (( "(") (identifier "param_1") (, ",") (string_literal ""Port open failed: %s"" (" """) (string_content "Port open failed: %s") (" """)) (, ",") (identifier "iVar8") (, ",") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "FUN_0001d220(iVar8);" (call_expression "FUN_0001d220(iVar8)" (identifier "FUN_0001d220") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "local_74 = "Port open failed";" (assignment_expression "local_74 = "Port open failed"" (identifier "local_74") (= "=") (string_literal ""Port open failed"" (" """) (string_content "Port open failed") (" """))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" (else "else") (compound_statement "{\n    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;\n    local_74 = "Agent forwarding is not enabled";\n    if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }\n  }" ({ "{") (if_statement "if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))\n    goto LAB_00033d90;" (if "if") (parenthesized_expression "((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))" (( "(") (binary_expression "(local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0)" (parenthesized_expression "(local_54 != 0x16)" (( "(") (binary_expression "local_54 != 0x16" (identifier "local_54") (!= "!=") (number_literal "0x16")) () ")")) (|| "||") (parenthesized_expression "(iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0)" (( "(") (comma_expression "iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0" (assignment_expression "iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16)" (identifier "iVar5") (= "=") (call_expression "memcmp(local_58,"auth-agent@openssh.com",0x16)" (identifier "memcmp") (argument_list "(local_58,"auth-agent@openssh.com",0x16)" (( "(") (identifier "local_58") (, ",") (string_literal ""auth-agent@openssh.com"" (" """) (string_content "auth-agent@openssh.com") (" """)) (, ",") (number_literal "0x16") () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00033d90;" (goto "goto") (statement_identifier "LAB_00033d90") (; ";"))) (expression_statement "local_74 = "Agent forwarding is not enabled";" (assignment_expression "local_74 = "Agent forwarding is not enabled"" (identifier "local_74") (= "=") (string_literal ""Agent forwarding is not enabled"" (" """) (string_content "Agent forwarding is not enabled") (" """))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x48) != 0) {\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x48) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x48) != 0" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar1[3] = 2;\n      FUN_0001c780(piVar1 + 0x13);\n      piVar1[0x16] = 0;\n      piVar1[4] = 0;\n      piVar1[1] = iVar2;\nLAB_00033c4e:\n      FUN_0002c3f0();\n      piVar1[0xb] = iVar3;\n      piVar1[0xc] = iVar4;\n      goto LAB_00033c63;\n    }" ({ "{") (expression_statement "piVar1[3] = 2;" (assignment_expression "piVar1[3] = 2" (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "FUN_0001c780(piVar1 + 0x13);" (call_expression "FUN_0001c780(piVar1 + 0x13)" (identifier "FUN_0001c780") (argument_list "(piVar1 + 0x13)" (( "(") (binary_expression "piVar1 + 0x13" (identifier "piVar1") (+ "+") (number_literal "0x13")) () ")"))) (; ";")) (expression_statement "piVar1[0x16] = 0;" (assignment_expression "piVar1[0x16] = 0" (subscript_expression "piVar1[0x16]" (identifier "piVar1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (labeled_statement "LAB_00033c4e:\n      FUN_0002c3f0();" (statement_identifier "LAB_00033c4e") (: ":") (expression_statement "FUN_0002c3f0();" (call_expression "FUN_0002c3f0()" (identifier "FUN_0002c3f0") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "piVar1[0xb] = iVar3;" (assignment_expression "piVar1[0xb] = iVar3" (subscript_expression "piVar1[0xb]" (identifier "piVar1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar1[0xc] = iVar4;" (assignment_expression "piVar1[0xc] = iVar4" (subscript_expression "piVar1[0xc]" (identifier "piVar1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (goto_statement "goto LAB_00033c63;" (goto "goto") (statement_identifier "LAB_00033c63") (; ";")) (} "}"))) (} "}")))))) (expression_statement "piVar1[4] = 0;" (assignment_expression "piVar1[4] = 0" (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1[1] = iVar2;" (assignment_expression "piVar1[1] = iVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "FUN_00029d20();" (call_expression "FUN_00029d20()" (identifier "FUN_00029d20") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00029e10();" (call_expression "FUN_00029e10()" (identifier "FUN_00029e10") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_24 = 0x2000000;" (assignment_expression "local_24 = 0x2000000" (identifier "local_24") (= "=") (number_literal "0x2000000")) (; ";")) (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" (identifier "FUN_00029c40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00029e50();" (call_expression "FUN_00029e50()" (identifier "FUN_00029e50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00029e50();" (call_expression "FUN_00029e50()" (identifier "FUN_00029e50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00033b40();" (call_expression "FUN_00033b40()" (identifier "FUN_00033b40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00026c00(param_1,"Rejected channel open: %s",local_74);" (call_expression "FUN_00026c00(param_1,"Rejected channel open: %s",local_74)" (identifier "FUN_00026c00") (argument_list "(param_1,"Rejected channel open: %s",local_74)" (( "(") (identifier "param_1") (, ",") (string_literal ""Rejected channel open: %s"" (" """) (string_content "Rejected channel open: %s") (" """)) (, ",") (identifier "local_74") () ")"))) (; ";")) (expression_statement "FUN_0001d220(piVar1);" (call_expression "FUN_0001d220(piVar1)" (identifier "FUN_0001d220") (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")"))) (; ";")) (labeled_statement "LAB_00033d5c:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" (statement_identifier "LAB_00033d5c") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0006dad0();\n  }" ({ "{") (expression_statement "FUN_0006dad0();" (call_expression "FUN_0006dad0()" (identifier "FUN_0006dad0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(type_1 ssh,type_2 *pktin)

{
  int var_27;
  type_3 *c;
  type_4 uVar2;
  type_4 uVar3;
  type_4 uVar4;
  int var_19;
  type_2 *pPVar6;
  type_4 uVar7;
  void *var_10;
  type_5 *pXVar9;
  char *var_24;
  int var_1;
  type_6 uVar11;
  char *local_74;
  char *type;
  int var_5;
  char *var_6;
  int peeraddrlen;
  char *var_20;
  int shostlen;
  type_7 pf;
  type_8 x [4];
  
  var_27 = *(int *)(var_1 + 0x14);
  var_2(pktin,&type,&var_5);
  c = (type_3 *)var_3(1,0x5c);
  c->ssh = ssh;
  uVar2 = var_4(pktin);
  uVar3 = var_4(pktin);
  uVar4 = var_4(pktin);
  if (var_5 == 3) {
    if ((*(short *)type == 0x3178) && (type[2] == '1')) {
      var_2(pktin,&var_6,&peeraddrlen);
      if (var_6 == (char *)0x0) {
        var_6 = "";
      }
      var_24 = var_7("%.*s",peeraddrlen,var_6);
      uVar7 = var_4(pktin);
      var_8(ssh,"Received X11 connect request from %s:%d",var_24,uVar7);
      if ((ssh->X11_fwd_enabled != 0) || (ssh->connshare != (void *)0x0)) {
        pXVar9 = var_9(ssh->x11authtree,c,var_24,uVar7);
        c->type = 1;
        (c->u).x11.xconn = pXVar9;
        var_10 = ssh->connshare;
        (c->u).x11.initial = 1;
        if (var_10 == (void *)0x0) {
          var_11(ssh->frontend,"Opened X11 forward channel");
          var_12(var_24);
          c->halfopen = 0;
          c->remoteid = uVar2;
          var_13(c);
          (c->v).v2.remwindow = uVar3;
          (c->v).v2.remmaxpkt = uVar4;
        }
        else {
          var_11(ssh->frontend,"Opened X11 forward channel");
          var_12(var_24);
          c->halfopen = 0;
          c->remoteid = uVar2;
          var_13(c);
          (c->v).v2.remlocwin = 0x80;
          (c->v).v2.locmaxwin = 0x80;
          (c->v).v2.remwindow = uVar3;
          (c->v).v2.locwindow = 0x80;
          (c->v).v2.remmaxpkt = uVar4;
        }
LAB_00033c63:
        pPVar6 = var_14(0x5b);
        var_15(pPVar6,c->remoteid);
        var_15(pPVar6,c->localid);
        var_15(pPVar6,(c->v).v2.locwindow);
        x[0] = '\0';
        x[1] = '\0';
        x[2] = '@';
        x[3] = '\0';
        var_16(pPVar6,x,4);
        var_17(ssh,pPVar6);
        goto LAB_00033d5c;
      }
      var_12(var_24);
      local_74 = "X11 forwarding is not enabled";
    }
    else {
LAB_00033d90:
      local_74 = "Unsupported channel type requested";
    }
  }
  else if (var_5 == 0xf) {
    var_19 = var_18(type,"forwarded-tcpip",0xf);
    local_74 = "Unsupported channel type requested";
    if (var_19 == 0) {
      var_2(pktin,&var_20,&shostlen);
      if (var_20 == (char *)0x0) {
        var_20 = "";
      }
      pf.var_20 = var_7("%.*s",shostlen,var_20);
      pf.sport = var_4(pktin);
      var_2(pktin,&var_6,&peeraddrlen);
      uVar7 = var_4(pktin);
      var_10 = var_21(ssh->rportfwds,&pf,(type_9)0x0);
      if (var_6 == (char *)0x0) {
        var_6 = "";
      }
      var_8(ssh,"Received remote port %s:%d open request from %.*s:%d",pf.var_20,pf.sport,
                peeraddrlen,var_6,uVar7);
      var_12(pf.var_20);
      if (var_10 == (void *)0x0) {
        local_74 = "Remote port is not recognised";
      }
      else {
        if (*(void **)((int)var_10 + 0x14) != (void *)0x0) {
          var_22
                    (*(void **)((int)var_10 + 0x14),pktin->type,pktin->body,pktin->length);
          var_12(c);
          goto LAB_00033d5c;
        }
        var_24 = var_23(&(c->u).pfd.pf,*(char **)((int)var_10 + 0xc),*(int *)((int)var_10 + 4)
                              ,c,ssh->conf,*(int *)(*(int *)((int)var_10 + 0x18) + 0x24));
        uVar11 = *(type_6 *)((int)var_10 + 4);
        var_8(ssh,"Attempting to forward remote port to %s:%d",
                  *(type_6 *)((int)var_10 + 0xc),uVar11);
        if (var_24 == (char *)0x0) {
          var_11(ssh->frontend,"Forwarded port opened successfully");
          c->type = 3;
          c->halfopen = 0;
          c->remoteid = uVar2;
          goto LAB_00033c4e;
        }
        var_8(ssh,"Port open failed: %s",var_24,uVar11);
        var_12(var_24);
        local_74 = "Port open failed";
      }
    }
  }
  else {
    if ((var_5 != 0x16) || (var_19 = var_18(type,"auth-agent@openssh.com",0x16), var_19 != 0))
    goto LAB_00033d90;
    local_74 = "Agent forwarding is not enabled";
    if (ssh->agentfwd_enabled != 0) {
      c->type = 2;
      var_25(&(c->u).a.inbuffer);
      (c->u).a.pending = (type_10 *)0x0;
      c->halfopen = 0;
      c->remoteid = uVar2;
LAB_00033c4e:
      var_13(c);
      (c->v).v2.remwindow = uVar3;
      (c->v).v2.remmaxpkt = uVar4;
      goto LAB_00033c63;
    }
  }
  c->halfopen = 0;
  c->remoteid = uVar2;
  pPVar6 = var_14(0x5c);
  var_15(pPVar6,c->remoteid);
  x[0] = '\0';
  x[1] = '\0';
  x[2] = '\0';
  x[3] = '\x02';
  var_16(pPVar6,x,4);
  var_26(pPVar6,local_74);
  var_26(pPVar6,"en");
  var_17(ssh,pPVar6);
  var_8(ssh,"Rejected channel open: %s",local_74);
  var_12(c);
LAB_00033d5c:
  if (var_27 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_28();
  }
  return;
}


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

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

void MASKED(int param_1,undefined4 *param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  int in_GS_OFFSET;
  char *local_74;
  short *local_58;
  int local_54;
  undefined *local_50;
  undefined4 local_4c;
  undefined *local_48;
  undefined4 local_44;
  undefined4 local_40 [2];
  undefined4 local_38;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x33b69;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  FUN_000273d0();
  piVar1 = (int *)FUN_0001c990(1,0x5c);
  *piVar1 = param_1;
  iVar2 = FUN_00026ae0();
  iVar3 = FUN_00026ae0();
  iVar4 = FUN_00026ae0();
  if (local_54 == 3) {
    if ((*local_58 == 0x3178) && ((char)local_58[1] == '1')) {
      FUN_000273d0();
      if (local_50 == (undefined *)0x0) {
        local_50 = &DAT_0006f2ee;
      }
      uVar6 = FUN_0001d000("%.*s",local_4c,local_50);
      uVar7 = FUN_00026ae0();
      FUN_00026c00(param_1,"Received X11 connect request from %s:%d",uVar6,uVar7);
      if ((*(int *)(param_1 + 0x4c) != 0) || (*(int *)(param_1 + 0xf4) != 0)) {
        iVar5 = FUN_0006cd00(*(undefined4 *)(param_1 + 0x194),piVar1,uVar6,uVar7);
        piVar1[3] = 1;
        piVar1[0x13] = iVar5;
        iVar5 = *(int *)(param_1 + 0xf4);
        piVar1[0x14] = 1;
        if (iVar5 == 0) {
          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel",0,0);
          FUN_0001d220(uVar6);
          piVar1[4] = 0;
          piVar1[1] = iVar2;
          FUN_0002c3f0();
          piVar1[0xb] = iVar3;
          piVar1[0xc] = iVar4;
        }
        else {
          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Opened X11 forward channel");
          FUN_0001d220(uVar6);
          piVar1[4] = 0;
          piVar1[1] = iVar2;
          FUN_0002c3f0();
          piVar1[0xf] = 0x80;
          piVar1[0xe] = 0x80;
          piVar1[0xb] = iVar3;
          piVar1[0xd] = 0x80;
          piVar1[0xc] = iVar4;
        }
LAB_00033c63:
        FUN_00029d20();
        FUN_00029e10();
        FUN_00029e10();
        FUN_00029e10();
        local_24 = 0x400000;
        FUN_00029c40();
        FUN_00033b40();
        goto LAB_00033d5c;
      }
      FUN_0001d220(uVar6);
      local_74 = "X11 forwarding is not enabled";
    }
    else {
LAB_00033d90:
      local_74 = "Unsupported channel type requested";
    }
  }
  else if (local_54 == 0xf) {
    iVar5 = memcmp(local_58,"forwarded-tcpip",0xf);
    local_74 = "Unsupported channel type requested";
    if (iVar5 == 0) {
      FUN_000273d0();
      if (local_48 == (undefined *)0x0) {
        local_48 = &DAT_0006f2ee;
      }
      local_38 = FUN_0001d000("%.*s",local_44,local_48);
      local_40[0] = FUN_00026ae0();
      FUN_000273d0();
      uVar6 = FUN_00026ae0();
      iVar5 = FUN_000615a0(*(undefined4 *)(param_1 + 0x13c),local_40,0);
      if (local_50 == (undefined *)0x0) {
        local_50 = &DAT_0006f2ee;
      }
      FUN_00026c00(param_1,"Received remote port %s:%d open request from %.*s:%d",local_38,
                   local_40[0],local_4c,local_50,uVar6);
      FUN_0001d220(local_38);
      if (iVar5 == 0) {
        local_74 = "Remote port is not recognised";
      }
      else {
        if (*(int *)(iVar5 + 0x14) != 0) {
          FUN_0005bce0(*(int *)(iVar5 + 0x14),param_2[2],param_2[5],*param_2);
          FUN_0001d220(piVar1);
          goto LAB_00033d5c;
        }
        iVar8 = FUN_0001dc80(piVar1 + 0x13,*(undefined4 *)(iVar5 + 0xc),*(undefined4 *)(iVar5 + 4),
                             piVar1,*(undefined4 *)(param_1 + 0x248),
                             *(undefined4 *)(*(int *)(iVar5 + 0x18) + 0x24));
        uVar6 = *(undefined4 *)(iVar5 + 4);
        FUN_00026c00(param_1,"Attempting to forward remote port to %s:%d",
                     *(undefined4 *)(iVar5 + 0xc),uVar6);
        if (iVar8 == 0) {
          FUN_000628e0(*(undefined4 *)(param_1 + 0x110),"Forwarded port opened successfully");
          piVar1[3] = 3;
          piVar1[4] = 0;
          piVar1[1] = iVar2;
          goto LAB_00033c4e;
        }
        FUN_00026c00(param_1,"Port open failed: %s",iVar8,uVar6);
        FUN_0001d220(iVar8);
        local_74 = "Port open failed";
      }
    }
  }
  else {
    if ((local_54 != 0x16) || (iVar5 = memcmp(local_58,"auth-agent@openssh.com",0x16), iVar5 != 0))
    goto LAB_00033d90;
    local_74 = "Agent forwarding is not enabled";
    if (*(int *)(param_1 + 0x48) != 0) {
      piVar1[3] = 2;
      FUN_0001c780(piVar1 + 0x13);
      piVar1[0x16] = 0;
      piVar1[4] = 0;
      piVar1[1] = iVar2;
LAB_00033c4e:
      FUN_0002c3f0();
      piVar1[0xb] = iVar3;
      piVar1[0xc] = iVar4;
      goto LAB_00033c63;
    }
  }
  piVar1[4] = 0;
  piVar1[1] = iVar2;
  FUN_00029d20();
  FUN_00029e10();
  local_24 = 0x2000000;
  FUN_00029c40();
  FUN_00029e50();
  FUN_00029e50();
  FUN_00033b40();
  FUN_00026c00(param_1,"Rejected channel open: %s",local_74);
  FUN_0001d220(piVar1);
LAB_00033d5c:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0006dad0();
  }
  return;
}

