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

CURLcode __regparm3 ssh_block_statemach(connectdata *conn,_Bool disconnect)

{
  Curl_easy *data;
  curltime now;
  CURLcode CVar1;
  int iVar2;
  uint uVar3;
  curl_socket_t writefd;
  timediff_t timeout_ms;
  curl_socket_t readfd0;
  int in_GS_OFFSET;
  time_t local_34;
  int iStack_30;
  _Bool block;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x50c4b;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  data = conn->data;
  if ((conn->proto).ftpc.pp.sendthis != (char *)0x0) {
    do {
      while( true ) {
        Curl_now();
        CVar1 = ssh_statemach_act(conn,&block);
        if (CVar1 != CURLE_OK) goto LAB_00050d40;
        timeout_ms = 1000;
        if (!disconnect) {
          iVar2 = Curl_pgrsUpdate(conn);
          if (iVar2 != 0) {
            CVar1 = CURLE_ABORTED_BY_CALLBACK;
            goto LAB_00050d40;
          }
          now.tv_usec = iStack_30;
          now.tv_sec = local_34;
          CVar1 = Curl_speedcheck(data,now);
          if (CVar1 != CURLE_OK) goto LAB_00050d40;
          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);
          if (timeout_ms < 0) {
            Curl_failf(data,"Operation timed out");
            CVar1 = CURLE_OPERATION_TIMEDOUT;
            goto LAB_00050d40;
          }
        }
        if (block != false) break;
        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;
      }
      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);
      writefd = conn->sock[0];
      readfd0 = -1;
      if ((uVar3 & 1) != 0) {
        readfd0 = writefd;
      }
      if ((uVar3 & 2) == 0) {
        writefd = -1;
      }
      if (1000 < timeout_ms) {
        timeout_ms = 1000;
      }
      Curl_socket_check(readfd0,-1,writefd,timeout_ms);
    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);
  }
LAB_00050db4:
  CVar1 = CURLE_OK;
LAB_00050d40:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return CVar1;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



int __regparm3 FUN_00050c40(undefined4 param_1,undefined1 param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int unaff_EBX;
  undefined1 *puVar4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  undefined4 *extraout_ESI;
  undefined4 uVar7;
  int in_GS_OFFSET;
  int aiStack_68 [6];
  undefined1 local_50 [4];
  undefined1 *local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40 [5];
  char local_29 [4];
  undefined1 uStack_25;
  undefined4 local_24;
  undefined4 uStack_14;
  
  uStack_14 = 0x50c4b;
  entry();
  local_44._3_1_ = param_2;
  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);
  local_40[1] = *extraout_ESI;
  puVar6 = local_50;
  if (extraout_ESI[0x12e] != 0) {
    local_48 = local_40 + 2;
    local_4c = &uStack_25;
    puVar4 = local_50;
    do {
      while( true ) {
        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);
        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;
        FUN_0001ab40();
        uVar3 = *(undefined4 *)(puVar4 + 0x14);
        uVar7 = *(undefined4 *)(puVar4 + 0x18);
        puVar6 = puVar4 + -4;
        *(undefined4 *)(puVar4 + -8) = 0x50ccb;
        iVar1 = FUN_0004cbc0();
        puVar5 = puVar4 + -4;
        if (iVar1 != 0) goto LAB_00050d40;
        iVar1 = 1000;
        if (puVar4[0xb] == '\0') {
          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;
          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;
          iVar1 = FUN_0001cc10();
          if (iVar1 != 0) {
            iVar1 = 0x2a;
            puVar5 = puVar4 + -4;
            goto LAB_00050d40;
          }
          *(undefined4 *)(puVar4 + -0xc) = uVar7;
          *(undefined4 *)(puVar4 + -0x10) = uVar3;
          uVar3 = *(undefined4 *)(puVar4 + 0x10);
          *(undefined4 *)(puVar4 + -0x14) = uVar3;
          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;
          iVar1 = FUN_00033f20();
          puVar5 = puVar4 + -4;
          if (iVar1 != 0) goto LAB_00050d40;
          *(undefined4 *)(puVar4 + -0xc) = 0;
          *(undefined4 *)(puVar4 + -0x10) = 0;
          *(undefined4 *)(puVar4 + -0x14) = uVar3;
          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;
          iVar1 = FUN_0003f980();
          if (iVar1 < 0) {
            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;
            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);
            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;
            FUN_00027240();
            iVar1 = 0x1c;
            puVar5 = puVar4 + -4;
            goto LAB_00050d40;
          }
        }
        if (puVar4[0x27] != '\0') break;
        puVar6 = puVar4 + -4;
        puVar4 = puVar4 + -4;
        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;
      }
      *(int *)(puVar4 + 0xc) = iVar1;
      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];
      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;
      uVar2 = libssh2_session_block_directions();
      uVar3 = extraout_ESI[100];
      iVar1 = *(int *)(puVar4 + 0xc);
      uVar7 = 0xffffffff;
      if ((uVar2 & 1) != 0) {
        uVar7 = uVar3;
      }
      if ((uVar2 & 2) == 0) {
        uVar3 = 0xffffffff;
      }
      if (1000 < iVar1) {
        iVar1 = 1000;
      }
      *(int *)(puVar4 + -8) = iVar1;
      *(undefined4 *)(puVar4 + -0xc) = uVar3;
      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;
      *(undefined4 *)(puVar4 + -0x14) = uVar7;
      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;
      FUN_00049010();
      puVar4 = puVar4 + -4;
    } while (extraout_ESI[0x12e] != 0);
  }
LAB_00050db4:
  iVar1 = 0;
  puVar5 = puVar6;
LAB_00050d40:
  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar1;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;
  FUN_0007c1a0();
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00019ed0
ADD EBX,0x5fb95
SUB ESP,0x3c
MOV byte ptr [ESP + 0xf],DL
MOV EDX,dword ptr [ESI + 0x4b8]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x14],EAX
TEST EDX,EDX
JZ 0x00050db4
LEA EAX,[ESP + 0x18]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[ESP + 0x2b]
MOV dword ptr [ESP + 0x4],EAX
JMP 0x00050ca9
CMP byte ptr [ESP + 0x2b],0x0
JNZ 0x00050d58
MOV EAX,dword ptr [ESI + 0x4b8]
TEST EAX,EAX
JZ 0x00050db4
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x0001ab40
MOV EAX,ESI
MOV EDI,dword ptr [ESP + 0x24]
MOV EBP,dword ptr [ESP + 0x28]
ADD ESP,0xc
MOV EDX,dword ptr [ESP + 0x4]
CALL 0x0004cbc0
TEST EAX,EAX
JNZ 0x00050d40
CMP byte ptr [ESP + 0xf],0x0
MOV EDX,0x3e8
JNZ 0x00050c90
SUB ESP,0xc
PUSH ESI
CALL 0x0001cc10
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00050db8
SUB ESP,0x4
PUSH EBP
PUSH EDI
MOV EDI,dword ptr [ESP + 0x20]
PUSH EDI
CALL 0x00033f20
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00050d40
SUB ESP,0x4
PUSH 0x0
PUSH 0x0
PUSH EDI
CALL 0x0003f980
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JNS 0x00050c90
SUB ESP,0x8
LEA EAX,[EBX + 0xfffd39ce]
PUSH EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x00027240
ADD ESP,0x10
MOV EAX,0x1c
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x2c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x00050dbf
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x10],EDX
SUB ESP,0xc
MOV EDI,0xffffffff
PUSH dword ptr [ESI + 0x540]
CALL 0x00018f20
ADD ESP,0x10
MOV ECX,dword ptr [ESI + 0x190]
MOV EDX,dword ptr [ESP + 0x10]
TEST AL,0x1
CMOVNZ EDI,ECX
TEST AL,0x2
MOV EAX,0xffffffff
CMOVZ ECX,EAX
CMP EDX,0x3e8
MOV EAX,0x3e8
CMOVG EDX,EAX
PUSH EDX
PUSH ECX
PUSH -0x1
PUSH EDI
CALL 0x00049010
MOV EAX,dword ptr [ESI + 0x4b8]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00050ca9
XOR EAX,EAX
JMP 0x00050d40
MOV EAX,0x2a
JMP 0x00050d40
CALL 0x0007c1a0
(translation_unit "int __regparm3 FUN_00050c40(undefined4 param_1,undefined1 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}\n\n" (function_definition "int __regparm3 FUN_00050c40(undefined4 param_1,undefined1 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00050c40(undefined4 param_1,undefined1 param_2)" identifier (parameter_list "(undefined4 param_1,undefined1 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined1 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *extraout_ESI;" type_identifier (pointer_declarator "*extraout_ESI" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int aiStack_68 [6];" primitive_type (array_declarator "aiStack_68 [6]" identifier [ number_literal ]) ;) (declaration "undefined1 local_50 [4];" type_identifier (array_declarator "local_50 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40 [5];" type_identifier (array_declarator "local_40 [5]" identifier [ number_literal ]) ;) (declaration "char local_29 [4];" primitive_type (array_declarator "local_29 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 uStack_25;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x50c4b;" (assignment_expression "uStack_14 = 0x50c4b" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_44._3_1_ = param_2;" (assignment_expression "local_44._3_1_ = param_2" (field_expression "local_44._3_1_" identifier . field_identifier) = identifier) ;) (expression_statement "local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_40[1] = *extraout_ESI;" (assignment_expression "local_40[1] = *extraout_ESI" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (pointer_expression "*extraout_ESI" * identifier)) ;) (expression_statement "puVar6 = local_50;" (assignment_expression "puVar6 = local_50" identifier = identifier) ;) (if_statement "if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }" if (parenthesized_expression "(extraout_ESI[0x12e] != 0)" ( (binary_expression "extraout_ESI[0x12e] != 0" (subscript_expression "extraout_ESI[0x12e]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }" { (expression_statement "local_48 = local_40 + 2;" (assignment_expression "local_48 = local_40 + 2" identifier = (binary_expression "local_40 + 2" identifier + number_literal)) ;) (expression_statement "local_4c = &uStack_25;" (assignment_expression "local_4c = &uStack_25" identifier = (pointer_expression "&uStack_25" & identifier)) ;) (expression_statement "puVar4 = local_50;" (assignment_expression "puVar4 = local_50" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);" do (compound_statement "{\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    }" { (while_statement "while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }" { (expression_statement "*(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8)" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar4 + 8)" * (cast_expression "(undefined4 *)(puVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 8)" ( (binary_expression "puVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = 0x50cb5;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = 0x50cb5" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *(undefined4 *)(puVar4 + 0x14);" (assignment_expression "uVar3 = *(undefined4 *)(puVar4 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 0x14)" * (cast_expression "(undefined4 *)(puVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(undefined4 *)(puVar4 + 0x18);" (assignment_expression "uVar7 = *(undefined4 *)(puVar4 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 0x18)" * (cast_expression "(undefined4 *)(puVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x18)" ( (binary_expression "puVar4 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = puVar4 + -4;" (assignment_expression "puVar6 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + -8) = 0x50ccb;" (assignment_expression "*(undefined4 *)(puVar4 + -8) = 0x50ccb" (pointer_expression "*(undefined4 *)(puVar4 + -8)" * (cast_expression "(undefined4 *)(puVar4 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -8)" ( (binary_expression "puVar4 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_0004cbc0();" (assignment_expression "iVar1 = FUN_0004cbc0()" identifier = (call_expression "FUN_0004cbc0()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (if_statement "if (iVar1 != 0) goto LAB_00050d40;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;)) (expression_statement "iVar1 = 1000;" (assignment_expression "iVar1 = 1000" identifier = number_literal) ;) (if_statement "if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }" if (parenthesized_expression "(puVar4[0xb] == '\0')" ( (binary_expression "puVar4[0xb] == '\0'" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }" { (expression_statement "*(undefined4 **)(puVar4 + -0x14) = extraout_ESI;" (assignment_expression "*(undefined4 **)(puVar4 + -0x14) = extraout_ESI" (pointer_expression "*(undefined4 **)(puVar4 + -0x14)" * (cast_expression "(undefined4 **)(puVar4 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50ce4;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50ce4" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_0001cc10();" (assignment_expression "iVar1 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" { (expression_statement "iVar1 = 0x2a;" (assignment_expression "iVar1 = 0x2a" identifier = number_literal) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" * (cast_expression "(undefined4 *)(puVar4 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = *(undefined4 *)(puVar4 + 0x10);" (assignment_expression "uVar3 = *(undefined4 *)(puVar4 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 0x10)" * (cast_expression "(undefined4 *)(puVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50cfe;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50cfe" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_00033f20();" (assignment_expression "iVar1 = FUN_00033f20()" identifier = (call_expression "FUN_00033f20()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (if_statement "if (iVar1 != 0) goto LAB_00050d40;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" * (cast_expression "(undefined4 *)(puVar4 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d12;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d12" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_0003f980();" (assignment_expression "iVar1 = FUN_0003f980()" identifier = (call_expression "FUN_0003f980()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" { (expression_statement "*(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;" (assignment_expression "*(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563" (pointer_expression "*(int *)(puVar4 + -0x10)" * (cast_expression "(int *)(puVar4 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x33563" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10)" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar4 + 0x10)" * (cast_expression "(undefined4 *)(puVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d32;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d32" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = 0x1c;" (assignment_expression "iVar1 = 0x1c" identifier = number_literal) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;) })) })) (if_statement "if (puVar4[0x27] != '\0') break;" if (parenthesized_expression "(puVar4[0x27] != '\0')" ( (binary_expression "puVar4[0x27] != '\0'" (subscript_expression "puVar4[0x27]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "puVar6 = puVar4 + -4;" (assignment_expression "puVar6 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (if_statement "if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;" if (parenthesized_expression "(extraout_ESI[0x12e] == 0)" ( (binary_expression "extraout_ESI[0x12e] == 0" (subscript_expression "extraout_ESI[0x12e]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00050db4;" goto statement_identifier ;)) })) (expression_statement "*(int *)(puVar4 + 0xc) = iVar1;" (assignment_expression "*(int *)(puVar4 + 0xc) = iVar1" (pointer_expression "*(int *)(puVar4 + 0xc)" * (cast_expression "(int *)(puVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0xc)" ( (binary_expression "puVar4 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150]" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = (subscript_expression "extraout_ESI[0x150]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d6f;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d6f" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = libssh2_session_block_directions();" (assignment_expression "uVar2 = libssh2_session_block_directions()" identifier = (call_expression "libssh2_session_block_directions()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = extraout_ESI[100];" (assignment_expression "uVar3 = extraout_ESI[100]" identifier = (subscript_expression "extraout_ESI[100]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = *(int *)(puVar4 + 0xc);" (assignment_expression "iVar1 = *(int *)(puVar4 + 0xc)" identifier = (pointer_expression "*(int *)(puVar4 + 0xc)" * (cast_expression "(int *)(puVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0xc)" ( (binary_expression "puVar4 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }" if (parenthesized_expression "((uVar2 & 1) != 0)" ( (binary_expression "(uVar2 & 1) != 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar7 = uVar3;\n      }" { (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" identifier = identifier) ;) })) (if_statement "if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }" if (parenthesized_expression "((uVar2 & 2) == 0)" ( (binary_expression "(uVar2 & 2) == 0" (parenthesized_expression "(uVar2 & 2)" ( (binary_expression "uVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar3 = 0xffffffff;\n      }" { (expression_statement "uVar3 = 0xffffffff;" (assignment_expression "uVar3 = 0xffffffff" identifier = number_literal) ;) })) (if_statement "if (1000 < iVar1) {\n        iVar1 = 1000;\n      }" if (parenthesized_expression "(1000 < iVar1)" ( (binary_expression "1000 < iVar1" number_literal < identifier) )) (compound_statement "{\n        iVar1 = 1000;\n      }" { (expression_statement "iVar1 = 1000;" (assignment_expression "iVar1 = 1000" identifier = number_literal) ;) })) (expression_statement "*(int *)(puVar4 + -8) = iVar1;" (assignment_expression "*(int *)(puVar4 + -8) = iVar1" (pointer_expression "*(int *)(puVar4 + -8)" * (cast_expression "(int *)(puVar4 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -8)" ( (binary_expression "puVar4 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" * (cast_expression "(undefined4 *)(puVar4 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50da3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50da3" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00049010();" (call_expression "FUN_00049010()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(extraout_ESI[0x12e] != 0)" ( (binary_expression "extraout_ESI[0x12e] != 0" (subscript_expression "extraout_ESI[0x12e]" identifier [ number_literal ]) != number_literal) )) ;) })) (labeled_statement "LAB_00050db4:\n  iVar1 = 0;" statement_identifier : (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;)) (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" identifier = identifier) ;) (labeled_statement "LAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }" if (parenthesized_expression "(*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar5 + 0x2c)" * (cast_expression "(int *)(puVar5 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x2c)" ( (binary_expression "puVar5 + 0x2c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar1;\n  }" { (return_statement "return iVar1;" return identifier ;) }))) comment (expression_statement "*(undefined **)(puVar5 + -4) = &UNK_00050dc4;" (assignment_expression "*(undefined **)(puVar5 + -4) = &UNK_00050dc4" (pointer_expression "*(undefined **)(puVar5 + -4)" * (cast_expression "(undefined **)(puVar5 + -4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -4)" ( (binary_expression "puVar5 + -4" identifier + number_literal) )))) = (pointer_expression "&UNK_00050dc4" & identifier)) ;) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nCURLcode __regparm3 ssh_block_statemach(connectdata *conn,_Bool disconnect)\n\n{\n  Curl_easy *data;\n  curltime now;\n  CURLcode CVar1;\n  int iVar2;\n  uint uVar3;\n  curl_socket_t writefd;\n  timediff_t timeout_ms;\n  curl_socket_t readfd0;\n  int in_GS_OFFSET;\n  time_t local_34;\n  int iStack_30;\n  _Bool block;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  data = conn->data;\n  if ((conn->proto).ftpc.pp.sendthis != (char *)0x0) {\n    do {\n      while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }\n      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);\n      writefd = conn->sock[0];\n      readfd0 = -1;\n      if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }\n      if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }\n      if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }\n      Curl_socket_check(readfd0,-1,writefd,timeout_ms);\n    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);\n  }\nLAB_00050db4:\n  CVar1 = CURLE_OK;\nLAB_00050d40:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "CURLcode __regparm3 ssh_block_statemach(connectdata *conn,_Bool disconnect)\n\n{\n  Curl_easy *data;\n  curltime now;\n  CURLcode CVar1;\n  int iVar2;\n  uint uVar3;\n  curl_socket_t writefd;\n  timediff_t timeout_ms;\n  curl_socket_t readfd0;\n  int in_GS_OFFSET;\n  time_t local_34;\n  int iStack_30;\n  _Bool block;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  data = conn->data;\n  if ((conn->proto).ftpc.pp.sendthis != (char *)0x0) {\n    do {\n      while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }\n      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);\n      writefd = conn->sock[0];\n      readfd0 = -1;\n      if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }\n      if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }\n      if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }\n      Curl_socket_check(readfd0,-1,writefd,timeout_ms);\n    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);\n  }\nLAB_00050db4:\n  CVar1 = CURLE_OK;\nLAB_00050d40:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "ssh_block_statemach(connectdata *conn,_Bool disconnect)" identifier (parameter_list "(connectdata *conn,_Bool disconnect)" ( (parameter_declaration "connectdata *conn" type_identifier (pointer_declarator "*conn" * identifier)) , (parameter_declaration "_Bool disconnect" type_identifier identifier) ))) (compound_statement "{\n  Curl_easy *data;\n  curltime now;\n  CURLcode CVar1;\n  int iVar2;\n  uint uVar3;\n  curl_socket_t writefd;\n  timediff_t timeout_ms;\n  curl_socket_t readfd0;\n  int in_GS_OFFSET;\n  time_t local_34;\n  int iStack_30;\n  _Bool block;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  data = conn->data;\n  if ((conn->proto).ftpc.pp.sendthis != (char *)0x0) {\n    do {\n      while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }\n      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);\n      writefd = conn->sock[0];\n      readfd0 = -1;\n      if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }\n      if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }\n      if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }\n      Curl_socket_check(readfd0,-1,writefd,timeout_ms);\n    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);\n  }\nLAB_00050db4:\n  CVar1 = CURLE_OK;\nLAB_00050d40:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "Curl_easy *data;" type_identifier (pointer_declarator "*data" * identifier) ;) (declaration "curltime now;" type_identifier identifier ;) (declaration "CURLcode CVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "curl_socket_t writefd;" type_identifier identifier ;) (declaration "timediff_t timeout_ms;" type_identifier identifier ;) (declaration "curl_socket_t readfd0;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "time_t local_34;" type_identifier identifier ;) (declaration "int iStack_30;" primitive_type identifier ;) (declaration "_Bool block;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x50c4b;" (assignment_expression "uStack_14 = 0x50c4b" 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 "data = conn->data;" (assignment_expression "data = conn->data" identifier = (field_expression "conn->data" identifier -> field_identifier)) ;) (if_statement "if ((conn->proto).ftpc.pp.sendthis != (char *)0x0) {\n    do {\n      while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }\n      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);\n      writefd = conn->sock[0];\n      readfd0 = -1;\n      if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }\n      if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }\n      if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }\n      Curl_socket_check(readfd0,-1,writefd,timeout_ms);\n    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);\n  }" if (parenthesized_expression "((conn->proto).ftpc.pp.sendthis != (char *)0x0)" ( (binary_expression "(conn->proto).ftpc.pp.sendthis != (char *)0x0" (field_expression "(conn->proto).ftpc.pp.sendthis" (field_expression "(conn->proto).ftpc.pp" (field_expression "(conn->proto).ftpc" (parenthesized_expression "(conn->proto)" ( (field_expression "conn->proto" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }\n      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);\n      writefd = conn->sock[0];\n      readfd0 = -1;\n      if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }\n      if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }\n      if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }\n      Curl_socket_check(readfd0,-1,writefd,timeout_ms);\n    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);\n  }" { (do_statement "do {\n      while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }\n      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);\n      writefd = conn->sock[0];\n      readfd0 = -1;\n      if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }\n      if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }\n      if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }\n      Curl_socket_check(readfd0,-1,writefd,timeout_ms);\n    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);" do (compound_statement "{\n      while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }\n      uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);\n      writefd = conn->sock[0];\n      readfd0 = -1;\n      if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }\n      if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }\n      if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }\n      Curl_socket_check(readfd0,-1,writefd,timeout_ms);\n    }" { (while_statement "while( true ) {\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        Curl_now();\n        CVar1 = ssh_statemach_act(conn,&block);\n        if (CVar1 != CURLE_OK) goto LAB_00050d40;\n        timeout_ms = 1000;\n        if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }\n        if (block != false) break;\n        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;\n      }" { (expression_statement "Curl_now();" (call_expression "Curl_now()" identifier (argument_list "()" ( ))) ;) (expression_statement "CVar1 = ssh_statemach_act(conn,&block);" (assignment_expression "CVar1 = ssh_statemach_act(conn,&block)" identifier = (call_expression "ssh_statemach_act(conn,&block)" identifier (argument_list "(conn,&block)" ( identifier , (pointer_expression "&block" & identifier) )))) ;) (if_statement "if (CVar1 != CURLE_OK) goto LAB_00050d40;" if (parenthesized_expression "(CVar1 != CURLE_OK)" ( (binary_expression "CVar1 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;)) (expression_statement "timeout_ms = 1000;" (assignment_expression "timeout_ms = 1000" identifier = number_literal) ;) (if_statement "if (!disconnect) {\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }" if (parenthesized_expression "(!disconnect)" ( (unary_expression "!disconnect" ! identifier) )) (compound_statement "{\n          iVar2 = Curl_pgrsUpdate(conn);\n          if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }\n          now.tv_usec = iStack_30;\n          now.tv_sec = local_34;\n          CVar1 = Curl_speedcheck(data,now);\n          if (CVar1 != CURLE_OK) goto LAB_00050d40;\n          timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);\n          if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }\n        }" { (expression_statement "iVar2 = Curl_pgrsUpdate(conn);" (assignment_expression "iVar2 = Curl_pgrsUpdate(conn)" identifier = (call_expression "Curl_pgrsUpdate(conn)" identifier (argument_list "(conn)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            CVar1 = CURLE_ABORTED_BY_CALLBACK;\n            goto LAB_00050d40;\n          }" { (expression_statement "CVar1 = CURLE_ABORTED_BY_CALLBACK;" (assignment_expression "CVar1 = CURLE_ABORTED_BY_CALLBACK" identifier = identifier) ;) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;) })) (expression_statement "now.tv_usec = iStack_30;" (assignment_expression "now.tv_usec = iStack_30" (field_expression "now.tv_usec" identifier . field_identifier) = identifier) ;) (expression_statement "now.tv_sec = local_34;" (assignment_expression "now.tv_sec = local_34" (field_expression "now.tv_sec" identifier . field_identifier) = identifier) ;) (expression_statement "CVar1 = Curl_speedcheck(data,now);" (assignment_expression "CVar1 = Curl_speedcheck(data,now)" identifier = (call_expression "Curl_speedcheck(data,now)" identifier (argument_list "(data,now)" ( identifier , identifier )))) ;) (if_statement "if (CVar1 != CURLE_OK) goto LAB_00050d40;" if (parenthesized_expression "(CVar1 != CURLE_OK)" ( (binary_expression "CVar1 != CURLE_OK" identifier != identifier) )) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;)) (expression_statement "timeout_ms = Curl_timeleft(data,(curltime *)0x0,false);" (assignment_expression "timeout_ms = Curl_timeleft(data,(curltime *)0x0,false)" identifier = (call_expression "Curl_timeleft(data,(curltime *)0x0,false)" identifier (argument_list "(data,(curltime *)0x0,false)" ( identifier , (cast_expression "(curltime *)0x0" ( (type_descriptor "curltime *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , false )))) ;) (if_statement "if (timeout_ms < 0) {\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }" if (parenthesized_expression "(timeout_ms < 0)" ( (binary_expression "timeout_ms < 0" identifier < number_literal) )) (compound_statement "{\n            Curl_failf(data,"Operation timed out");\n            CVar1 = CURLE_OPERATION_TIMEDOUT;\n            goto LAB_00050d40;\n          }" { (expression_statement "Curl_failf(data,"Operation timed out");" (call_expression "Curl_failf(data,"Operation timed out")" identifier (argument_list "(data,"Operation timed out")" ( identifier , (string_literal ""Operation timed out"" " string_content ") ))) ;) (expression_statement "CVar1 = CURLE_OPERATION_TIMEDOUT;" (assignment_expression "CVar1 = CURLE_OPERATION_TIMEDOUT" identifier = identifier) ;) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;) })) })) (if_statement "if (block != false) break;" if (parenthesized_expression "(block != false)" ( (binary_expression "block != false" identifier != false) )) (break_statement "break;" break ;)) (if_statement "if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;" if (parenthesized_expression "((conn->proto).ftpc.pp.sendthis == (char *)0x0)" ( (binary_expression "(conn->proto).ftpc.pp.sendthis == (char *)0x0" (field_expression "(conn->proto).ftpc.pp.sendthis" (field_expression "(conn->proto).ftpc.pp" (field_expression "(conn->proto).ftpc" (parenthesized_expression "(conn->proto)" ( (field_expression "conn->proto" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00050db4;" goto statement_identifier ;)) })) (expression_statement "uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session);" (assignment_expression "uVar3 = libssh2_session_block_directions((conn->proto).sshc.ssh_session)" identifier = (call_expression "libssh2_session_block_directions((conn->proto).sshc.ssh_session)" identifier (argument_list "((conn->proto).sshc.ssh_session)" ( (field_expression "(conn->proto).sshc.ssh_session" (field_expression "(conn->proto).sshc" (parenthesized_expression "(conn->proto)" ( (field_expression "conn->proto" identifier -> field_identifier) )) . field_identifier) . field_identifier) )))) ;) (expression_statement "writefd = conn->sock[0];" (assignment_expression "writefd = conn->sock[0]" identifier = (subscript_expression "conn->sock[0]" (field_expression "conn->sock" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "readfd0 = -1;" (assignment_expression "readfd0 = -1" identifier = number_literal) ;) (if_statement "if ((uVar3 & 1) != 0) {\n        readfd0 = writefd;\n      }" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        readfd0 = writefd;\n      }" { (expression_statement "readfd0 = writefd;" (assignment_expression "readfd0 = writefd" identifier = identifier) ;) })) (if_statement "if ((uVar3 & 2) == 0) {\n        writefd = -1;\n      }" if (parenthesized_expression "((uVar3 & 2) == 0)" ( (binary_expression "(uVar3 & 2) == 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        writefd = -1;\n      }" { (expression_statement "writefd = -1;" (assignment_expression "writefd = -1" identifier = number_literal) ;) })) (if_statement "if (1000 < timeout_ms) {\n        timeout_ms = 1000;\n      }" if (parenthesized_expression "(1000 < timeout_ms)" ( (binary_expression "1000 < timeout_ms" number_literal < identifier) )) (compound_statement "{\n        timeout_ms = 1000;\n      }" { (expression_statement "timeout_ms = 1000;" (assignment_expression "timeout_ms = 1000" identifier = number_literal) ;) })) (expression_statement "Curl_socket_check(readfd0,-1,writefd,timeout_ms);" (call_expression "Curl_socket_check(readfd0,-1,writefd,timeout_ms)" identifier (argument_list "(readfd0,-1,writefd,timeout_ms)" ( identifier , number_literal , identifier , identifier ))) ;) }) while (parenthesized_expression "((conn->proto).ftpc.pp.sendthis != (char *)0x0)" ( (binary_expression "(conn->proto).ftpc.pp.sendthis != (char *)0x0" (field_expression "(conn->proto).ftpc.pp.sendthis" (field_expression "(conn->proto).ftpc.pp" (field_expression "(conn->proto).ftpc" (parenthesized_expression "(conn->proto)" ( (field_expression "conn->proto" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_00050db4:\n  CVar1 = CURLE_OK;" statement_identifier : (expression_statement "CVar1 = CURLE_OK;" (assignment_expression "CVar1 = CURLE_OK" identifier = identifier) ;)) (labeled_statement "LAB_00050d40:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar1;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return CVar1;\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    return CVar1;\n  }" { (return_statement "return CVar1;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int __regparm3 FUN_00050c40(undefined4 param_1,undefined1 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    \n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}\n\n" (function_definition "int __regparm3 FUN_00050c40(undefined4 param_1,undefined1 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    \n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00050c40(undefined4 param_1,undefined1 param_2)" identifier (parameter_list "(undefined4 param_1,undefined1 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined1 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    \n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *extraout_ESI;" type_identifier (pointer_declarator "*extraout_ESI" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int aiStack_68 [6];" primitive_type (array_declarator "aiStack_68 [6]" identifier [ number_literal ]) ;) (declaration "undefined1 local_50 [4];" type_identifier (array_declarator "local_50 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40 [5];" type_identifier (array_declarator "local_40 [5]" identifier [ number_literal ]) ;) (declaration "char local_29 [4];" primitive_type (array_declarator "local_29 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 uStack_25;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x50c4b;" (assignment_expression "uStack_14 = 0x50c4b" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_44._3_1_ = param_2;" (assignment_expression "local_44._3_1_ = param_2" (field_expression "local_44._3_1_" identifier . field_identifier) = identifier) ;) (expression_statement "local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_40[1] = *extraout_ESI;" (assignment_expression "local_40[1] = *extraout_ESI" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (pointer_expression "*extraout_ESI" * identifier)) ;) (expression_statement "puVar6 = local_50;" (assignment_expression "puVar6 = local_50" identifier = identifier) ;) (if_statement "if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }" if (parenthesized_expression "(extraout_ESI[0x12e] != 0)" ( (binary_expression "extraout_ESI[0x12e] != 0" (subscript_expression "extraout_ESI[0x12e]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }" { (expression_statement "local_48 = local_40 + 2;" (assignment_expression "local_48 = local_40 + 2" identifier = (binary_expression "local_40 + 2" identifier + number_literal)) ;) (expression_statement "local_4c = &uStack_25;" (assignment_expression "local_4c = &uStack_25" identifier = (pointer_expression "&uStack_25" & identifier)) ;) (expression_statement "puVar4 = local_50;" (assignment_expression "puVar4 = local_50" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);" do (compound_statement "{\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    }" { (while_statement "while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }" { (expression_statement "*(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8)" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar4 + 8)" * (cast_expression "(undefined4 *)(puVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 8)" ( (binary_expression "puVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = 0x50cb5;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = 0x50cb5" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *(undefined4 *)(puVar4 + 0x14);" (assignment_expression "uVar3 = *(undefined4 *)(puVar4 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 0x14)" * (cast_expression "(undefined4 *)(puVar4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(undefined4 *)(puVar4 + 0x18);" (assignment_expression "uVar7 = *(undefined4 *)(puVar4 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 0x18)" * (cast_expression "(undefined4 *)(puVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x18)" ( (binary_expression "puVar4 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = puVar4 + -4;" (assignment_expression "puVar6 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + -8) = 0x50ccb;" (assignment_expression "*(undefined4 *)(puVar4 + -8) = 0x50ccb" (pointer_expression "*(undefined4 *)(puVar4 + -8)" * (cast_expression "(undefined4 *)(puVar4 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -8)" ( (binary_expression "puVar4 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_0004cbc0();" (assignment_expression "iVar1 = FUN_0004cbc0()" identifier = (call_expression "FUN_0004cbc0()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (if_statement "if (iVar1 != 0) goto LAB_00050d40;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;)) (expression_statement "iVar1 = 1000;" (assignment_expression "iVar1 = 1000" identifier = number_literal) ;) (if_statement "if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }" if (parenthesized_expression "(puVar4[0xb] == '\0')" ( (binary_expression "puVar4[0xb] == '\0'" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }" { (expression_statement "*(undefined4 **)(puVar4 + -0x14) = extraout_ESI;" (assignment_expression "*(undefined4 **)(puVar4 + -0x14) = extraout_ESI" (pointer_expression "*(undefined4 **)(puVar4 + -0x14)" * (cast_expression "(undefined4 **)(puVar4 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50ce4;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50ce4" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_0001cc10();" (assignment_expression "iVar1 = FUN_0001cc10()" identifier = (call_expression "FUN_0001cc10()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" { (expression_statement "iVar1 = 0x2a;" (assignment_expression "iVar1 = 0x2a" identifier = number_literal) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" * (cast_expression "(undefined4 *)(puVar4 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = *(undefined4 *)(puVar4 + 0x10);" (assignment_expression "uVar3 = *(undefined4 *)(puVar4 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(puVar4 + 0x10)" * (cast_expression "(undefined4 *)(puVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50cfe;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50cfe" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_00033f20();" (assignment_expression "iVar1 = FUN_00033f20()" identifier = (call_expression "FUN_00033f20()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (if_statement "if (iVar1 != 0) goto LAB_00050d40;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" * (cast_expression "(undefined4 *)(puVar4 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d12;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d12" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = FUN_0003f980();" (assignment_expression "iVar1 = FUN_0003f980()" identifier = (call_expression "FUN_0003f980()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" { (expression_statement "*(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;" (assignment_expression "*(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563" (pointer_expression "*(int *)(puVar4 + -0x10)" * (cast_expression "(int *)(puVar4 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = (binary_expression "unaff_EBX + 0x33563" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10)" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar4 + 0x10)" * (cast_expression "(undefined4 *)(puVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d32;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d32" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = 0x1c;" (assignment_expression "iVar1 = 0x1c" identifier = number_literal) ;) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (goto_statement "goto LAB_00050d40;" goto statement_identifier ;) })) })) (if_statement "if (puVar4[0x27] != '\0') break;" if (parenthesized_expression "(puVar4[0x27] != '\0')" ( (binary_expression "puVar4[0x27] != '\0'" (subscript_expression "puVar4[0x27]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "puVar6 = puVar4 + -4;" (assignment_expression "puVar6 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (if_statement "if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;" if (parenthesized_expression "(extraout_ESI[0x12e] == 0)" ( (binary_expression "extraout_ESI[0x12e] == 0" (subscript_expression "extraout_ESI[0x12e]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00050db4;" goto statement_identifier ;)) })) (expression_statement "*(int *)(puVar4 + 0xc) = iVar1;" (assignment_expression "*(int *)(puVar4 + 0xc) = iVar1" (pointer_expression "*(int *)(puVar4 + 0xc)" * (cast_expression "(int *)(puVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0xc)" ( (binary_expression "puVar4 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150]" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = (subscript_expression "extraout_ESI[0x150]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d6f;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d6f" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = libssh2_session_block_directions();" (assignment_expression "uVar2 = libssh2_session_block_directions()" identifier = (call_expression "libssh2_session_block_directions()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = extraout_ESI[100];" (assignment_expression "uVar3 = extraout_ESI[100]" identifier = (subscript_expression "extraout_ESI[100]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = *(int *)(puVar4 + 0xc);" (assignment_expression "iVar1 = *(int *)(puVar4 + 0xc)" identifier = (pointer_expression "*(int *)(puVar4 + 0xc)" * (cast_expression "(int *)(puVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0xc)" ( (binary_expression "puVar4 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }" if (parenthesized_expression "((uVar2 & 1) != 0)" ( (binary_expression "(uVar2 & 1) != 0" (parenthesized_expression "(uVar2 & 1)" ( (binary_expression "uVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar7 = uVar3;\n      }" { (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" identifier = identifier) ;) })) (if_statement "if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }" if (parenthesized_expression "((uVar2 & 2) == 0)" ( (binary_expression "(uVar2 & 2) == 0" (parenthesized_expression "(uVar2 & 2)" ( (binary_expression "uVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar3 = 0xffffffff;\n      }" { (expression_statement "uVar3 = 0xffffffff;" (assignment_expression "uVar3 = 0xffffffff" identifier = number_literal) ;) })) (if_statement "if (1000 < iVar1) {\n        iVar1 = 1000;\n      }" if (parenthesized_expression "(1000 < iVar1)" ( (binary_expression "1000 < iVar1" number_literal < identifier) )) (compound_statement "{\n        iVar1 = 1000;\n      }" { (expression_statement "iVar1 = 1000;" (assignment_expression "iVar1 = 1000" identifier = number_literal) ;) })) (expression_statement "*(int *)(puVar4 + -8) = iVar1;" (assignment_expression "*(int *)(puVar4 + -8) = iVar1" (pointer_expression "*(int *)(puVar4 + -8)" * (cast_expression "(int *)(puVar4 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -8)" ( (binary_expression "puVar4 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" * (cast_expression "(undefined4 *)(puVar4 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" * (cast_expression "(undefined4 *)(puVar4 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" * (cast_expression "(undefined4 *)(puVar4 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50da3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50da3" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" * (cast_expression "(undefined4 *)(puVar4 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00049010();" (call_expression "FUN_00049010()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(extraout_ESI[0x12e] != 0)" ( (binary_expression "extraout_ESI[0x12e] != 0" (subscript_expression "extraout_ESI[0x12e]" identifier [ number_literal ]) != number_literal) )) ;) })) (labeled_statement "LAB_00050db4:\n  iVar1 = 0;" statement_identifier : (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;)) (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" identifier = identifier) ;) (labeled_statement "LAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }" if (parenthesized_expression "(*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar5 + 0x2c)" * (cast_expression "(int *)(puVar5 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x2c)" ( (binary_expression "puVar5 + 0x2c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar1;\n  }" { (return_statement "return iVar1;" return identifier ;) }))) (expression_statement "*(undefined **)(puVar5 + -4) = &UNK_00050dc4;" (assignment_expression "*(undefined **)(puVar5 + -4) = &UNK_00050dc4" (pointer_expression "*(undefined **)(puVar5 + -4)" * (cast_expression "(undefined **)(puVar5 + -4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -4)" ( (binary_expression "puVar5 + -4" identifier + number_literal) )))) = (pointer_expression "&UNK_00050dc4" & identifier)) ;) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = 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 ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int __regparm3 FUN_00050c40(undefined4 param_1,undefined1 param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    \n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00050c40(undefined4 param_1,undefined1 param_2)" (identifier "FUN_00050c40") (parameter_list "(undefined4 param_1,undefined1 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined1 param_2" (type_identifier "undefined1") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int unaff_EBX;\n  undefined1 *puVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  undefined4 *extraout_ESI;\n  undefined4 uVar7;\n  int in_GS_OFFSET;\n  int aiStack_68 [6];\n  undefined1 local_50 [4];\n  undefined1 *local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40 [5];\n  char local_29 [4];\n  undefined1 uStack_25;\n  undefined4 local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x50c4b;\n  entry();\n  local_44._3_1_ = param_2;\n  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  local_40[1] = *extraout_ESI;\n  puVar6 = local_50;\n  if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }\nLAB_00050db4:\n  iVar1 = 0;\n  puVar5 = puVar6;\nLAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }\n                    \n  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;\n  FUN_0007c1a0();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int unaff_EBX;" (primitive_type "int") (identifier "unaff_EBX") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *extraout_ESI;" (type_identifier "undefined4") (pointer_declarator "*extraout_ESI" (* "*") (identifier "extraout_ESI")) (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int aiStack_68 [6];" (primitive_type "int") (array_declarator "aiStack_68 [6]" (identifier "aiStack_68") ([ "[") (number_literal "6") (] "]")) (; ";")) (declaration "undefined1 local_50 [4];" (type_identifier "undefined1") (array_declarator "local_50 [4]" (identifier "local_50") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 *local_4c;" (type_identifier "undefined1") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40 [5];" (type_identifier "undefined4") (array_declarator "local_40 [5]" (identifier "local_40") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "char local_29 [4];" (primitive_type "char") (array_declarator "local_29 [4]" (identifier "local_29") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 uStack_25;" (type_identifier "undefined1") (identifier "uStack_25") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x50c4b;" (assignment_expression "uStack_14 = 0x50c4b" (identifier "uStack_14") (= "=") (number_literal "0x50c4b")) (; ";")) (expression_statement "entry();" (call_expression "entry()" (identifier "entry") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_44._3_1_ = param_2;" (assignment_expression "local_44._3_1_ = param_2" (field_expression "local_44._3_1_" (identifier "local_44") (. ".") (field_identifier "_3_1_")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14)" (identifier "local_24") (= "=") (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_40[1] = *extraout_ESI;" (assignment_expression "local_40[1] = *extraout_ESI" (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*extraout_ESI" (* "*") (identifier "extraout_ESI"))) (; ";")) (expression_statement "puVar6 = local_50;" (assignment_expression "puVar6 = local_50" (identifier "puVar6") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (extraout_ESI[0x12e] != 0) {\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }" (if "if") (parenthesized_expression "(extraout_ESI[0x12e] != 0)" (( "(") (binary_expression "extraout_ESI[0x12e] != 0" (subscript_expression "extraout_ESI[0x12e]" (identifier "extraout_ESI") ([ "[") (number_literal "0x12e") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_48 = local_40 + 2;\n    local_4c = &uStack_25;\n    puVar4 = local_50;\n    do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);\n  }" ({ "{") (expression_statement "local_48 = local_40 + 2;" (assignment_expression "local_48 = local_40 + 2" (identifier "local_48") (= "=") (binary_expression "local_40 + 2" (identifier "local_40") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_4c = &uStack_25;" (assignment_expression "local_4c = &uStack_25" (identifier "local_4c") (= "=") (pointer_expression "&uStack_25" (& "&") (identifier "uStack_25"))) (; ";")) (expression_statement "puVar4 = local_50;" (assignment_expression "puVar4 = local_50" (identifier "puVar4") (= "=") (identifier "local_50")) (; ";")) (do_statement "do {\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    } while (extraout_ESI[0x12e] != 0);" (do "do") (compound_statement "{\n      while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }\n      *(int *)(puVar4 + 0xc) = iVar1;\n      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];\n      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;\n      uVar2 = libssh2_session_block_directions();\n      uVar3 = extraout_ESI[100];\n      iVar1 = *(int *)(puVar4 + 0xc);\n      uVar7 = 0xffffffff;\n      if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }\n      if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }\n      if (1000 < iVar1) {\n        iVar1 = 1000;\n      }\n      *(int *)(puVar4 + -8) = iVar1;\n      *(undefined4 *)(puVar4 + -0xc) = uVar3;\n      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;\n      *(undefined4 *)(puVar4 + -0x14) = uVar7;\n      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;\n      FUN_00049010();\n      puVar4 = puVar4 + -4;\n    }" ({ "{") (while_statement "while( true ) {\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);\n        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;\n        FUN_0001ab40();\n        uVar3 = *(undefined4 *)(puVar4 + 0x14);\n        uVar7 = *(undefined4 *)(puVar4 + 0x18);\n        puVar6 = puVar4 + -4;\n        *(undefined4 *)(puVar4 + -8) = 0x50ccb;\n        iVar1 = FUN_0004cbc0();\n        puVar5 = puVar4 + -4;\n        if (iVar1 != 0) goto LAB_00050d40;\n        iVar1 = 1000;\n        if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }\n        if (puVar4[0x27] != '\0') break;\n        puVar6 = puVar4 + -4;\n        puVar4 = puVar4 + -4;\n        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;\n      }" ({ "{") (expression_statement "*(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8)" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x10)" (( "(") (binary_expression "puVar4 + -0x10" (identifier "puVar4") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar4 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 8)" (( "(") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = 0x50cb5;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = 0x50cb5" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x50cb5")) (; ";")) (expression_statement "FUN_0001ab40();" (call_expression "FUN_0001ab40()" (identifier "FUN_0001ab40") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = *(undefined4 *)(puVar4 + 0x14);" (assignment_expression "uVar3 = *(undefined4 *)(puVar4 + 0x14)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(puVar4 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x14)" (( "(") (binary_expression "puVar4 + 0x14" (identifier "puVar4") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar7 = *(undefined4 *)(puVar4 + 0x18);" (assignment_expression "uVar7 = *(undefined4 *)(puVar4 + 0x18)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(puVar4 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x18)" (( "(") (binary_expression "puVar4 + 0x18" (identifier "puVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "puVar6 = puVar4 + -4;" (assignment_expression "puVar6 = puVar4 + -4" (identifier "puVar6") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -8) = 0x50ccb;" (assignment_expression "*(undefined4 *)(puVar4 + -8) = 0x50ccb" (pointer_expression "*(undefined4 *)(puVar4 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -8)" (( "(") (binary_expression "puVar4 + -8" (identifier "puVar4") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x50ccb")) (; ";")) (expression_statement "iVar1 = FUN_0004cbc0();" (assignment_expression "iVar1 = FUN_0004cbc0()" (identifier "iVar1") (= "=") (call_expression "FUN_0004cbc0()" (identifier "FUN_0004cbc0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" (identifier "puVar5") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (iVar1 != 0) goto LAB_00050d40;" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00050d40;" (goto "goto") (statement_identifier "LAB_00050d40") (; ";"))) (expression_statement "iVar1 = 1000;" (assignment_expression "iVar1 = 1000" (identifier "iVar1") (= "=") (number_literal "1000")) (; ";")) (if_statement "if (puVar4[0xb] == '\0') {\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }" (if "if") (parenthesized_expression "(puVar4[0xb] == '\0')" (( "(") (binary_expression "puVar4[0xb] == '\0'" (subscript_expression "puVar4[0xb]" (identifier "puVar4") ([ "[") (number_literal "0xb") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;\n          iVar1 = FUN_0001cc10();\n          if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n          *(undefined4 *)(puVar4 + -0xc) = uVar7;\n          *(undefined4 *)(puVar4 + -0x10) = uVar3;\n          uVar3 = *(undefined4 *)(puVar4 + 0x10);\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;\n          iVar1 = FUN_00033f20();\n          puVar5 = puVar4 + -4;\n          if (iVar1 != 0) goto LAB_00050d40;\n          *(undefined4 *)(puVar4 + -0xc) = 0;\n          *(undefined4 *)(puVar4 + -0x10) = 0;\n          *(undefined4 *)(puVar4 + -0x14) = uVar3;\n          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;\n          iVar1 = FUN_0003f980();\n          if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }\n        }" ({ "{") (expression_statement "*(undefined4 **)(puVar4 + -0x14) = extraout_ESI;" (assignment_expression "*(undefined4 **)(puVar4 + -0x14) = extraout_ESI" (pointer_expression "*(undefined4 **)(puVar4 + -0x14)" (* "*") (cast_expression "(undefined4 **)(puVar4 + -0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "extraout_ESI")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50ce4;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50ce4" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x18)" (( "(") (binary_expression "puVar4 + -0x18" (identifier "puVar4") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x50ce4")) (; ";")) (expression_statement "iVar1 = FUN_0001cc10();" (assignment_expression "iVar1 = FUN_0001cc10()" (identifier "iVar1") (= "=") (call_expression "FUN_0001cc10()" (identifier "FUN_0001cc10") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar1 = 0x2a;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" ({ "{") (expression_statement "iVar1 = 0x2a;" (assignment_expression "iVar1 = 0x2a" (identifier "iVar1") (= "=") (number_literal "0x2a")) (; ";")) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" (identifier "puVar5") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (goto_statement "goto LAB_00050d40;" (goto "goto") (statement_identifier "LAB_00050d40") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0xc)" (( "(") (binary_expression "puVar4 + -0xc" (identifier "puVar4") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x10)" (( "(") (binary_expression "puVar4 + -0x10" (identifier "puVar4") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = *(undefined4 *)(puVar4 + 0x10);" (assignment_expression "uVar3 = *(undefined4 *)(puVar4 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(puVar4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x10)" (( "(") (binary_expression "puVar4 + 0x10" (identifier "puVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50cfe;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50cfe" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x18)" (( "(") (binary_expression "puVar4 + -0x18" (identifier "puVar4") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x50cfe")) (; ";")) (expression_statement "iVar1 = FUN_00033f20();" (assignment_expression "iVar1 = FUN_00033f20()" (identifier "iVar1") (= "=") (call_expression "FUN_00033f20()" (identifier "FUN_00033f20") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" (identifier "puVar5") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (iVar1 != 0) goto LAB_00050d40;" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00050d40;" (goto "goto") (statement_identifier "LAB_00050d40") (; ";"))) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0xc)" (( "(") (binary_expression "puVar4 + -0xc" (identifier "puVar4") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x10)" (( "(") (binary_expression "puVar4 + -0x10" (identifier "puVar4") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d12;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d12" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x18)" (( "(") (binary_expression "puVar4 + -0x18" (identifier "puVar4") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x50d12")) (; ";")) (expression_statement "iVar1 = FUN_0003f980();" (assignment_expression "iVar1 = FUN_0003f980()" (identifier "iVar1") (= "=") (call_expression "FUN_0003f980()" (identifier "FUN_0003f980") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 < 0) {\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" (if "if") (parenthesized_expression "(iVar1 < 0)" (( "(") (binary_expression "iVar1 < 0" (identifier "iVar1") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;\n            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);\n            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;\n            FUN_00027240();\n            iVar1 = 0x1c;\n            puVar5 = puVar4 + -4;\n            goto LAB_00050d40;\n          }" ({ "{") (expression_statement "*(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;" (assignment_expression "*(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563" (pointer_expression "*(int *)(puVar4 + -0x10)" (* "*") (cast_expression "(int *)(puVar4 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x10)" (( "(") (binary_expression "puVar4 + -0x10" (identifier "puVar4") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "unaff_EBX + 0x33563" (identifier "unaff_EBX") (+ "+") (number_literal "0x33563"))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10)" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x10)" (( "(") (binary_expression "puVar4 + 0x10" (identifier "puVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d32;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d32" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x18)" (( "(") (binary_expression "puVar4 + -0x18" (identifier "puVar4") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x50d32")) (; ";")) (expression_statement "FUN_00027240();" (call_expression "FUN_00027240()" (identifier "FUN_00027240") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = 0x1c;" (assignment_expression "iVar1 = 0x1c" (identifier "iVar1") (= "=") (number_literal "0x1c")) (; ";")) (expression_statement "puVar5 = puVar4 + -4;" (assignment_expression "puVar5 = puVar4 + -4" (identifier "puVar5") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (goto_statement "goto LAB_00050d40;" (goto "goto") (statement_identifier "LAB_00050d40") (; ";")) (} "}"))) (} "}"))) (if_statement "if (puVar4[0x27] != '\0') break;" (if "if") (parenthesized_expression "(puVar4[0x27] != '\0')" (( "(") (binary_expression "puVar4[0x27] != '\0'" (subscript_expression "puVar4[0x27]" (identifier "puVar4") ([ "[") (number_literal "0x27") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar6 = puVar4 + -4;" (assignment_expression "puVar6 = puVar4 + -4" (identifier "puVar6") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" (identifier "puVar4") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;" (if "if") (parenthesized_expression "(extraout_ESI[0x12e] == 0)" (( "(") (binary_expression "extraout_ESI[0x12e] == 0" (subscript_expression "extraout_ESI[0x12e]" (identifier "extraout_ESI") ([ "[") (number_literal "0x12e") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00050db4;" (goto "goto") (statement_identifier "LAB_00050db4") (; ";"))) (} "}"))) (expression_statement "*(int *)(puVar4 + 0xc) = iVar1;" (assignment_expression "*(int *)(puVar4 + 0xc) = iVar1" (pointer_expression "*(int *)(puVar4 + 0xc)" (* "*") (cast_expression "(int *)(puVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0xc)" (( "(") (binary_expression "puVar4 + 0xc" (identifier "puVar4") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150]" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (subscript_expression "extraout_ESI[0x150]" (identifier "extraout_ESI") ([ "[") (number_literal "0x150") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50d6f;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50d6f" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x18)" (( "(") (binary_expression "puVar4 + -0x18" (identifier "puVar4") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x50d6f")) (; ";")) (expression_statement "uVar2 = libssh2_session_block_directions();" (assignment_expression "uVar2 = libssh2_session_block_directions()" (identifier "uVar2") (= "=") (call_expression "libssh2_session_block_directions()" (identifier "libssh2_session_block_directions") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar3 = extraout_ESI[100];" (assignment_expression "uVar3 = extraout_ESI[100]" (identifier "uVar3") (= "=") (subscript_expression "extraout_ESI[100]" (identifier "extraout_ESI") ([ "[") (number_literal "100") (] "]"))) (; ";")) (expression_statement "iVar1 = *(int *)(puVar4 + 0xc);" (assignment_expression "iVar1 = *(int *)(puVar4 + 0xc)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(puVar4 + 0xc)" (* "*") (cast_expression "(int *)(puVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0xc)" (( "(") (binary_expression "puVar4 + 0xc" (identifier "puVar4") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar7 = 0xffffffff;" (assignment_expression "uVar7 = 0xffffffff" (identifier "uVar7") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if ((uVar2 & 1) != 0) {\n        uVar7 = uVar3;\n      }" (if "if") (parenthesized_expression "((uVar2 & 1) != 0)" (( "(") (binary_expression "(uVar2 & 1) != 0" (parenthesized_expression "(uVar2 & 1)" (( "(") (binary_expression "uVar2 & 1" (identifier "uVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar7 = uVar3;\n      }" ({ "{") (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" (identifier "uVar7") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (if_statement "if ((uVar2 & 2) == 0) {\n        uVar3 = 0xffffffff;\n      }" (if "if") (parenthesized_expression "((uVar2 & 2) == 0)" (( "(") (binary_expression "(uVar2 & 2) == 0" (parenthesized_expression "(uVar2 & 2)" (( "(") (binary_expression "uVar2 & 2" (identifier "uVar2") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = 0xffffffff;\n      }" ({ "{") (expression_statement "uVar3 = 0xffffffff;" (assignment_expression "uVar3 = 0xffffffff" (identifier "uVar3") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (if_statement "if (1000 < iVar1) {\n        iVar1 = 1000;\n      }" (if "if") (parenthesized_expression "(1000 < iVar1)" (( "(") (binary_expression "1000 < iVar1" (number_literal "1000") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n        iVar1 = 1000;\n      }" ({ "{") (expression_statement "iVar1 = 1000;" (assignment_expression "iVar1 = 1000" (identifier "iVar1") (= "=") (number_literal "1000")) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar4 + -8) = iVar1;" (assignment_expression "*(int *)(puVar4 + -8) = iVar1" (pointer_expression "*(int *)(puVar4 + -8)" (* "*") (cast_expression "(int *)(puVar4 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -8)" (( "(") (binary_expression "puVar4 + -8" (identifier "puVar4") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0xc) = uVar3;" (assignment_expression "*(undefined4 *)(puVar4 + -0xc) = uVar3" (pointer_expression "*(undefined4 *)(puVar4 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0xc)" (( "(") (binary_expression "puVar4 + -0xc" (identifier "puVar4") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x10) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar4 + -0x10) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar4 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x10)" (( "(") (binary_expression "puVar4 + -0x10" (identifier "puVar4") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x14) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0x14) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x18) = 0x50da3;" (assignment_expression "*(undefined4 *)(puVar4 + -0x18) = 0x50da3" (pointer_expression "*(undefined4 *)(puVar4 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x18)" (( "(") (binary_expression "puVar4 + -0x18" (identifier "puVar4") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x50da3")) (; ";")) (expression_statement "FUN_00049010();" (call_expression "FUN_00049010()" (identifier "FUN_00049010") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" (identifier "puVar4") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(extraout_ESI[0x12e] != 0)" (( "(") (binary_expression "extraout_ESI[0x12e] != 0" (subscript_expression "extraout_ESI[0x12e]" (identifier "extraout_ESI") ([ "[") (number_literal "0x12e") (] "]")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00050db4:\n  iVar1 = 0;" (statement_identifier "LAB_00050db4") (: ":") (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";"))) (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" (identifier "puVar5") (= "=") (identifier "puVar6")) (; ";")) (labeled_statement "LAB_00050d40:\n  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }" (statement_identifier "LAB_00050d40") (: ":") (if_statement "if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar1;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar5 + 0x2c)" (* "*") (cast_expression "(int *)(puVar5 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x2c)" (( "(") (binary_expression "puVar5 + 0x2c" (identifier "puVar5") (+ "+") (number_literal "0x2c")) () ")")))) (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return iVar1;\n  }" ({ "{") (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))) (expression_statement "*(undefined **)(puVar5 + -4) = &UNK_00050dc4;" (assignment_expression "*(undefined **)(puVar5 + -4) = &UNK_00050dc4" (pointer_expression "*(undefined **)(puVar5 + -4)" (* "*") (cast_expression "(undefined **)(puVar5 + -4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + -4)" (( "(") (binary_expression "puVar5 + -4" (identifier "puVar5") (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "&UNK_00050dc4" (& "&") (identifier "UNK_00050dc4"))) (; ";")) (expression_statement "FUN_0007c1a0();" (call_expression "FUN_0007c1a0()" (identifier "FUN_0007c1a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

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

type_1 __regparm3 function_1(type_2 *conn,type_3 disconnect)

{
  type_4 *data;
  type_5 now;
  type_1 var_4;
  int var_7;
  type_6 var_14;
  type_7 writefd;
  type_8 var_10;
  type_7 readfd0;
  int var_1;
  type_9 local_34;
  int iStack_30;
  type_3 var_12;
  int var_16;
  type_10 uStack_14;
  
  uStack_14 = 0x50c4b;
  var_16 = *(int *)(var_1 + 0x14);
  data = conn->data;
  if ((conn->proto).ftpc.pp.sendthis != (char *)0x0) {
    do {
      while( true ) {
        var_2();
        var_4 = var_3(conn,&var_12);
        if (var_4 != var_5) goto LAB_00050d40;
        var_10 = 1000;
        if (!disconnect) {
          var_7 = var_6(conn);
          if (var_7 != 0) {
            var_4 = CURLE_ABORTED_BY_CALLBACK;
            goto LAB_00050d40;
          }
          now.tv_usec = iStack_30;
          now.tv_sec = local_34;
          var_4 = var_8(data,now);
          if (var_4 != var_5) goto LAB_00050d40;
          var_10 = var_9(data,(type_5 *)0x0,false);
          if (var_10 < 0) {
            var_11(data,"Operation timed out");
            var_4 = CURLE_OPERATION_TIMEDOUT;
            goto LAB_00050d40;
          }
        }
        if (var_12 != false) break;
        if ((conn->proto).ftpc.pp.sendthis == (char *)0x0) goto LAB_00050db4;
      }
      var_14 = var_13((conn->proto).sshc.ssh_session);
      writefd = conn->sock[0];
      readfd0 = -1;
      if ((var_14 & 1) != 0) {
        readfd0 = writefd;
      }
      if ((var_14 & 2) == 0) {
        writefd = -1;
      }
      if (1000 < var_10) {
        var_10 = 1000;
      }
      var_15(readfd0,-1,writefd,var_10);
    } while ((conn->proto).ftpc.pp.sendthis != (char *)0x0);
  }
LAB_00050db4:
  var_4 = var_5;
LAB_00050d40:
  if (var_16 == *(int *)(var_1 + 0x14)) {
    return var_4;
  }
                    /* WARNING: Subroutine does not return */
  var_17();
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

int __regparm3 MASKED(undefined4 param_1,undefined1 param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int unaff_EBX;
  undefined1 *puVar4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  undefined4 *extraout_ESI;
  undefined4 uVar7;
  int in_GS_OFFSET;
  int aiStack_68 [6];
  undefined1 local_50 [4];
  undefined1 *local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40 [5];
  char local_29 [4];
  undefined1 uStack_25;
  undefined4 local_24;
  undefined4 uStack_14;
  
  uStack_14 = 0x50c4b;
  entry();
  local_44._3_1_ = param_2;
  local_24 = *(undefined4 *)(in_GS_OFFSET + 0x14);
  local_40[1] = *extraout_ESI;
  puVar6 = local_50;
  if (extraout_ESI[0x12e] != 0) {
    local_48 = local_40 + 2;
    local_4c = &uStack_25;
    puVar4 = local_50;
    do {
      while( true ) {
        *(undefined4 *)(puVar4 + -0x10) = *(undefined4 *)(puVar4 + 8);
        *(undefined4 *)(puVar4 + -0x14) = 0x50cb5;
        FUN_0001ab40();
        uVar3 = *(undefined4 *)(puVar4 + 0x14);
        uVar7 = *(undefined4 *)(puVar4 + 0x18);
        puVar6 = puVar4 + -4;
        *(undefined4 *)(puVar4 + -8) = 0x50ccb;
        iVar1 = FUN_0004cbc0();
        puVar5 = puVar4 + -4;
        if (iVar1 != 0) goto LAB_00050d40;
        iVar1 = 1000;
        if (puVar4[0xb] == '\0') {
          *(undefined4 **)(puVar4 + -0x14) = extraout_ESI;
          *(undefined4 *)(puVar4 + -0x18) = 0x50ce4;
          iVar1 = FUN_0001cc10();
          if (iVar1 != 0) {
            iVar1 = 0x2a;
            puVar5 = puVar4 + -4;
            goto LAB_00050d40;
          }
          *(undefined4 *)(puVar4 + -0xc) = uVar7;
          *(undefined4 *)(puVar4 + -0x10) = uVar3;
          uVar3 = *(undefined4 *)(puVar4 + 0x10);
          *(undefined4 *)(puVar4 + -0x14) = uVar3;
          *(undefined4 *)(puVar4 + -0x18) = 0x50cfe;
          iVar1 = FUN_00033f20();
          puVar5 = puVar4 + -4;
          if (iVar1 != 0) goto LAB_00050d40;
          *(undefined4 *)(puVar4 + -0xc) = 0;
          *(undefined4 *)(puVar4 + -0x10) = 0;
          *(undefined4 *)(puVar4 + -0x14) = uVar3;
          *(undefined4 *)(puVar4 + -0x18) = 0x50d12;
          iVar1 = FUN_0003f980();
          if (iVar1 < 0) {
            *(int *)(puVar4 + -0x10) = unaff_EBX + 0x33563;
            *(undefined4 *)(puVar4 + -0x14) = *(undefined4 *)(puVar4 + 0x10);
            *(undefined4 *)(puVar4 + -0x18) = 0x50d32;
            FUN_00027240();
            iVar1 = 0x1c;
            puVar5 = puVar4 + -4;
            goto LAB_00050d40;
          }
        }
        if (puVar4[0x27] != '\0') break;
        puVar6 = puVar4 + -4;
        puVar4 = puVar4 + -4;
        if (extraout_ESI[0x12e] == 0) goto LAB_00050db4;
      }
      *(int *)(puVar4 + 0xc) = iVar1;
      *(undefined4 *)(puVar4 + -0x14) = extraout_ESI[0x150];
      *(undefined4 *)(puVar4 + -0x18) = 0x50d6f;
      uVar2 = libssh2_session_block_directions();
      uVar3 = extraout_ESI[100];
      iVar1 = *(int *)(puVar4 + 0xc);
      uVar7 = 0xffffffff;
      if ((uVar2 & 1) != 0) {
        uVar7 = uVar3;
      }
      if ((uVar2 & 2) == 0) {
        uVar3 = 0xffffffff;
      }
      if (1000 < iVar1) {
        iVar1 = 1000;
      }
      *(int *)(puVar4 + -8) = iVar1;
      *(undefined4 *)(puVar4 + -0xc) = uVar3;
      *(undefined4 *)(puVar4 + -0x10) = 0xffffffff;
      *(undefined4 *)(puVar4 + -0x14) = uVar7;
      *(undefined4 *)(puVar4 + -0x18) = 0x50da3;
      FUN_00049010();
      puVar4 = puVar4 + -4;
    } while (extraout_ESI[0x12e] != 0);
  }
LAB_00050db4:
  iVar1 = 0;
  puVar5 = puVar6;
LAB_00050d40:
  if (*(int *)(puVar5 + 0x2c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar1;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar5 + -4) = &UNK_00050dc4;
  FUN_0007c1a0();
}

