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

int proxy_socks5_negotiate(Proxy_Socket p,int change)

{
  bufchain *pbVar1;
  int iVar2;
  Plug pppVar3;
  int iVar4;
  char *pcVar5;
  char *pcVar6;
  size_t sVar7;
  int iVar8;
  uint uVar9;
  plug_function_table *ppVar10;
  int iVar11;
  undefined4 *puVar12;
  int in_GS_OFFSET;
  byte bVar13;
  int iVar14;
  char local_24d;
  uint local_24c;
  undefined1 local_244;
  int local_240;
  int local_23c;
  size_t local_238;
  int len;
  char data_2 [5];
  char command [5];
  char local_21c [8];
  char local_214 [500];
  int local_20;
  undefined4 uStack_14;
  
  bVar13 = 0;
  uStack_14 = 0x20a8b;
  iVar14 = p->state;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (iVar14 == -1) {
    command[0] = '\x05';
    pcVar5 = conf_get_str(p->conf,0x10);
    pcVar6 = conf_get_str(p->conf,0x11);
    if ((*pcVar5 == '\0') && (*pcVar6 == '\0')) {
      len = 3;
      command[1] = '\x01';
      command[2] = '\0';
    }
    else {
      command._0_3_ = command._0_3_ & 0xffff;
      len = 3;
      proxy_socks5_offerencryptedauth(command,&len);
      command[len] = '\x02';
      command[1] = (char)len + -1;
      len = len + 1;
    }
    (*(*p->sub_socket)->write)(p->sub_socket,command,len);
    p->state = 1;
    iVar14 = 0;
    goto LAB_00020af9;
  }
  if (change == 0) {
    iVar14 = 0;
    (*(*p->plug)->closing)
              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);
    goto LAB_00020af9;
  }
  if (change == 1) {
    iVar14 = 0;
    goto LAB_00020af9;
  }
  if (change == 3) {
    iVar14 = (*(*p->plug)->accepting)
                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);
    goto LAB_00020af9;
  }
  if (change == 2) {
    if (iVar14 == 1) {
      pbVar1 = &p->pending_input_data;
      iVar8 = bufchain_size(pbVar1);
      iVar14 = 1;
      if (iVar8 < 2) goto LAB_00020af9;
      bufchain_fetch(pbVar1,command,2);
      if (command[0] != '\x05') {
        (*(*p->plug)->closing)
                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);
        goto LAB_00020af9;
      }
      if (command[1] == '\0') {
        p->state = 2;
      }
      else if (command[1] == '\x01') {
        p->state = 4;
      }
      else if (command[1] == '\x02') {
        p->state = 5;
      }
      else {
        if (command[1] != '\x03') {
          (*(*p->plug)->closing)
                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);
          goto LAB_00020af9;
        }
        p->state = 6;
      }
      bufchain_consume(pbVar1,2);
      iVar14 = p->state;
    }
    if (iVar14 == 7) {
      pbVar1 = &p->pending_input_data;
      iVar14 = bufchain_size(pbVar1);
      if (1 < iVar14) {
        bufchain_fetch(pbVar1,command,2);
        if (command[0] == '\x01') {
          if (command[1] == '\0') {
            bufchain_consume(pbVar1,2);
            p->state = 2;
            goto LAB_00020dd0;
          }
          (*(*p->plug)->closing)
                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);
        }
        else {
          (*(*p->plug)->closing)
                    (p->plug,
                     "Proxy error: SOCKS password subnegotiation contained wrong version number",
                     8000,0);
        }
      }
    }
    else {
      if (iVar14 == 8) {
        iVar14 = proxy_socks5_handlechap(p);
        if (iVar14 != 0) goto LAB_00020af9;
        iVar14 = p->state;
      }
      if (iVar14 == 2) {
LAB_00020dd0:
        iVar14 = sk_addrtype(p->remote_addr);
        if (iVar14 == 1) {
          command[3] = '\x01';
          sk_addrcopy(p->remote_addr,command + 4);
          iVar4 = 9;
          iVar11 = 8;
          iVar8 = 10;
        }
        else if (iVar14 == 2) {
          command[3] = '\x04';
          sk_addrcopy(p->remote_addr,command + 4);
          iVar4 = 0x15;
          iVar11 = 0x14;
          iVar8 = 0x16;
        }
        else {
          if (iVar14 != 3) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");
          }
          command[3] = '\x03';
          sk_getaddr(p->remote_addr,local_21c,0x100);
          sVar7 = strlen(local_21c);
          command[4] = (char)sVar7;
          iVar4 = (int)command[4];
          iVar8 = iVar4 + 7;
          iVar11 = iVar4 + 5;
          iVar4 = iVar4 + 6;
        }
        iVar14 = 1;
        command[0] = '\x05';
        command[1] = '\x01';
        command[2] = '\0';
        iVar2 = p->remote_port;
        command[iVar11] = (char)((uint)iVar2 >> 8);
        command[iVar4] = (char)iVar2;
        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);
        p->state = 3;
        goto LAB_00020af9;
      }
      if (iVar14 != 3) {
        if (iVar14 == 4) {
          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";
          pppVar3 = p->plug;
          ppVar10 = *pppVar3;
          iVar14 = 8000;
        }
        else {
          if (iVar14 != 5) {
            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))
            goto LAB_00020af9;
            goto LAB_00020ad4;
          }
          pcVar5 = conf_get_str(p->conf,0x10);
          pcVar6 = conf_get_str(p->conf,0x11);
          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {
            local_238 = strlen(pcVar5);
            if (local_238 < 0x100) {
              if (local_238 == 0) {
                local_23c = 4;
                local_240 = 3;
                local_244 = 1;
                local_238 = 1;
              }
              else {
                local_244 = (undefined1)local_238;
                local_240 = local_238 + 2;
                local_23c = local_238 + 3;
              }
            }
            else {
              local_23c = 0x102;
              local_240 = 0x101;
              local_244 = 0xff;
              local_238 = 0xff;
            }
            sVar7 = strlen(pcVar6);
            if (sVar7 < 0x100) {
              local_24d = '\x01';
              if (sVar7 != 0) {
                local_24d = (char)sVar7;
              }
              local_24c = 1;
              if (sVar7 != 0) {
                local_24c = sVar7;
              }
            }
            else {
              local_24d = -1;
              local_24c = 0xff;
            }
            command[1] = local_244;
            command[0] = '\x01';
            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);
            command[local_240] = local_24d;
            pcVar5 = command + local_23c;
            if (local_24c < 4) {
              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {
                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =
                     *(undefined2 *)(pcVar6 + (local_24c - 2));
              }
            }
            else {
              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;
              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =
                   *(undefined4 *)(pcVar6 + (local_24c - 4));
              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);
              pcVar5 = pcVar6 + -iVar14;
              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);
              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {
                *puVar12 = *(undefined4 *)pcVar5;
                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;
                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;
              }
            }
            iVar14 = 1;
            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);
            p->state = 7;
            goto LAB_00020af9;
          }
          pcVar5 = 
          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";
          pppVar3 = p->plug;
          ppVar10 = *pppVar3;
          iVar14 = 8000;
        }
        goto LAB_00020aec;
      }
      pbVar1 = &p->pending_input_data;
      iVar14 = bufchain_size(pbVar1);
      if (4 < iVar14) {
        bufchain_fetch(pbVar1,data_2,5);
        if (data_2[0] == '\x05') {
          if (data_2[1] == '\0') {
            if (data_2[3] == '\x03') {
              iVar14 = (byte)data_2[4] + 6;
            }
            else if (data_2[3] == '\x04') {
              iVar14 = 0x16;
            }
            else {
              if (data_2[3] != '\x01') {
                (*(*p->plug)->closing)
                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",
                           8000,0);
                goto LAB_00020af4;
              }
              iVar14 = 10;
            }
            iVar8 = bufchain_size(pbVar1);
            if (iVar14 <= iVar8) {
              bufchain_consume(pbVar1,iVar14);
              proxy_activate(p);
            }
          }
          else {
            pcVar5 = "Proxy error: ";
            pcVar6 = command;
            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {
              *pcVar6 = *pcVar5;
              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;
              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;
            }
            switch((int)data_2[1] - 1U & 0xff) {
            case 0:
              pcVar5 = "General SOCKS server failure";
              pcVar6 = local_214;
              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {
                *pcVar6 = *pcVar5;
                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;
                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;
              }
              break;
            case 1:
              pcVar5 = "Connection not allowed by ruleset";
              pcVar6 = local_214;
              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {
                *pcVar6 = *pcVar5;
                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;
                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;
              }
              break;
            case 2:
              pcVar5 = "Network unreachable";
              pcVar6 = local_214;
              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {
                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;
                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;
                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;
              }
              break;
            case 3:
              pcVar5 = "Host unreachable";
              pcVar6 = local_214;
              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {
                *pcVar6 = *pcVar5;
                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;
                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;
              }
              break;
            case 4:
              pcVar5 = "Connection refused";
              pcVar6 = local_214;
              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {
                *pcVar6 = *pcVar5;
                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;
                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;
              }
              break;
            case 5:
              pcVar5 = "TTL expired";
              pcVar6 = local_214;
              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {
                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;
                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;
                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;
              }
              break;
            case 6:
              pcVar5 = "Command not supported";
              pcVar6 = local_214;
              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {
                *pcVar6 = *pcVar5;
                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;
                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;
              }
              break;
            case 7:
              pcVar5 = "Address type not supported";
              pcVar6 = local_214;
              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {
                *pcVar6 = *pcVar5;
                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;
                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;
              }
              break;
            default:
              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]
                           );
            }
            (*(*p->plug)->closing)(p->plug,command,8000,0);
          }
        }
        else {
          (*(*p->plug)->closing)
                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);
        }
      }
    }
  }
  else {
LAB_00020ad4:
    pcVar5 = "Proxy error: Unexpected proxy error";
    pppVar3 = p->plug;
    ppVar10 = *pppVar3;
    iVar14 = 0x1f41;
LAB_00020aec:
    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);
  }
LAB_00020af4:
  iVar14 = 1;
LAB_00020af9:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar14;
}



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

int FUN_00020a80(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  size_t sVar6;
  int iVar7;
  uint uVar8;
  undefined4 extraout_ECX;
  int iVar9;
  undefined4 *puVar10;
  int in_GS_OFFSET;
  byte bVar11;
  undefined4 uVar12;
  undefined1 local_24d;
  uint local_24c;
  undefined1 local_244;
  int local_240;
  int local_23c;
  size_t local_238;
  int local_22c;
  char local_226;
  char local_225 [4];
  undefined1 local_221;
  undefined2 uStack_220;
  undefined1 local_21e;
  char local_21d [9];
  char local_214 [500];
  int local_20;
  undefined4 uStack_14;
  
  bVar11 = 0;
  uStack_14 = 0x20a8b;
  iVar9 = *(int *)(param_1 + 0x44);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (iVar9 == -1) {
    _local_221 = CONCAT21(uStack_220,5);
    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);
    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);
    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {
      local_22c = 3;
      _local_221 = CONCAT21(1,local_221);
    }
    else {
      _local_221 = _local_221 & 0xffff;
      local_22c = 3;
      FUN_0001a140(&local_221,&local_22c);
      (&local_221)[local_22c] = 2;
      _local_221 = CONCAT11((char)local_22c + -1,local_221);
      local_22c = local_22c + 1;
    }
    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);
    *(undefined4 *)(param_1 + 0x44) = 1;
    iVar9 = 0;
    goto LAB_00020af9;
  }
  if (param_2 == 0) {
    iVar9 = 0;
    (**(code **)(**(int **)(param_1 + 0xc) + 4))
              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),
               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));
    goto LAB_00020af9;
  }
  if (param_2 == 1) {
    iVar9 = 0;
    goto LAB_00020af9;
  }
  if (param_2 == 3) {
    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))
                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),
                       *(undefined4 *)(param_1 + 0x70));
    goto LAB_00020af9;
  }
  if (param_2 == 2) {
    if (iVar9 == 1) {
      iVar3 = param_1 + 0x34;
      iVar7 = FUN_0001d890(iVar3);
      iVar9 = 1;
      if (iVar7 < 2) goto LAB_00020af9;
      FUN_0001dae0(iVar3,&local_221,2);
      if (local_221 != '\x05') {
        (**(code **)(**(int **)(param_1 + 0xc) + 4))
                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",
                   8000,0);
        goto LAB_00020af9;
      }
      if ((char)uStack_220 == '\0') {
        *(undefined4 *)(param_1 + 0x44) = 2;
      }
      else if ((char)uStack_220 == '\x01') {
        *(undefined4 *)(param_1 + 0x44) = 4;
      }
      else if ((char)uStack_220 == '\x02') {
        *(undefined4 *)(param_1 + 0x44) = 5;
      }
      else {
        if ((char)uStack_220 != '\x03') {
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);
          goto LAB_00020af9;
        }
        *(undefined4 *)(param_1 + 0x44) = 6;
      }
      FUN_0001da00(iVar3,2);
      iVar9 = *(int *)(param_1 + 0x44);
    }
    if (iVar9 == 7) {
      iVar9 = param_1 + 0x34;
      iVar3 = FUN_0001d890(iVar9);
      if (1 < iVar3) {
        FUN_0001dae0(iVar9,&local_221,2);
        if (local_221 == '\x01') {
          if ((char)uStack_220 == '\0') {
            FUN_0001da00(iVar9,2);
            *(undefined4 *)(param_1 + 0x44) = 2;
            goto LAB_00020dd0;
          }
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS proxy refused password authentication",8000,0);
        }
        else {
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS password subnegotiation contained wrong version number",
                     8000,0);
        }
      }
    }
    else {
      if (iVar9 == 8) {
        iVar9 = FUN_0001a160(param_1);
        if (iVar9 != 0) goto LAB_00020af9;
        iVar9 = *(int *)(param_1 + 0x44);
      }
      if (iVar9 == 2) {
LAB_00020dd0:
        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));
        if (iVar9 == 1) {
          local_21e = 1;
          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);
          iVar2 = 9;
          iVar7 = 8;
          iVar3 = 10;
        }
        else if (iVar9 == 2) {
          local_21e = 4;
          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);
          iVar2 = 0x15;
          iVar7 = 0x14;
          iVar3 = 0x16;
        }
        else {
          if (iVar9 != 3) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");
          }
          local_21e = 3;
          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);
          sVar6 = strlen(local_21d + 1);
          local_21d[0] = (char)sVar6;
          iVar2 = (int)local_21d[0];
          iVar3 = iVar2 + 7;
          iVar7 = iVar2 + 5;
          iVar2 = iVar2 + 6;
        }
        iVar9 = 1;
        _local_221 = 0x105;
        uVar12 = *(undefined4 *)(param_1 + 0x14);
        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);
        (&local_221)[iVar2] = (char)uVar12;
        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);
        *(undefined4 *)(param_1 + 0x44) = 3;
        goto LAB_00020af9;
      }
      if (iVar9 != 3) {
        if (iVar9 == 4) {
          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";
          piVar1 = *(int **)(param_1 + 0xc);
          iVar9 = *piVar1;
          uVar12 = 8000;
        }
        else {
          if (iVar9 != 5) {
            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;
            goto LAB_00020ad4;
          }
          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);
          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);
          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {
            local_238 = strlen(pcVar4);
            if (local_238 < 0x100) {
              if (local_238 == 0) {
                local_23c = 4;
                local_240 = 3;
                local_244 = 1;
                local_238 = 1;
              }
              else {
                local_244 = (undefined1)local_238;
                local_240 = local_238 + 2;
                local_23c = local_238 + 3;
              }
            }
            else {
              local_23c = 0x102;
              local_240 = 0x101;
              local_244 = 0xff;
              local_238 = 0xff;
            }
            sVar6 = strlen(pcVar5);
            if (sVar6 < 0x100) {
              local_24d = 1;
              if (sVar6 != 0) {
                local_24d = (undefined1)sVar6;
              }
              local_24c = 1;
              if (sVar6 != 0) {
                local_24c = sVar6;
              }
            }
            else {
              local_24d = 0xff;
              local_24c = 0xff;
            }
            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);
            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);
            (&local_221)[local_240] = local_24d;
            pcVar4 = &local_221 + local_23c;
            if (local_24c < 4) {
              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {
                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =
                     *(undefined2 *)(pcVar5 + (local_24c - 2));
              }
            }
            else {
              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;
              *(undefined4 *)(local_225 + local_24c + local_23c) =
                   *(undefined4 *)(pcVar5 + (local_24c - 4));
              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);
              pcVar4 = pcVar5 + -iVar9;
              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);
              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {
                *puVar10 = *(undefined4 *)pcVar4;
                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;
                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;
              }
            }
            iVar9 = 1;
            (**(code **)(**(int **)(param_1 + 8) + 8))
                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);
            *(undefined4 *)(param_1 + 0x44) = 7;
            goto LAB_00020af9;
          }
          pcVar4 = 
          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";
          piVar1 = *(int **)(param_1 + 0xc);
          iVar9 = *piVar1;
          uVar12 = 8000;
        }
        goto LAB_00020aec;
      }
      iVar9 = param_1 + 0x34;
      iVar3 = FUN_0001d890(iVar9);
      if (4 < iVar3) {
        FUN_0001dae0(iVar9,&local_226,5);
        if (local_226 == '\x05') {
          if (local_225[0] == '\0') {
            if (local_225[2] == '\x03') {
              iVar3 = (byte)local_225[3] + 6;
            }
            else if (local_225[2] == '\x04') {
              iVar3 = 0x16;
            }
            else {
              if (local_225[2] != '\x01') {
                (**(code **)(**(int **)(param_1 + 0xc) + 4))
                          (*(int **)(param_1 + 0xc),
                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);
                goto LAB_00020af4;
              }
              iVar3 = 10;
            }
            iVar7 = FUN_0001d890(iVar9);
            if (iVar3 <= iVar7) {
              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);
              FUN_0001fe90(param_1);
            }
          }
          else {
            pcVar4 = "Proxy error: ";
            pcVar5 = &local_221;
            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {
              *pcVar5 = *pcVar4;
              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
            }
            switch((int)local_225[0] - 1U & 0xff) {
            case 0:
              pcVar4 = "General SOCKS server failure";
              pcVar5 = local_214;
              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 1:
              pcVar4 = "Connection not allowed by ruleset";
              pcVar5 = local_214;
              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 2:
              pcVar4 = "Network unreachable";
              pcVar5 = local_214;
              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {
                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;
                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;
              }
              break;
            case 3:
              pcVar4 = "Host unreachable";
              pcVar5 = local_214;
              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 4:
              pcVar4 = "Connection refused";
              pcVar5 = local_214;
              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 5:
              pcVar4 = "TTL expired";
              pcVar5 = local_214;
              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {
                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;
                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;
              }
              break;
            case 6:
              pcVar4 = "Command not supported";
              pcVar5 = local_214;
              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 7:
              pcVar4 = "Address type not supported";
              pcVar5 = local_214;
              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            default:
              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",
                            (int)local_225[0]);
            }
            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)
            ;
          }
        }
        else {
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);
        }
      }
    }
  }
  else {
LAB_00020ad4:
    pcVar4 = "Proxy error: Unexpected proxy error";
    piVar1 = *(int **)(param_1 + 0xc);
    iVar9 = *piVar1;
    uVar12 = 0x1f41;
LAB_00020aec:
    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);
  }
LAB_00020af4:
  iVar9 = 1;
LAB_00020af9:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0008d800();
  }
  return iVar9;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000149a0
ADD EBX,0xac2e5
SUB ESP,0x24c
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,EAX
MOV dword ptr [EBP + 0xfffffdd4],EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV EDI,dword ptr [ESI + 0x44]
MOV EDX,dword ptr GS:[0x14]
MOV dword ptr [EBP + -0x1c],EDX
XOR EDX,EDX
CMP EDI,-0x1
JZ 0x00020bb0
TEST EAX,EAX
JZ 0x00020b18
CMP EAX,0x1
JZ 0x00020b38
CMP EAX,0x3
JZ 0x00020c60
CMP EAX,0x2
JZ 0x00020b40
MOV EAX,dword ptr [EBP + 0xfffffdd4]
LEA ECX,[EBX + 0xfffc2868]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f41
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
MOV EDI,0x1
MOV EBX,dword ptr [EBP + -0x1c]
XOR EBX,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x00021417
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0xc]
XOR EDI,EDI
MOV EDX,dword ptr [EAX]
PUSH dword ptr [ESI + 0x58]
PUSH dword ptr [ESI + 0x54]
PUSH dword ptr [ESI + 0x50]
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
JMP 0x00020af9
XOR EDI,EDI
JMP 0x00020af9
CMP EDI,0x1
JZ 0x00020cc8
CMP EDI,0x7
JZ 0x00020d30
CMP EDI,0x8
JZ 0x00020d90
CMP EDI,0x2
JZ 0x00020dd0
CMP EDI,0x3
JZ 0x00020e98
CMP EDI,0x4
JZ 0x00020ca8
CMP EDI,0x5
JZ 0x00020f61
CMP EDI,0x6
JNZ 0x00020ad4
SUB ESP,0xc
PUSH dword ptr [EBP + 0xfffffdd4]
CALL 0x0001a470
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x00020ad4
JMP 0x00020af9
SUB ESP,0x8
MOV EDI,ESI
MOV byte ptr [EBP + 0xfffffde3],0x5
PUSH 0x10
PUSH dword ptr [ESI + 0x74]
CALL 0x00018b60
MOV ESI,EAX
POP EAX
POP EDX
PUSH 0x11
PUSH dword ptr [EDI + 0x74]
CALL 0x00018b60
ADD ESP,0x10
CMP byte ptr [ESI],0x0
JNZ 0x00020be5
CMP byte ptr [EAX],0x0
JZ 0x00020c80
SUB ESP,0x8
LEA EDX,[EBP + 0xfffffde3]
LEA EAX,[EBP + 0xfffffdd8]
MOV byte ptr [EBP + 0xfffffde5],0x0
PUSH EAX
PUSH EDX
MOV dword ptr [EBP + 0xfffffdd0],EDX
MOV dword ptr [EBP + 0xfffffdd8],0x3
CALL 0x0001a140
MOV ECX,dword ptr [EBP + 0xfffffdd8]
MOV EDX,dword ptr [EBP + 0xfffffdd0]
ADD ESP,0x10
LEA EAX,[ECX + 0x1]
MOV byte ptr [EBP + ECX*0x1 + 0xfffffde3],0x2
LEA ECX,[EAX + -0x2]
MOV dword ptr [EBP + 0xfffffdd8],EAX
MOV byte ptr [EBP + 0xfffffde4],CL
MOV EDI,dword ptr [EBP + 0xfffffdd4]
SUB ESP,0x4
MOV ECX,dword ptr [EDI + 0x8]
MOV EBX,dword ptr [ECX]
PUSH EAX
PUSH EDX
PUSH ECX
CALL dword ptr [EBX + 0x8]
MOV dword ptr [EDI + 0x44],0x1
XOR EDI,EDI
ADD ESP,0x10
JMP 0x00020af9
MOV EAX,dword ptr [ESI + 0xc]
SUB ESP,0x4
MOV EDX,dword ptr [EAX]
PUSH dword ptr [ESI + 0x70]
PUSH dword ptr [ESI + 0x6c]
PUSH EAX
CALL dword ptr [EDX + 0x10]
MOV EDI,EAX
ADD ESP,0x10
JMP 0x00020af9
MOV EDI,0x1
MOV EAX,0x3
MOV dword ptr [EBP + 0xfffffdd8],0x3
LEA EDX,[EBP + 0xfffffde3]
MOV word ptr [EBP + 0xfffffde4],DI
JMP 0x00020c3b
MOV EAX,dword ptr [EBP + 0xfffffdd4]
LEA ECX,[EBX + 0xfffc2a48]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
JMP 0x00020aec
SUB ESP,0xc
LEA ESI,[ESI + 0x34]
PUSH ESI
CALL 0x0001d890
ADD ESP,0x10
CMP EAX,0x1
JLE 0x00020af9
SUB ESP,0x4
LEA EAX,[EBP + 0xfffffde3]
PUSH 0x2
PUSH EAX
PUSH ESI
CALL 0x0001dae0
ADD ESP,0x10
CMP byte ptr [EBP + 0xfffffde3],0x5
JZ 0x00020ef7
MOV EAX,dword ptr [EBP + 0xfffffdd4]
LEA ECX,[EBX + 0xfffc288c]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
JMP 0x00020af9
MOV EDI,dword ptr [EBP + 0xfffffdd4]
SUB ESP,0xc
LEA ESI,[EDI + 0x34]
PUSH ESI
CALL 0x0001d890
ADD ESP,0x10
CMP EAX,0x1
JLE 0x00020af4
SUB ESP,0x4
LEA EAX,[EBP + 0xfffffde3]
PUSH 0x2
PUSH EAX
PUSH ESI
CALL 0x0001dae0
ADD ESP,0x10
CMP byte ptr [EBP + 0xfffffde3],0x1
JZ 0x00020f2f
MOV EAX,dword ptr [EDI + 0xc]
LEA ECX,[EBX + 0xfffc2900]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
JMP 0x00020af4
MOV ESI,dword ptr [EBP + 0xfffffdd4]
SUB ESP,0xc
PUSH ESI
CALL 0x0001a160
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x00020af9
MOV EDI,dword ptr [ESI + 0x44]
JMP 0x00020b5b
SUB ESP,0x8
PUSH 0x2
PUSH ESI
CALL 0x0001da00
MOV EAX,dword ptr [EBP + 0xfffffdd4]
ADD ESP,0x10
MOV dword ptr [EAX + 0x44],0x2
NOP
MOV EAX,dword ptr [EBP + 0xfffffdd4]
SUB ESP,0xc
PUSH dword ptr [EAX + 0x10]
CALL 0x00084330
ADD ESP,0x10
CMP EAX,0x1
JZ 0x0002116e
CMP EAX,0x2
JZ 0x00021216
CMP EAX,0x3
JNZ 0x00021460
MOV EAX,dword ptr [EBP + 0xfffffdd4]
SUB ESP,0x4
LEA ESI,[EBP + 0xfffffde8]
MOV byte ptr [EBP + 0xfffffde6],0x3
PUSH 0x100
PUSH ESI
PUSH dword ptr [EAX + 0x10]
CALL 0x00084190
MOV dword ptr [ESP],ESI
CALL 0x00014460
ADD ESP,0x10
MOV byte ptr [EBP + 0xfffffde7],AL
MOVSX EAX,AL
LEA ECX,[EAX + 0x7]
LEA EBX,[EAX + 0x5]
ADD EAX,0x6
MOV ESI,0x105
MOV byte ptr [EBP + 0xfffffde5],0x0
SUB ESP,0x4
MOV EDI,0x1
MOV word ptr [EBP + 0xfffffde3],SI
MOV ESI,dword ptr [EBP + 0xfffffdd4]
MOV EDX,dword ptr [ESI + 0x14]
MOV byte ptr [EBP + EBX*0x1 + 0xfffffde3],DH
MOV byte ptr [EBP + EAX*0x1 + 0xfffffde3],DL
MOV EAX,dword ptr [ESI + 0x8]
MOV EDX,dword ptr [EAX]
PUSH ECX
LEA ECX,[EBP + 0xfffffde3]
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x8]
MOV dword ptr [ESI + 0x44],0x3
ADD ESP,0x10
JMP 0x00020af9
MOV EDI,dword ptr [EBP + 0xfffffdd4]
SUB ESP,0xc
LEA ESI,[EDI + 0x34]
PUSH ESI
CALL 0x0001d890
ADD ESP,0x10
CMP EAX,0x4
JLE 0x00020af4
SUB ESP,0x4
LEA EAX,[EBP + 0xfffffdde]
PUSH 0x5
PUSH EAX
PUSH ESI
CALL 0x0001dae0
ADD ESP,0x10
CMP byte ptr [EBP + 0xfffffdde],0x5
JZ 0x0002111b
MOV EAX,dword ptr [EDI + 0xc]
LEA ECX,[EBX + 0xfffc2988]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
JMP 0x00020af4
MOVZX EAX,byte ptr [EBP + 0xfffffde4]
TEST AL,AL
JNZ 0x00020fb2
MOV EAX,dword ptr [EBP + 0xfffffdd4]
MOV dword ptr [EAX + 0x44],0x2
SUB ESP,0x8
PUSH 0x2
PUSH ESI
CALL 0x0001da00
MOV EAX,dword ptr [EBP + 0xfffffdd4]
ADD ESP,0x10
MOV EDI,dword ptr [EAX + 0x44]
JMP 0x00020b49
CMP byte ptr [EBP + 0xfffffde4],0x0
JZ 0x00020db4
MOV EAX,dword ptr [EBP + 0xfffffdd4]
LEA ECX,[EBX + 0xfffc294c]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
JMP 0x00020af4
MOV ESI,dword ptr [EBP + 0xfffffdd4]
SUB ESP,0x8
PUSH 0x10
PUSH dword ptr [ESI + 0x74]
CALL 0x00018b60
MOV EDI,EAX
POP EAX
POP EDX
PUSH 0x11
PUSH dword ptr [ESI + 0x74]
CALL 0x00018b60
ADD ESP,0x10
CMP byte ptr [EDI],0x0
MOV dword ptr [EBP + 0xfffffdd0],EAX
JNZ 0x00020fdc
CMP byte ptr [EAX],0x0
JNZ 0x00020fdc
MOV EAX,dword ptr [EBP + 0xfffffdd4]
LEA ECX,[EBX + 0xfffc2a7c]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
JMP 0x00020aec
CMP AL,0x1
JZ 0x0002124c
CMP AL,0x2
JZ 0x000212ba
CMP AL,0x3
MOV EAX,dword ptr [EBP + 0xfffffdd4]
JNZ 0x0002129b
MOV dword ptr [EAX + 0x44],0x6
JMP 0x00020f13
SUB ESP,0xc
PUSH EDI
CALL 0x00014460
ADD ESP,0x10
MOV EDX,EAX
CMP EAX,0xff
JA 0x000211e7
MOV dword ptr [EBP + 0xfffffdcc],EAX
TEST EAX,EAX
JZ 0x000212cc
MOV byte ptr [EBP + 0xfffffdc0],AL
LEA EAX,[EAX + 0x2]
MOV dword ptr [EBP + 0xfffffdc4],EAX
LEA EAX,[EDX + 0x3]
MOV dword ptr [EBP + 0xfffffdc8],EAX
SUB ESP,0xc
PUSH dword ptr [EBP + 0xfffffdd0]
MOV dword ptr [EBP + 0xfffffdbc],EDX
CALL 0x00014460
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0xfffffdbc]
CMP EAX,0xff
JA 0x000211cc
TEST EAX,EAX
MOV ECX,0x1
CMOVNZ ECX,EAX
MOV byte ptr [EBP + 0xfffffdb7],CL
MOV ECX,0x1
CMOVNZ ECX,EAX
MOV dword ptr [EBP + 0xfffffdb8],ECX
MOVZX EAX,byte ptr [EBP + 0xfffffdc0]
PUSH 0x1ff
PUSH EDX
LEA EDX,[EBP + 0xfffffde3]
MOV byte ptr [EBP + 0xfffffde4],AL
LEA EAX,[EBP + 0xfffffde5]
PUSH EDI
PUSH EAX
MOV dword ptr [EBP + 0xfffffdbc],ECX
MOV dword ptr [EBP + 0xfffffdc0],EDX
MOV byte ptr [EBP + 0xfffffde3],0x1
CALL 0x00014390
MOV EDX,dword ptr [EBP + 0xfffffdc4]
MOVZX EAX,byte ptr [EBP + 0xfffffdb7]
MOV ECX,dword ptr [EBP + 0xfffffdbc]
MOV byte ptr [EBP + EDX*0x1 + 0xfffffde3],AL
MOV EAX,dword ptr [EBP + 0xfffffdc8]
MOV EDX,dword ptr [EBP + 0xfffffdc0]
ADD EAX,EDX
CMP ECX,0x4
JNC 0x000211a4
TEST ECX,ECX
JZ 0x000210e3
MOV EBX,dword ptr [EBP + 0xfffffdd0]
MOVZX EBX,byte ptr [EBX]
MOV byte ptr [EAX],BL
TEST CL,0x2
JNZ 0x0002144b
MOV ESI,dword ptr [EBP + 0xfffffdd4]
MOV EDI,dword ptr [EBP + 0xfffffdb8]
ADD ESP,0xc
MOV EBX,dword ptr [EBP + 0xfffffdcc]
MOV EAX,dword ptr [ESI + 0x8]
LEA EBX,[EBX + EDI*0x1 + 0x3]
MOV EDI,0x1
MOV ECX,dword ptr [EAX]
PUSH EBX
PUSH EDX
PUSH EAX
CALL dword ptr [ECX + 0x8]
MOV dword ptr [ESI + 0x44],0x7
ADD ESP,0x10
JMP 0x00020af9
MOVSX EAX,byte ptr [EBP + 0xfffffddf]
TEST AL,AL
JNZ 0x0002130a
MOVZX EAX,byte ptr [EBP + 0xfffffde1]
CMP AL,0x3
JZ 0x000212fb
CMP AL,0x4
JZ 0x00021294
CMP AL,0x1
JZ 0x0002125e
MOV EAX,dword ptr [EBP + 0xfffffdd4]
LEA ECX,[EBX + 0xfffc2a08]
MOV EAX,dword ptr [EAX + 0xc]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
JMP 0x00020af4
SUB ESP,0x8
LEA EAX,[EBP + 0xfffffde7]
MOV byte ptr [EBP + 0xfffffde6],0x1
PUSH EAX
MOV EAX,dword ptr [EBP + 0xfffffdd4]
PUSH dword ptr [EAX + 0x10]
CALL 0x00084360
ADD ESP,0x10
MOV EAX,0x9
MOV EBX,0x8
MOV ECX,0xa
JMP 0x00020e40
MOV ESI,dword ptr [EBP + 0xfffffdd0]
LEA EDI,[EAX + 0x4]
AND EDI,0xfffffffc
MOV EBX,dword ptr [ESI]
MOV dword ptr [EAX],EBX
MOV EBX,dword ptr [ESI + ECX*0x1 + -0x4]
MOV dword ptr [EAX + ECX*0x1 + -0x4],EBX
SUB EAX,EDI
ADD ECX,EAX
SUB ESI,EAX
SHR ECX,0x2
MOVSD.REP ES:EDI,ESI
JMP 0x000210e3
MOV ECX,0xff
MOV byte ptr [EBP + 0xfffffdb7],0xff
MOV dword ptr [EBP + 0xfffffdb8],0xff
JMP 0x00021061
MOV dword ptr [EBP + 0xfffffdc8],0x102
MOV EDX,0xff
MOV dword ptr [EBP + 0xfffffdc4],0x101
MOV byte ptr [EBP + 0xfffffdc0],0xff
MOV dword ptr [EBP + 0xfffffdcc],0xff
JMP 0x0002101b
SUB ESP,0x8
LEA EAX,[EBP + 0xfffffde7]
MOV byte ptr [EBP + 0xfffffde6],0x4
PUSH EAX
MOV EAX,dword ptr [EBP + 0xfffffdd4]
PUSH dword ptr [EAX + 0x10]
CALL 0x00084360
ADD ESP,0x10
MOV EAX,0x15
MOV EBX,0x14
MOV ECX,0x16
JMP 0x00020e40
MOV EAX,dword ptr [EBP + 0xfffffdd4]
MOV dword ptr [EAX + 0x44],0x4
JMP 0x00020f13
MOV EDI,0xa
SUB ESP,0xc
PUSH ESI
CALL 0x0001d890
ADD ESP,0x10
CMP EAX,EDI
JL 0x00020af4
PUSH ECX
PUSH ECX
PUSH EDI
PUSH ESI
CALL 0x0001da00
POP EBX
PUSH dword ptr [EBP + 0xfffffdd4]
CALL 0x0001fe90
ADD ESP,0x10
JMP 0x00020af4
MOV EDI,0x16
JMP 0x00021263
MOV EAX,dword ptr [EAX + 0xc]
LEA ECX,[EBX + 0xfffc28c4]
MOV EDX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
PUSH ECX
PUSH EAX
CALL dword ptr [EDX + 0x4]
ADD ESP,0x10
JMP 0x00020af9
MOV EAX,dword ptr [EBP + 0xfffffdd4]
MOV dword ptr [EAX + 0x44],0x5
JMP 0x00020f13
MOV dword ptr [EBP + 0xfffffdc8],0x4
MOV EDX,0x1
MOV dword ptr [EBP + 0xfffffdc4],0x3
MOV byte ptr [EBP + 0xfffffdc0],0x1
MOV dword ptr [EBP + 0xfffffdcc],0x1
JMP 0x0002101b
MOVZX EDI,byte ptr [EBP + 0xfffffde2]
ADD EDI,0x6
JMP 0x00021263
LEA EDX,[EBP + 0xfffffde3]
LEA ESI,[EBX + 0xfffc2c0f]
MOV ECX,0xe
MOV EDI,EDX
MOVSB.REP ES:EDI,ESI
LEA ECX,[EAX + -0x1]
CMP CL,0x7
JA 0x0002141c
MOVZX EAX,CL
MOV ESI,dword ptr [EBX + EAX*0x4 + 0xfffc2d1c]
ADD ESI,EBX
JMP ESI
MOV EAX,dword ptr [EBP + 0xfffffdd4]
MOV EAX,dword ptr [EAX + 0xc]
MOV ECX,dword ptr [EAX]
PUSH 0x0
PUSH 0x1f40
PUSH EDX
PUSH EAX
CALL dword ptr [ECX + 0x4]
ADD ESP,0x10
JMP 0x00020af4
CALL 0x0008d800
SUB ESP,0xc
MOV dword ptr [EBP + 0xfffffdd0],EDX
PUSH EAX
LEA EAX,[EBX + 0xfffc29e4]
PUSH EAX
LEA EAX,[EBP + 0xfffffdf0]
PUSH -0x1
PUSH 0x1
PUSH EAX
CALL 0x000148b0
ADD ESP,0x20
MOV EDX,dword ptr [EBP + 0xfffffdd0]
JMP 0x0002134e
MOV EBX,dword ptr [EBP + 0xfffffdd0]
MOVZX EBX,word ptr [EBX + ECX*0x1 + -0x2]
MOV word ptr [EAX + ECX*0x1 + -0x2],BX
JMP 0x000210e3
LEA EAX,[EBX + 0xfffc2d3c]
PUSH EAX
LEA EAX,[EBX + 0xfffd1696]
PUSH 0x46a
PUSH EAX
LEA EAX,[EBX + 0xfffc2bf9]
PUSH EAX
CALL 0x00014880
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_00020a80(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }\n  return iVar9;\n}\n\n" comment (function_definition "int FUN_00020a80(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }\n  return iVar9;\n}" primitive_type (function_declarator "FUN_00020a80(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }\n  return iVar9;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "undefined1 local_24d;" type_identifier identifier ;) (declaration "uint local_24c;" type_identifier identifier ;) (declaration "undefined1 local_244;" type_identifier identifier ;) (declaration "int local_240;" primitive_type identifier ;) (declaration "int local_23c;" primitive_type identifier ;) (declaration "size_t local_238;" primitive_type identifier ;) (declaration "int local_22c;" primitive_type identifier ;) (declaration "char local_226;" primitive_type identifier ;) (declaration "char local_225 [4];" primitive_type (array_declarator "local_225 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 local_221;" type_identifier identifier ;) (declaration "undefined2 uStack_220;" type_identifier identifier ;) (declaration "undefined1 local_21e;" type_identifier identifier ;) (declaration "char local_21d [9];" primitive_type (array_declarator "local_21d [9]" identifier [ number_literal ]) ;) (declaration "char local_214 [500];" primitive_type (array_declarator "local_214 [500]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x20a8b;" (assignment_expression "uStack_14 = 0x20a8b" identifier = number_literal) ;) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" 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) ))))) ;) (if_statement "if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" { (expression_statement "_local_221 = CONCAT21(uStack_220,5);" (assignment_expression "_local_221 = CONCAT21(uStack_220,5)" identifier = (call_expression "CONCAT21(uStack_220,5)" identifier (argument_list "(uStack_220,5)" ( identifier , number_literal )))) ;) (expression_statement "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);" (assignment_expression "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x10)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (expression_statement "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);" (assignment_expression "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x11)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (if_statement "if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" if (parenthesized_expression "((*pcVar4 == '\0') && (*pcVar5 == '\0'))" ( (binary_expression "(*pcVar4 == '\0') && (*pcVar5 == '\0')" (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*pcVar5 == '\0')" ( (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }" { (expression_statement "local_22c = 3;" (assignment_expression "local_22c = 3" identifier = number_literal) ;) (expression_statement "_local_221 = CONCAT21(1,local_221);" (assignment_expression "_local_221 = CONCAT21(1,local_221)" identifier = (call_expression "CONCAT21(1,local_221)" identifier (argument_list "(1,local_221)" ( number_literal , identifier )))) ;) }) (else_clause "else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" else (compound_statement "{\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" { (expression_statement "_local_221 = _local_221 & 0xffff;" (assignment_expression "_local_221 = _local_221 & 0xffff" identifier = (binary_expression "_local_221 & 0xffff" identifier & number_literal)) ;) (expression_statement "local_22c = 3;" (assignment_expression "local_22c = 3" identifier = number_literal) ;) (expression_statement "FUN_0001a140(&local_221,&local_22c);" (call_expression "FUN_0001a140(&local_221,&local_22c)" identifier (argument_list "(&local_221,&local_22c)" ( (pointer_expression "&local_221" & identifier) , (pointer_expression "&local_22c" & identifier) ))) ;) (expression_statement "(&local_221)[local_22c] = 2;" (assignment_expression "(&local_221)[local_22c] = 2" (subscript_expression "(&local_221)[local_22c]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = number_literal) ;) (expression_statement "_local_221 = CONCAT11((char)local_22c + -1,local_221);" (assignment_expression "_local_221 = CONCAT11((char)local_22c + -1,local_221)" identifier = (call_expression "CONCAT11((char)local_22c + -1,local_221)" identifier (argument_list "((char)local_22c + -1,local_221)" ( (binary_expression "(char)local_22c + -1" (cast_expression "(char)local_22c" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) , identifier )))) ;) (expression_statement "local_22c = local_22c + 1;" (assignment_expression "local_22c = local_22c + 1" identifier = (binary_expression "local_22c + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" ( (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 8),&local_221,local_22c)" ( (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58))" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) (compound_statement "{\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));" (assignment_expression "iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 0x10))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 0x10)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 0x10)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 0x10)" ( (binary_expression "**(int **)(param_1 + 0xc) + 0x10" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x70)" * (cast_expression "(undefined4 *)(param_1 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) )))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }" { (if_statement "if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }" if (parenthesized_expression "(iVar9 == 1)" ( (binary_expression "iVar9 == 1" identifier == number_literal) )) (compound_statement "{\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }" { (expression_statement "iVar3 = param_1 + 0x34;" (assignment_expression "iVar3 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (expression_statement "iVar7 = FUN_0001d890(iVar3);" (assignment_expression "iVar7 = FUN_0001d890(iVar3)" identifier = (call_expression "FUN_0001d890(iVar3)" identifier (argument_list "(iVar3)" ( identifier )))) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (if_statement "if (iVar7 < 2) goto LAB_00020af9;" if (parenthesized_expression "(iVar7 < 2)" ( (binary_expression "iVar7 < 2" identifier < number_literal) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (expression_statement "FUN_0001dae0(iVar3,&local_221,2);" (call_expression "FUN_0001dae0(iVar3,&local_221,2)" identifier (argument_list "(iVar3,&local_221,2)" ( identifier , (pointer_expression "&local_221" & identifier) , number_literal ))) ;) (if_statement "if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }" if (parenthesized_expression "(local_221 != '\x05')" ( (binary_expression "local_221 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy returned unexpected version"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" if (parenthesized_expression "((char)uStack_220 == '\0')" ( (binary_expression "(char)uStack_220 == '\0'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" else (if_statement "if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" if (parenthesized_expression "((char)uStack_220 == '\x01')" ( (binary_expression "(char)uStack_220 == '\x01'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" else (if_statement "if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" if (parenthesized_expression "((char)uStack_220 == '\x02')" ( (binary_expression "(char)uStack_220 == '\x02'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 5;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 5" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" else (compound_statement "{\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" { (if_statement "if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" if (parenthesized_expression "((char)uStack_220 != '\x03')" ( (binary_expression "(char)uStack_220 != '\x03'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy did not accept our authentication"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 6;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 6" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }))))))) (expression_statement "FUN_0001da00(iVar3,2);" (call_expression "FUN_0001da00(iVar3,2)" identifier (argument_list "(iVar3,2)" ( identifier , number_literal ))) ;) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" if (parenthesized_expression "(iVar9 == 7)" ( (binary_expression "iVar9 == 7" identifier == number_literal) )) (compound_statement "{\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }" { (expression_statement "iVar9 = param_1 + 0x34;" (assignment_expression "iVar9 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001d890(iVar9);" (assignment_expression "iVar3 = FUN_0001d890(iVar9)" identifier = (call_expression "FUN_0001d890(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (if_statement "if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" if (parenthesized_expression "(1 < iVar3)" ( (binary_expression "1 < iVar3" number_literal < identifier) )) (compound_statement "{\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" { (expression_statement "FUN_0001dae0(iVar9,&local_221,2);" (call_expression "FUN_0001dae0(iVar9,&local_221,2)" identifier (argument_list "(iVar9,&local_221,2)" ( identifier , (pointer_expression "&local_221" & identifier) , number_literal ))) ;) (if_statement "if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" if (parenthesized_expression "(local_221 == '\x01')" ( (binary_expression "local_221 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }" { (if_statement "if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }" if (parenthesized_expression "((char)uStack_220 == '\0')" ( (binary_expression "(char)uStack_220 == '\0'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }" { (expression_statement "FUN_0001da00(iVar9,2);" (call_expression "FUN_0001da00(iVar9,2)" identifier (argument_list "(iVar9,2)" ( identifier , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00020dd0;" goto statement_identifier ;) })) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy refused password authentication"" " string_content ") , number_literal , number_literal ))) ;) }) (else_clause "else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" else (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS password subnegotiation contained wrong version number"" " string_content ") , number_literal , number_literal ))) ;) }))) })) }) (else_clause "else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" else (compound_statement "{\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" { (if_statement "if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }" if (parenthesized_expression "(iVar9 == 8)" ( (binary_expression "iVar9 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }" { (expression_statement "iVar9 = FUN_0001a160(param_1);" (assignment_expression "iVar9 = FUN_0001a160(param_1)" identifier = (call_expression "FUN_0001a160(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar9 != 0) goto LAB_00020af9;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }" if (parenthesized_expression "(iVar9 == 2)" ( (binary_expression "iVar9 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }" { (labeled_statement "LAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));" statement_identifier : (expression_statement "iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));" (assignment_expression "iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10))" identifier = (call_expression "FUN_00084330(*(undefined4 *)(param_1 + 0x10))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) )))) ;)) (if_statement "if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" if (parenthesized_expression "(iVar9 == 1)" ( (binary_expression "iVar9 == 1" identifier == number_literal) )) (compound_statement "{\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }" { (expression_statement "local_21e = 1;" (assignment_expression "local_21e = 1" identifier = number_literal) ;) (expression_statement "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);" (call_expression "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" identifier = number_literal) ;) (expression_statement "iVar7 = 8;" (assignment_expression "iVar7 = 8" identifier = number_literal) ;) (expression_statement "iVar3 = 10;" (assignment_expression "iVar3 = 10" identifier = number_literal) ;) }) (else_clause "else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" else (if_statement "if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" if (parenthesized_expression "(iVar9 == 2)" ( (binary_expression "iVar9 == 2" identifier == number_literal) )) (compound_statement "{\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }" { (expression_statement "local_21e = 4;" (assignment_expression "local_21e = 4" identifier = number_literal) ;) (expression_statement "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);" (call_expression "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar2 = 0x15;" (assignment_expression "iVar2 = 0x15" identifier = number_literal) ;) (expression_statement "iVar7 = 0x14;" (assignment_expression "iVar7 = 0x14" identifier = number_literal) ;) (expression_statement "iVar3 = 0x16;" (assignment_expression "iVar3 = 0x16" identifier = number_literal) ;) }) (else_clause "else {\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" else (compound_statement "{\n          if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" { (if_statement "if (iVar9 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" if (parenthesized_expression "(iVar9 != 3)" ( (binary_expression "iVar9 != 3" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" { comment (expression_statement "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");" (call_expression "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" identifier (argument_list "("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" ( (string_literal ""type == ADDRTYPE_NAME"" " string_content ") , (string_literal ""proxy.c"" " string_content ") , number_literal , (string_literal ""proxy_socks5_negotiate"" " string_content ") ))) ;) })) (expression_statement "local_21e = 3;" (assignment_expression "local_21e = 3" identifier = number_literal) ;) (expression_statement "FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);" (call_expression "FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (binary_expression "local_21d + 1" identifier + number_literal) , number_literal ))) ;) (expression_statement "sVar6 = strlen(local_21d + 1);" (assignment_expression "sVar6 = strlen(local_21d + 1)" identifier = (call_expression "strlen(local_21d + 1)" identifier (argument_list "(local_21d + 1)" ( (binary_expression "local_21d + 1" identifier + number_literal) )))) ;) (expression_statement "local_21d[0] = (char)sVar6;" (assignment_expression "local_21d[0] = (char)sVar6" (subscript_expression "local_21d[0]" identifier [ number_literal ]) = (cast_expression "(char)sVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar2 = (int)local_21d[0];" (assignment_expression "iVar2 = (int)local_21d[0]" identifier = (cast_expression "(int)local_21d[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_21d[0]" identifier [ number_literal ]))) ;) (expression_statement "iVar3 = iVar2 + 7;" (assignment_expression "iVar3 = iVar2 + 7" identifier = (binary_expression "iVar2 + 7" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar2 + 5;" (assignment_expression "iVar7 = iVar2 + 5" identifier = (binary_expression "iVar2 + 5" identifier + number_literal)) ;) (expression_statement "iVar2 = iVar2 + 6;" (assignment_expression "iVar2 = iVar2 + 6" identifier = (binary_expression "iVar2 + 6" identifier + number_literal)) ;) }))))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "_local_221 = 0x105;" (assignment_expression "_local_221 = 0x105" identifier = number_literal) ;) (expression_statement "uVar12 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar12 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(&local_221)[iVar7] = (char)((uint)uVar12 >> 8);" (assignment_expression "(&local_221)[iVar7] = (char)((uint)uVar12 >> 8)" (subscript_expression "(&local_221)[iVar7]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = (cast_expression "(char)((uint)uVar12 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar12 >> 8)" ( (binary_expression "(uint)uVar12 >> 8" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "(&local_221)[iVar2] = (char)uVar12;" (assignment_expression "(&local_221)[iVar2] = (char)uVar12" (subscript_expression "(&local_221)[iVar2]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" ( (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 8),&local_221,iVar3)" ( (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }" if (parenthesized_expression "(iVar9 != 3)" ( (binary_expression "iVar9 != 3" identifier != number_literal) )) (compound_statement "{\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }" { (if_statement "if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" if (parenthesized_expression "(iVar9 == 4)" ( (binary_expression "iVar9 == 4" identifier == number_literal) )) (compound_statement "{\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" { (expression_statement "pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";" (assignment_expression "pcVar4 = "Proxy error: We don\'t support GSSAPI authentication"" identifier = (string_literal ""Proxy error: We don\'t support GSSAPI authentication"" " string_content escape_sequence string_content ")) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" identifier = (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar12 = 8000;" (assignment_expression "uVar12 = 8000" identifier = number_literal) ;) }) (else_clause "else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" else (compound_statement "{\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" { (if_statement "if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" if (parenthesized_expression "(iVar9 != 5)" ( (binary_expression "iVar9 != 5" identifier != number_literal) )) (compound_statement "{\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" { (if_statement "if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;" if (parenthesized_expression "((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0))" ( (binary_expression "(iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)" (parenthesized_expression "(iVar9 == 6)" ( (binary_expression "iVar9 == 6" identifier == number_literal) )) && (parenthesized_expression "(iVar9 = FUN_0001a470(param_1), iVar9 != 0)" ( (comma_expression "iVar9 = FUN_0001a470(param_1), iVar9 != 0" (assignment_expression "iVar9 = FUN_0001a470(param_1)" identifier = (call_expression "FUN_0001a470(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (goto_statement "goto LAB_00020ad4;" goto statement_identifier ;) })) (expression_statement "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);" (assignment_expression "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x10)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (expression_statement "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);" (assignment_expression "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x11)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (if_statement "if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }" if (parenthesized_expression "((*pcVar4 != '\0') || (*pcVar5 != '\0'))" ( (binary_expression "(*pcVar4 != '\0') || (*pcVar5 != '\0')" (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }" { (expression_statement "local_238 = strlen(pcVar4);" (assignment_expression "local_238 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (if_statement "if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" if (parenthesized_expression "(local_238 < 0x100)" ( (binary_expression "local_238 < 0x100" identifier < number_literal) )) (compound_statement "{\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }" { (if_statement "if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" if (parenthesized_expression "(local_238 == 0)" ( (binary_expression "local_238 == 0" identifier == number_literal) )) (compound_statement "{\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }" { (expression_statement "local_23c = 4;" (assignment_expression "local_23c = 4" identifier = number_literal) ;) (expression_statement "local_240 = 3;" (assignment_expression "local_240 = 3" identifier = number_literal) ;) (expression_statement "local_244 = 1;" (assignment_expression "local_244 = 1" identifier = number_literal) ;) (expression_statement "local_238 = 1;" (assignment_expression "local_238 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" else (compound_statement "{\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" { (expression_statement "local_244 = (undefined1)local_238;" (assignment_expression "local_244 = (undefined1)local_238" identifier = (cast_expression "(undefined1)local_238" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "local_240 = local_238 + 2;" (assignment_expression "local_240 = local_238 + 2" identifier = (binary_expression "local_238 + 2" identifier + number_literal)) ;) (expression_statement "local_23c = local_238 + 3;" (assignment_expression "local_23c = local_238 + 3" identifier = (binary_expression "local_238 + 3" identifier + number_literal)) ;) }))) }) (else_clause "else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" else (compound_statement "{\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" { (expression_statement "local_23c = 0x102;" (assignment_expression "local_23c = 0x102" identifier = number_literal) ;) (expression_statement "local_240 = 0x101;" (assignment_expression "local_240 = 0x101" identifier = number_literal) ;) (expression_statement "local_244 = 0xff;" (assignment_expression "local_244 = 0xff" identifier = number_literal) ;) (expression_statement "local_238 = 0xff;" (assignment_expression "local_238 = 0xff" identifier = number_literal) ;) }))) (expression_statement "sVar6 = strlen(pcVar5);" (assignment_expression "sVar6 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (if_statement "if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" if (parenthesized_expression "(sVar6 < 0x100)" ( (binary_expression "sVar6 < 0x100" identifier < number_literal) )) (compound_statement "{\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }" { (expression_statement "local_24d = 1;" (assignment_expression "local_24d = 1" identifier = number_literal) ;) (if_statement "if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                local_24d = (undefined1)sVar6;\n              }" { (expression_statement "local_24d = (undefined1)sVar6;" (assignment_expression "local_24d = (undefined1)sVar6" identifier = (cast_expression "(undefined1)sVar6" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) })) (expression_statement "local_24c = 1;" (assignment_expression "local_24c = 1" identifier = number_literal) ;) (if_statement "if (sVar6 != 0) {\n                local_24c = sVar6;\n              }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                local_24c = sVar6;\n              }" { (expression_statement "local_24c = sVar6;" (assignment_expression "local_24c = sVar6" identifier = identifier) ;) })) }) (else_clause "else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" else (compound_statement "{\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" { (expression_statement "local_24d = 0xff;" (assignment_expression "local_24d = 0xff" identifier = number_literal) ;) (expression_statement "local_24c = 0xff;" (assignment_expression "local_24c = 0xff" identifier = number_literal) ;) }))) (expression_statement "_local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);" (assignment_expression "_local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1)" identifier = (call_expression "CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1)" identifier (argument_list "(CONCAT11(uStack_220._1_1_,local_244),1)" ( (call_expression "CONCAT11(uStack_220._1_1_,local_244)" identifier (argument_list "(uStack_220._1_1_,local_244)" ( (field_expression "uStack_220._1_1_" identifier . field_identifier) , identifier ))) , number_literal )))) ;) (expression_statement "__memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);" (call_expression "__memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff)" identifier (argument_list "((int)&uStack_220 + 1,pcVar4,local_238,0x1ff)" ( (binary_expression "(int)&uStack_220 + 1" (cast_expression "(int)&uStack_220" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_220" & identifier)) + number_literal) , identifier , identifier , number_literal ))) ;) (expression_statement "(&local_221)[local_240] = local_24d;" (assignment_expression "(&local_221)[local_240] = local_24d" (subscript_expression "(&local_221)[local_240]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = identifier) ;) (expression_statement "pcVar4 = &local_221 + local_23c;" (assignment_expression "pcVar4 = &local_221 + local_23c" identifier = (binary_expression "&local_221 + local_23c" (pointer_expression "&local_221" & identifier) + identifier)) ;) (if_statement "if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" if (parenthesized_expression "(local_24c < 4)" ( (binary_expression "local_24c < 4" identifier < number_literal) )) (compound_statement "{\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }" { (if_statement "if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }" if (parenthesized_expression "((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0))" ( (binary_expression "(local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)" (parenthesized_expression "(local_24c != 0)" ( (binary_expression "local_24c != 0" identifier != number_literal) )) && (parenthesized_expression "(*pcVar4 = *pcVar5, (local_24c & 2) != 0)" ( (comma_expression "*pcVar4 = *pcVar5, (local_24c & 2) != 0" (assignment_expression "*pcVar4 = *pcVar5" (pointer_expression "*pcVar4" * identifier) = (pointer_expression "*pcVar5" * identifier)) , (binary_expression "(local_24c & 2) != 0" (parenthesized_expression "(local_24c & 2)" ( (binary_expression "local_24c & 2" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }" { (expression_statement "*(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));" (assignment_expression "*(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2))" (pointer_expression "*(undefined2 *)(local_225 + local_24c + local_23c + 2)" * (cast_expression "(undefined2 *)(local_225 + local_24c + local_23c + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_225 + local_24c + local_23c + 2)" ( (binary_expression "local_225 + local_24c + local_23c + 2" (binary_expression "local_225 + local_24c + local_23c" (binary_expression "local_225 + local_24c" identifier + identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined2 *)(pcVar5 + (local_24c - 2))" * (cast_expression "(undefined2 *)(pcVar5 + (local_24c - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + (local_24c - 2))" ( (binary_expression "pcVar5 + (local_24c - 2)" identifier + (parenthesized_expression "(local_24c - 2)" ( (binary_expression "local_24c - 2" identifier - number_literal) ))) ))))) ;) })) }) (else_clause "else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" else (compound_statement "{\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" { (expression_statement "*(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;" (assignment_expression "*(undefined4 *)pcVar4 = *(undefined4 *)pcVar5" (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));" (assignment_expression "*(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4))" (pointer_expression "*(undefined4 *)(local_225 + local_24c + local_23c)" * (cast_expression "(undefined4 *)(local_225 + local_24c + local_23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_225 + local_24c + local_23c)" ( (binary_expression "local_225 + local_24c + local_23c" (binary_expression "local_225 + local_24c" identifier + identifier) + identifier) )))) = (pointer_expression "*(undefined4 *)(pcVar5 + (local_24c - 4))" * (cast_expression "(undefined4 *)(pcVar5 + (local_24c - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + (local_24c - 4))" ( (binary_expression "pcVar5 + (local_24c - 4)" identifier + (parenthesized_expression "(local_24c - 4)" ( (binary_expression "local_24c - 4" identifier - number_literal) ))) ))))) ;) (expression_statement "iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);" (assignment_expression "iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc)" identifier = (binary_expression "(int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc)" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(local_21d + local_23c) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(local_21d + local_23c) & 0xfffffffc)" ( (binary_expression "(uint)(local_21d + local_23c) & 0xfffffffc" (call_expression "(uint)(local_21d + local_23c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_21d + local_23c)" ( (binary_expression "local_21d + local_23c" identifier + identifier) ))) & number_literal) ))))) ;) (expression_statement "pcVar4 = pcVar5 + -iVar9;" (assignment_expression "pcVar4 = pcVar5 + -iVar9" identifier = (binary_expression "pcVar5 + -iVar9" identifier + (unary_expression "-iVar9" - identifier))) ;) (expression_statement "puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);" (assignment_expression "puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(local_21d + local_23c) & 0xfffffffc)" ( (binary_expression "(uint)(local_21d + local_23c) & 0xfffffffc" (call_expression "(uint)(local_21d + local_23c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_21d + local_23c)" ( (binary_expression "local_21d + local_23c" identifier + identifier) ))) & number_literal) )))) ;) (for_statement "for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "uVar8 = local_24c + iVar9 >> 2" identifier = (binary_expression "local_24c + iVar9 >> 2" (binary_expression "local_24c + iVar9" identifier + identifier) >> number_literal)) ; (binary_expression "uVar8 != 0" identifier != number_literal) ; (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ) (compound_statement "{\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*puVar10 = *(undefined4 *)pcVar4;" (assignment_expression "*puVar10 = *(undefined4 *)pcVar4" (pointer_expression "*puVar10" * identifier) = (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "puVar10 = puVar10 + (uint)bVar11 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "puVar10 + (uint)bVar11 * -2 + 1" (binary_expression "puVar10 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" ( (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c)" ( (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , (binary_expression "local_238 + 3 + local_24c" (binary_expression "local_238 + 3" identifier + number_literal) + identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 7;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 7" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (expression_statement "pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";" (assignment_expression "pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!"" identifier = (string_literal ""Proxy error: Server chose username/password authentication but we didn\'t offer it!"" " string_content escape_sequence string_content ")) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" identifier = (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar12 = 8000;" (assignment_expression "uVar12 = 8000" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00020aec;" goto statement_identifier ;) })) (expression_statement "iVar9 = param_1 + 0x34;" (assignment_expression "iVar9 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001d890(iVar9);" (assignment_expression "iVar3 = FUN_0001d890(iVar9)" identifier = (call_expression "FUN_0001d890(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (if_statement "if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" if (parenthesized_expression "(4 < iVar3)" ( (binary_expression "4 < iVar3" number_literal < identifier) )) (compound_statement "{\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" { (expression_statement "FUN_0001dae0(iVar9,&local_226,5);" (call_expression "FUN_0001dae0(iVar9,&local_226,5)" identifier (argument_list "(iVar9,&local_226,5)" ( identifier , (pointer_expression "&local_226" & identifier) , number_literal ))) ;) (if_statement "if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" if (parenthesized_expression "(local_226 == '\x05')" ( (binary_expression "local_226 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }" { (if_statement "if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" if (parenthesized_expression "(local_225[0] == '\0')" ( (binary_expression "local_225[0] == '\0'" (subscript_expression "local_225[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }" { (if_statement "if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" if (parenthesized_expression "(local_225[2] == '\x03')" ( (binary_expression "local_225[2] == '\x03'" (subscript_expression "local_225[2]" identifier [ number_literal ]) == (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n              iVar3 = (byte)local_225[3] + 6;\n            }" { (expression_statement "iVar3 = (byte)local_225[3] + 6;" (assignment_expression "iVar3 = (byte)local_225[3] + 6" identifier = (binary_expression "(byte)local_225[3] + 6" (cast_expression "(byte)local_225[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_225[3]" identifier [ number_literal ])) + number_literal)) ;) }) (else_clause "else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" else (if_statement "if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" if (parenthesized_expression "(local_225[2] == '\x04')" ( (binary_expression "local_225[2] == '\x04'" (subscript_expression "local_225[2]" identifier [ number_literal ]) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n              iVar3 = 0x16;\n            }" { (expression_statement "iVar3 = 0x16;" (assignment_expression "iVar3 = 0x16" identifier = number_literal) ;) }) (else_clause "else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" else (compound_statement "{\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" { (if_statement "if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }" if (parenthesized_expression "(local_225[2] != '\x01')" ( (binary_expression "local_225[2] != '\x01'" (subscript_expression "local_225[2]" identifier [ number_literal ]) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy returned unrecognised address format"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af4;" goto statement_identifier ;) })) (expression_statement "iVar3 = 10;" (assignment_expression "iVar3 = 10" identifier = number_literal) ;) }))))) (expression_statement "iVar7 = FUN_0001d890(iVar9);" (assignment_expression "iVar7 = FUN_0001d890(iVar9)" identifier = (call_expression "FUN_0001d890(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (if_statement "if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }" if (parenthesized_expression "(iVar3 <= iVar7)" ( (binary_expression "iVar3 <= iVar7" identifier <= identifier) )) (compound_statement "{\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }" { (expression_statement "FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);" (call_expression "FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX)" identifier (argument_list "(iVar9,iVar3,extraout_ECX,extraout_ECX)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0001fe90(param_1);" (call_expression "FUN_0001fe90(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) }) (else_clause "else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" else (compound_statement "{\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" { (expression_statement "pcVar4 = "Proxy error: ";" (assignment_expression "pcVar4 = "Proxy error: "" identifier = (string_literal ""Proxy error: "" " string_content ")) ;) (expression_statement "pcVar5 = &local_221;" (assignment_expression "pcVar5 = &local_221" identifier = (pointer_expression "&local_221" & identifier)) ;) (for_statement "for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }" for ( (assignment_expression "iVar9 = 0xe" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (switch_statement "switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }" switch (parenthesized_expression "((int)local_225[0] - 1U & 0xff)" ( (binary_expression "(int)local_225[0] - 1U & 0xff" (binary_expression "(int)local_225[0] - 1U" (cast_expression "(int)local_225[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_225[0]" identifier [ number_literal ])) - number_literal) & number_literal) )) (compound_statement "{\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }" { (case_statement "case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "General SOCKS server failure";" (assignment_expression "pcVar4 = "General SOCKS server failure"" identifier = (string_literal ""General SOCKS server failure"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x1d" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Connection not allowed by ruleset";" (assignment_expression "pcVar4 = "Connection not allowed by ruleset"" identifier = (string_literal ""Connection not allowed by ruleset"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x22" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Network unreachable";" (assignment_expression "pcVar4 = "Network unreachable"" identifier = (string_literal ""Network unreachable"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" for ( (assignment_expression "iVar9 = 5" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" { (expression_statement "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;" (assignment_expression "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4" (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Host unreachable";" (assignment_expression "pcVar4 = "Host unreachable"" identifier = (string_literal ""Host unreachable"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x11" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Connection refused";" (assignment_expression "pcVar4 = "Connection refused"" identifier = (string_literal ""Connection refused"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x13" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "TTL expired";" (assignment_expression "pcVar4 = "TTL expired"" identifier = (string_literal ""TTL expired"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" for ( (assignment_expression "iVar9 = 3" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" { (expression_statement "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;" (assignment_expression "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4" (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) })) (break_statement "break;" break ;)) (case_statement "case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Command not supported";" (assignment_expression "pcVar4 = "Command not supported"" identifier = (string_literal ""Command not supported"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x16" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Address type not supported";" (assignment_expression "pcVar4 = "Address type not supported"" identifier = (string_literal ""Address type not supported"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x1b" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);" default : (expression_statement "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);" (call_expression "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0])" identifier (argument_list "(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0])" ( identifier , number_literal , number_literal , (string_literal ""Unrecognised SOCKS error code %d"" " string_content ") , (cast_expression "(int)local_225[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_225[0]" identifier [ number_literal ])) ))) ;)) })) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),&local_221,8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , number_literal , number_literal ))) ;) }))) }) (else_clause "else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" else (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy returned wrong version number"" " string_content ") , number_literal , number_literal ))) ;) }))) })) }))) }) (else_clause "else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" else (compound_statement "{\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" { (labeled_statement "LAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";" statement_identifier : (expression_statement "pcVar4 = "Proxy error: Unexpected proxy error";" (assignment_expression "pcVar4 = "Proxy error: Unexpected proxy error"" identifier = (string_literal ""Proxy error: Unexpected proxy error"" " string_content ")) ;)) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" identifier = (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar12 = 0x1f41;" (assignment_expression "uVar12 = 0x1f41" identifier = number_literal) ;) (labeled_statement "LAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);" statement_identifier : (expression_statement "(**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);" (call_expression "(**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0)" (parenthesized_expression "(**(code **)(iVar9 + 4))" ( (pointer_expression "**(code **)(iVar9 + 4)" * (pointer_expression "*(code **)(iVar9 + 4)" * (cast_expression "(code **)(iVar9 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) )) (argument_list "(piVar1,pcVar4,uVar12,0)" ( identifier , identifier , identifier , number_literal ))) ;)) }))) (labeled_statement "LAB_00020af4:\n  iVar9 = 1;" statement_identifier : (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }" { comment (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint proxy_socks5_negotiate(Proxy_Socket p,int change)\n\n{\n  bufchain *pbVar1;\n  int iVar2;\n  Plug pppVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  size_t sVar7;\n  int iVar8;\n  uint uVar9;\n  plug_function_table *ppVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  int iVar14;\n  char local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int len;\n  char data_2 [5];\n  char command [5];\n  char local_21c [8];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar13 = 0;\n  uStack_14 = 0x20a8b;\n  iVar14 = p->state;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar14 == -1) {\n    command[0] = '\x05';\n    pcVar5 = conf_get_str(p->conf,0x10);\n    pcVar6 = conf_get_str(p->conf,0x11);\n    if ((*pcVar5 == '\0') && (*pcVar6 == '\0')) {\n      len = 3;\n      command[1] = '\x01';\n      command[2] = '\0';\n    }\n    else {\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }\n    (*(*p->sub_socket)->write)(p->sub_socket,command,len);\n    p->state = 1;\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }\n  if (change == 0) {\n    iVar14 = 0;\n    (*(*p->plug)->closing)\n              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);\n    goto LAB_00020af9;\n  }\n  if (change == 1) {\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }\n  if (change == 3) {\n    iVar14 = (*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);\n    goto LAB_00020af9;\n  }\n  if (change == 2) {\n    if (iVar14 == 1) {\n      pbVar1 = &p->pending_input_data;\n      iVar8 = bufchain_size(pbVar1);\n      iVar14 = 1;\n      if (iVar8 < 2) goto LAB_00020af9;\n      bufchain_fetch(pbVar1,command,2);\n      if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }\n      if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }\n      bufchain_consume(pbVar1,2);\n      iVar14 = p->state;\n    }\n    if (iVar14 == 7) {\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar5 = "Proxy error: Unexpected proxy error";\n    pppVar3 = p->plug;\n    ppVar10 = *pppVar3;\n    iVar14 = 0x1f41;\nLAB_00020aec:\n    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);\n  }\nLAB_00020af4:\n  iVar14 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar14;\n}\n\n" comment comment (function_definition "int proxy_socks5_negotiate(Proxy_Socket p,int change)\n\n{\n  bufchain *pbVar1;\n  int iVar2;\n  Plug pppVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  size_t sVar7;\n  int iVar8;\n  uint uVar9;\n  plug_function_table *ppVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  int iVar14;\n  char local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int len;\n  char data_2 [5];\n  char command [5];\n  char local_21c [8];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar13 = 0;\n  uStack_14 = 0x20a8b;\n  iVar14 = p->state;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar14 == -1) {\n    command[0] = '\x05';\n    pcVar5 = conf_get_str(p->conf,0x10);\n    pcVar6 = conf_get_str(p->conf,0x11);\n    if ((*pcVar5 == '\0') && (*pcVar6 == '\0')) {\n      len = 3;\n      command[1] = '\x01';\n      command[2] = '\0';\n    }\n    else {\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }\n    (*(*p->sub_socket)->write)(p->sub_socket,command,len);\n    p->state = 1;\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }\n  if (change == 0) {\n    iVar14 = 0;\n    (*(*p->plug)->closing)\n              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);\n    goto LAB_00020af9;\n  }\n  if (change == 1) {\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }\n  if (change == 3) {\n    iVar14 = (*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);\n    goto LAB_00020af9;\n  }\n  if (change == 2) {\n    if (iVar14 == 1) {\n      pbVar1 = &p->pending_input_data;\n      iVar8 = bufchain_size(pbVar1);\n      iVar14 = 1;\n      if (iVar8 < 2) goto LAB_00020af9;\n      bufchain_fetch(pbVar1,command,2);\n      if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }\n      if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }\n      bufchain_consume(pbVar1,2);\n      iVar14 = p->state;\n    }\n    if (iVar14 == 7) {\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar5 = "Proxy error: Unexpected proxy error";\n    pppVar3 = p->plug;\n    ppVar10 = *pppVar3;\n    iVar14 = 0x1f41;\nLAB_00020aec:\n    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);\n  }\nLAB_00020af4:\n  iVar14 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar14;\n}" primitive_type (function_declarator "proxy_socks5_negotiate(Proxy_Socket p,int change)" identifier (parameter_list "(Proxy_Socket p,int change)" ( (parameter_declaration "Proxy_Socket p" type_identifier identifier) , (parameter_declaration "int change" primitive_type identifier) ))) (compound_statement "{\n  bufchain *pbVar1;\n  int iVar2;\n  Plug pppVar3;\n  int iVar4;\n  char *pcVar5;\n  char *pcVar6;\n  size_t sVar7;\n  int iVar8;\n  uint uVar9;\n  plug_function_table *ppVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  int iVar14;\n  char local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int len;\n  char data_2 [5];\n  char command [5];\n  char local_21c [8];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar13 = 0;\n  uStack_14 = 0x20a8b;\n  iVar14 = p->state;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar14 == -1) {\n    command[0] = '\x05';\n    pcVar5 = conf_get_str(p->conf,0x10);\n    pcVar6 = conf_get_str(p->conf,0x11);\n    if ((*pcVar5 == '\0') && (*pcVar6 == '\0')) {\n      len = 3;\n      command[1] = '\x01';\n      command[2] = '\0';\n    }\n    else {\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }\n    (*(*p->sub_socket)->write)(p->sub_socket,command,len);\n    p->state = 1;\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }\n  if (change == 0) {\n    iVar14 = 0;\n    (*(*p->plug)->closing)\n              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);\n    goto LAB_00020af9;\n  }\n  if (change == 1) {\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }\n  if (change == 3) {\n    iVar14 = (*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);\n    goto LAB_00020af9;\n  }\n  if (change == 2) {\n    if (iVar14 == 1) {\n      pbVar1 = &p->pending_input_data;\n      iVar8 = bufchain_size(pbVar1);\n      iVar14 = 1;\n      if (iVar8 < 2) goto LAB_00020af9;\n      bufchain_fetch(pbVar1,command,2);\n      if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }\n      if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }\n      bufchain_consume(pbVar1,2);\n      iVar14 = p->state;\n    }\n    if (iVar14 == 7) {\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar5 = "Proxy error: Unexpected proxy error";\n    pppVar3 = p->plug;\n    ppVar10 = *pppVar3;\n    iVar14 = 0x1f41;\nLAB_00020aec:\n    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);\n  }\nLAB_00020af4:\n  iVar14 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar14;\n}" { (declaration "bufchain *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Plug pppVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "plug_function_table *ppVar10;" type_identifier (pointer_declarator "*ppVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "char local_24d;" primitive_type identifier ;) (declaration "uint local_24c;" type_identifier identifier ;) (declaration "undefined1 local_244;" type_identifier identifier ;) (declaration "int local_240;" primitive_type identifier ;) (declaration "int local_23c;" primitive_type identifier ;) (declaration "size_t local_238;" primitive_type identifier ;) (declaration "int len;" primitive_type identifier ;) (declaration "char data_2 [5];" primitive_type (array_declarator "data_2 [5]" identifier [ number_literal ]) ;) (declaration "char command [5];" primitive_type (array_declarator "command [5]" identifier [ number_literal ]) ;) (declaration "char local_21c [8];" primitive_type (array_declarator "local_21c [8]" identifier [ number_literal ]) ;) (declaration "char local_214 [500];" primitive_type (array_declarator "local_214 [500]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x20a8b;" (assignment_expression "uStack_14 = 0x20a8b" identifier = number_literal) ;) (expression_statement "iVar14 = p->state;" (assignment_expression "iVar14 = p->state" identifier = (field_expression "p->state" identifier -> field_identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar14 == -1) {\n    command[0] = '\x05';\n    pcVar5 = conf_get_str(p->conf,0x10);\n    pcVar6 = conf_get_str(p->conf,0x11);\n    if ((*pcVar5 == '\0') && (*pcVar6 == '\0')) {\n      len = 3;\n      command[1] = '\x01';\n      command[2] = '\0';\n    }\n    else {\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }\n    (*(*p->sub_socket)->write)(p->sub_socket,command,len);\n    p->state = 1;\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(iVar14 == -1)" ( (binary_expression "iVar14 == -1" identifier == number_literal) )) (compound_statement "{\n    command[0] = '\x05';\n    pcVar5 = conf_get_str(p->conf,0x10);\n    pcVar6 = conf_get_str(p->conf,0x11);\n    if ((*pcVar5 == '\0') && (*pcVar6 == '\0')) {\n      len = 3;\n      command[1] = '\x01';\n      command[2] = '\0';\n    }\n    else {\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }\n    (*(*p->sub_socket)->write)(p->sub_socket,command,len);\n    p->state = 1;\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }" { (expression_statement "command[0] = '\x05';" (assignment_expression "command[0] = '\x05'" (subscript_expression "command[0]" identifier [ number_literal ]) = (char_literal "'\x05'" ' escape_sequence ')) ;) (expression_statement "pcVar5 = conf_get_str(p->conf,0x10);" (assignment_expression "pcVar5 = conf_get_str(p->conf,0x10)" identifier = (call_expression "conf_get_str(p->conf,0x10)" identifier (argument_list "(p->conf,0x10)" ( (field_expression "p->conf" identifier -> field_identifier) , number_literal )))) ;) (expression_statement "pcVar6 = conf_get_str(p->conf,0x11);" (assignment_expression "pcVar6 = conf_get_str(p->conf,0x11)" identifier = (call_expression "conf_get_str(p->conf,0x11)" identifier (argument_list "(p->conf,0x11)" ( (field_expression "p->conf" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if ((*pcVar5 == '\0') && (*pcVar6 == '\0')) {\n      len = 3;\n      command[1] = '\x01';\n      command[2] = '\0';\n    }\n    else {\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }" if (parenthesized_expression "((*pcVar5 == '\0') && (*pcVar6 == '\0'))" ( (binary_expression "(*pcVar5 == '\0') && (*pcVar6 == '\0')" (parenthesized_expression "(*pcVar5 == '\0')" ( (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*pcVar6 == '\0')" ( (binary_expression "*pcVar6 == '\0'" (pointer_expression "*pcVar6" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      len = 3;\n      command[1] = '\x01';\n      command[2] = '\0';\n    }" { (expression_statement "len = 3;" (assignment_expression "len = 3" identifier = number_literal) ;) (expression_statement "command[1] = '\x01';" (assignment_expression "command[1] = '\x01'" (subscript_expression "command[1]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "command[2] = '\0';" (assignment_expression "command[2] = '\0'" (subscript_expression "command[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }" else (compound_statement "{\n      command._0_3_ = command._0_3_ & 0xffff;\n      len = 3;\n      proxy_socks5_offerencryptedauth(command,&len);\n      command[len] = '\x02';\n      command[1] = (char)len + -1;\n      len = len + 1;\n    }" { (expression_statement "command._0_3_ = command._0_3_ & 0xffff;" (assignment_expression "command._0_3_ = command._0_3_ & 0xffff" (field_expression "command._0_3_" identifier . field_identifier) = (binary_expression "command._0_3_ & 0xffff" (field_expression "command._0_3_" identifier . field_identifier) & number_literal)) ;) (expression_statement "len = 3;" (assignment_expression "len = 3" identifier = number_literal) ;) (expression_statement "proxy_socks5_offerencryptedauth(command,&len);" (call_expression "proxy_socks5_offerencryptedauth(command,&len)" identifier (argument_list "(command,&len)" ( identifier , (pointer_expression "&len" & identifier) ))) ;) (expression_statement "command[len] = '\x02';" (assignment_expression "command[len] = '\x02'" (subscript_expression "command[len]" identifier [ identifier ]) = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "command[1] = (char)len + -1;" (assignment_expression "command[1] = (char)len + -1" (subscript_expression "command[1]" identifier [ number_literal ]) = (binary_expression "(char)len + -1" (cast_expression "(char)len" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "len = len + 1;" (assignment_expression "len = len + 1" identifier = (binary_expression "len + 1" identifier + number_literal)) ;) }))) (expression_statement "(*(*p->sub_socket)->write)(p->sub_socket,command,len);" (call_expression "(*(*p->sub_socket)->write)(p->sub_socket,command,len)" (parenthesized_expression "(*(*p->sub_socket)->write)" ( (pointer_expression "*(*p->sub_socket)->write" * (field_expression "(*p->sub_socket)->write" (parenthesized_expression "(*p->sub_socket)" ( (pointer_expression "*p->sub_socket" * (field_expression "p->sub_socket" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->sub_socket,command,len)" ( (field_expression "p->sub_socket" identifier -> field_identifier) , identifier , identifier ))) ;) (expression_statement "p->state = 1;" (assignment_expression "p->state = 1" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (change == 0) {\n    iVar14 = 0;\n    (*(*p->plug)->closing)\n              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(change == 0)" ( (binary_expression "change == 0" identifier == number_literal) )) (compound_statement "{\n    iVar14 = 0;\n    (*(*p->plug)->closing)\n              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "(*(*p->plug)->closing)\n              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);" (call_expression "(*(*p->plug)->closing)\n              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back)" ( (field_expression "p->plug" identifier -> field_identifier) , (field_expression "p->closing_error_msg" identifier -> field_identifier) , (field_expression "p->closing_error_code" identifier -> field_identifier) , (field_expression "p->closing_calling_back" identifier -> field_identifier) ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (change == 1) {\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(change == 1)" ( (binary_expression "change == 1" identifier == number_literal) )) (compound_statement "{\n    iVar14 = 0;\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (change == 3) {\n    iVar14 = (*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(change == 3)" ( (binary_expression "change == 3" identifier == number_literal) )) (compound_statement "{\n    iVar14 = (*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar14 = (*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);" (assignment_expression "iVar14 = (*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p)" identifier = (call_expression "(*(*p->plug)->accepting)\n                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p)" (parenthesized_expression "(*(*p->plug)->accepting)" ( (pointer_expression "*(*p->plug)->accepting" * (field_expression "(*p->plug)->accepting" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p)" ( (field_expression "p->plug" identifier -> field_identifier) , (field_expression "p->accepting_constructor" identifier -> field_identifier) , (field_expression "(accept_ctx_t)(p->accepting_ctx).p" (call_expression "(accept_ctx_t)(p->accepting_ctx)" (parenthesized_expression "(accept_ctx_t)" ( identifier )) (argument_list "(p->accepting_ctx)" ( (field_expression "p->accepting_ctx" identifier -> field_identifier) ))) . field_identifier) )))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (change == 2) {\n    if (iVar14 == 1) {\n      pbVar1 = &p->pending_input_data;\n      iVar8 = bufchain_size(pbVar1);\n      iVar14 = 1;\n      if (iVar8 < 2) goto LAB_00020af9;\n      bufchain_fetch(pbVar1,command,2);\n      if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }\n      if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }\n      bufchain_consume(pbVar1,2);\n      iVar14 = p->state;\n    }\n    if (iVar14 == 7) {\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar5 = "Proxy error: Unexpected proxy error";\n    pppVar3 = p->plug;\n    ppVar10 = *pppVar3;\n    iVar14 = 0x1f41;\nLAB_00020aec:\n    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);\n  }" if (parenthesized_expression "(change == 2)" ( (binary_expression "change == 2" identifier == number_literal) )) (compound_statement "{\n    if (iVar14 == 1) {\n      pbVar1 = &p->pending_input_data;\n      iVar8 = bufchain_size(pbVar1);\n      iVar14 = 1;\n      if (iVar8 < 2) goto LAB_00020af9;\n      bufchain_fetch(pbVar1,command,2);\n      if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }\n      if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }\n      bufchain_consume(pbVar1,2);\n      iVar14 = p->state;\n    }\n    if (iVar14 == 7) {\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }" { (if_statement "if (iVar14 == 1) {\n      pbVar1 = &p->pending_input_data;\n      iVar8 = bufchain_size(pbVar1);\n      iVar14 = 1;\n      if (iVar8 < 2) goto LAB_00020af9;\n      bufchain_fetch(pbVar1,command,2);\n      if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }\n      if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }\n      bufchain_consume(pbVar1,2);\n      iVar14 = p->state;\n    }" if (parenthesized_expression "(iVar14 == 1)" ( (binary_expression "iVar14 == 1" identifier == number_literal) )) (compound_statement "{\n      pbVar1 = &p->pending_input_data;\n      iVar8 = bufchain_size(pbVar1);\n      iVar14 = 1;\n      if (iVar8 < 2) goto LAB_00020af9;\n      bufchain_fetch(pbVar1,command,2);\n      if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }\n      if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }\n      bufchain_consume(pbVar1,2);\n      iVar14 = p->state;\n    }" { (expression_statement "pbVar1 = &p->pending_input_data;" (assignment_expression "pbVar1 = &p->pending_input_data" identifier = (pointer_expression "&p->pending_input_data" & (field_expression "p->pending_input_data" identifier -> field_identifier))) ;) (expression_statement "iVar8 = bufchain_size(pbVar1);" (assignment_expression "iVar8 = bufchain_size(pbVar1)" identifier = (call_expression "bufchain_size(pbVar1)" identifier (argument_list "(pbVar1)" ( identifier )))) ;) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) (if_statement "if (iVar8 < 2) goto LAB_00020af9;" if (parenthesized_expression "(iVar8 < 2)" ( (binary_expression "iVar8 < 2" identifier < number_literal) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (expression_statement "bufchain_fetch(pbVar1,command,2);" (call_expression "bufchain_fetch(pbVar1,command,2)" identifier (argument_list "(pbVar1,command,2)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (command[0] != '\x05') {\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }" if (parenthesized_expression "(command[0] != '\x05')" ( (binary_expression "command[0] != '\x05'" (subscript_expression "command[0]" identifier [ number_literal ]) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n        (*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);\n        goto LAB_00020af9;\n      }" { (expression_statement "(*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);" (call_expression "(*(*p->plug)->closing)\n                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0)" ( (field_expression "p->plug" identifier -> field_identifier) , (string_literal ""Proxy error: SOCKS proxy returned unexpected version"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (command[1] == '\0') {\n        p->state = 2;\n      }\n      else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }" if (parenthesized_expression "(command[1] == '\0')" ( (binary_expression "command[1] == '\0'" (subscript_expression "command[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        p->state = 2;\n      }" { (expression_statement "p->state = 2;" (assignment_expression "p->state = 2" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }" else (if_statement "if (command[1] == '\x01') {\n        p->state = 4;\n      }\n      else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }" if (parenthesized_expression "(command[1] == '\x01')" ( (binary_expression "command[1] == '\x01'" (subscript_expression "command[1]" identifier [ number_literal ]) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        p->state = 4;\n      }" { (expression_statement "p->state = 4;" (assignment_expression "p->state = 4" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }" else (if_statement "if (command[1] == '\x02') {\n        p->state = 5;\n      }\n      else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }" if (parenthesized_expression "(command[1] == '\x02')" ( (binary_expression "command[1] == '\x02'" (subscript_expression "command[1]" identifier [ number_literal ]) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        p->state = 5;\n      }" { (expression_statement "p->state = 5;" (assignment_expression "p->state = 5" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }" else (compound_statement "{\n        if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        p->state = 6;\n      }" { (if_statement "if (command[1] != '\x03') {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" if (parenthesized_expression "(command[1] != '\x03')" ( (binary_expression "command[1] != '\x03'" (subscript_expression "command[1]" identifier [ number_literal ]) != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" { (expression_statement "(*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);" (call_expression "(*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0)" ( (field_expression "p->plug" identifier -> field_identifier) , (string_literal ""Proxy error: SOCKS proxy did not accept our authentication"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (expression_statement "p->state = 6;" (assignment_expression "p->state = 6" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) }))))))) (expression_statement "bufchain_consume(pbVar1,2);" (call_expression "bufchain_consume(pbVar1,2)" identifier (argument_list "(pbVar1,2)" ( identifier , number_literal ))) ;) (expression_statement "iVar14 = p->state;" (assignment_expression "iVar14 = p->state" identifier = (field_expression "p->state" identifier -> field_identifier)) ;) })) (if_statement "if (iVar14 == 7) {\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" if (parenthesized_expression "(iVar14 == 7)" ( (binary_expression "iVar14 == 7" identifier == number_literal) )) (compound_statement "{\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }" { (expression_statement "pbVar1 = &p->pending_input_data;" (assignment_expression "pbVar1 = &p->pending_input_data" identifier = (pointer_expression "&p->pending_input_data" & (field_expression "p->pending_input_data" identifier -> field_identifier))) ;) (expression_statement "iVar14 = bufchain_size(pbVar1);" (assignment_expression "iVar14 = bufchain_size(pbVar1)" identifier = (call_expression "bufchain_size(pbVar1)" identifier (argument_list "(pbVar1)" ( identifier )))) ;) (if_statement "if (1 < iVar14) {\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" if (parenthesized_expression "(1 < iVar14)" ( (binary_expression "1 < iVar14" number_literal < identifier) )) (compound_statement "{\n        bufchain_fetch(pbVar1,command,2);\n        if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" { (expression_statement "bufchain_fetch(pbVar1,command,2);" (call_expression "bufchain_fetch(pbVar1,command,2)" identifier (argument_list "(pbVar1,command,2)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (command[0] == '\x01') {\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" if (parenthesized_expression "(command[0] == '\x01')" ( (binary_expression "command[0] == '\x01'" (subscript_expression "command[0]" identifier [ number_literal ]) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }" { (if_statement "if (command[1] == '\0') {\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }" if (parenthesized_expression "(command[1] == '\0')" ( (binary_expression "command[1] == '\0'" (subscript_expression "command[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            bufchain_consume(pbVar1,2);\n            p->state = 2;\n            goto LAB_00020dd0;\n          }" { (expression_statement "bufchain_consume(pbVar1,2);" (call_expression "bufchain_consume(pbVar1,2)" identifier (argument_list "(pbVar1,2)" ( identifier , number_literal ))) ;) (expression_statement "p->state = 2;" (assignment_expression "p->state = 2" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_00020dd0;" goto statement_identifier ;) })) (expression_statement "(*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);" (call_expression "(*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0)" ( (field_expression "p->plug" identifier -> field_identifier) , (string_literal ""Proxy error: SOCKS proxy refused password authentication"" " string_content ") , number_literal , number_literal ))) ;) }) (else_clause "else {\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" else (compound_statement "{\n          (*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" { (expression_statement "(*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);" (call_expression "(*(*p->plug)->closing)\n                    (p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" ( (field_expression "p->plug" identifier -> field_identifier) , (string_literal ""Proxy error: SOCKS password subnegotiation contained wrong version number"" " string_content ") , number_literal , number_literal ))) ;) }))) })) }) (else_clause "else {\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" else (compound_statement "{\n      if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }\n      if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      pbVar1 = &p->pending_input_data;\n      iVar14 = bufchain_size(pbVar1);\n      if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" { (if_statement "if (iVar14 == 8) {\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }" if (parenthesized_expression "(iVar14 == 8)" ( (binary_expression "iVar14 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar14 = proxy_socks5_handlechap(p);\n        if (iVar14 != 0) goto LAB_00020af9;\n        iVar14 = p->state;\n      }" { (expression_statement "iVar14 = proxy_socks5_handlechap(p);" (assignment_expression "iVar14 = proxy_socks5_handlechap(p)" identifier = (call_expression "proxy_socks5_handlechap(p)" identifier (argument_list "(p)" ( identifier )))) ;) (if_statement "if (iVar14 != 0) goto LAB_00020af9;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (expression_statement "iVar14 = p->state;" (assignment_expression "iVar14 = p->state" identifier = (field_expression "p->state" identifier -> field_identifier)) ;) })) (if_statement "if (iVar14 == 2) {\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);\n        if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }\n        iVar14 = 1;\n        command[0] = '\x05';\n        command[1] = '\x01';\n        command[2] = '\0';\n        iVar2 = p->remote_port;\n        command[iVar11] = (char)((uint)iVar2 >> 8);\n        command[iVar4] = (char)iVar2;\n        (*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);\n        p->state = 3;\n        goto LAB_00020af9;\n      }" { (labeled_statement "LAB_00020dd0:\n        iVar14 = sk_addrtype(p->remote_addr);" statement_identifier : (expression_statement "iVar14 = sk_addrtype(p->remote_addr);" (assignment_expression "iVar14 = sk_addrtype(p->remote_addr)" identifier = (call_expression "sk_addrtype(p->remote_addr)" identifier (argument_list "(p->remote_addr)" ( (field_expression "p->remote_addr" identifier -> field_identifier) )))) ;)) (if_statement "if (iVar14 == 1) {\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }\n        else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }" if (parenthesized_expression "(iVar14 == 1)" ( (binary_expression "iVar14 == 1" identifier == number_literal) )) (compound_statement "{\n          command[3] = '\x01';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 9;\n          iVar11 = 8;\n          iVar8 = 10;\n        }" { (expression_statement "command[3] = '\x01';" (assignment_expression "command[3] = '\x01'" (subscript_expression "command[3]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "sk_addrcopy(p->remote_addr,command + 4);" (call_expression "sk_addrcopy(p->remote_addr,command + 4)" identifier (argument_list "(p->remote_addr,command + 4)" ( (field_expression "p->remote_addr" identifier -> field_identifier) , (binary_expression "command + 4" identifier + number_literal) ))) ;) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" identifier = number_literal) ;) (expression_statement "iVar11 = 8;" (assignment_expression "iVar11 = 8" identifier = number_literal) ;) (expression_statement "iVar8 = 10;" (assignment_expression "iVar8 = 10" identifier = number_literal) ;) }) (else_clause "else if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }" else (if_statement "if (iVar14 == 2) {\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }\n        else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\n          command[3] = '\x04';\n          sk_addrcopy(p->remote_addr,command + 4);\n          iVar4 = 0x15;\n          iVar11 = 0x14;\n          iVar8 = 0x16;\n        }" { (expression_statement "command[3] = '\x04';" (assignment_expression "command[3] = '\x04'" (subscript_expression "command[3]" identifier [ number_literal ]) = (char_literal "'\x04'" ' escape_sequence ')) ;) (expression_statement "sk_addrcopy(p->remote_addr,command + 4);" (call_expression "sk_addrcopy(p->remote_addr,command + 4)" identifier (argument_list "(p->remote_addr,command + 4)" ( (field_expression "p->remote_addr" identifier -> field_identifier) , (binary_expression "command + 4" identifier + number_literal) ))) ;) (expression_statement "iVar4 = 0x15;" (assignment_expression "iVar4 = 0x15" identifier = number_literal) ;) (expression_statement "iVar11 = 0x14;" (assignment_expression "iVar11 = 0x14" identifier = number_literal) ;) (expression_statement "iVar8 = 0x16;" (assignment_expression "iVar8 = 0x16" identifier = number_literal) ;) }) (else_clause "else {\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }" else (compound_statement "{\n          if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          command[3] = '\x03';\n          sk_getaddr(p->remote_addr,local_21c,0x100);\n          sVar7 = strlen(local_21c);\n          command[4] = (char)sVar7;\n          iVar4 = (int)command[4];\n          iVar8 = iVar4 + 7;\n          iVar11 = iVar4 + 5;\n          iVar4 = iVar4 + 6;\n        }" { (if_statement "if (iVar14 != 3) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" if (parenthesized_expression "(iVar14 != 3)" ( (binary_expression "iVar14 != 3" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" { comment (expression_statement "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");" (call_expression "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" identifier (argument_list "("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" ( (string_literal ""type == ADDRTYPE_NAME"" " string_content ") , (string_literal ""proxy.c"" " string_content ") , number_literal , (string_literal ""proxy_socks5_negotiate"" " string_content ") ))) ;) })) (expression_statement "command[3] = '\x03';" (assignment_expression "command[3] = '\x03'" (subscript_expression "command[3]" identifier [ number_literal ]) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "sk_getaddr(p->remote_addr,local_21c,0x100);" (call_expression "sk_getaddr(p->remote_addr,local_21c,0x100)" identifier (argument_list "(p->remote_addr,local_21c,0x100)" ( (field_expression "p->remote_addr" identifier -> field_identifier) , identifier , number_literal ))) ;) (expression_statement "sVar7 = strlen(local_21c);" (assignment_expression "sVar7 = strlen(local_21c)" identifier = (call_expression "strlen(local_21c)" identifier (argument_list "(local_21c)" ( identifier )))) ;) (expression_statement "command[4] = (char)sVar7;" (assignment_expression "command[4] = (char)sVar7" (subscript_expression "command[4]" identifier [ number_literal ]) = (cast_expression "(char)sVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar4 = (int)command[4];" (assignment_expression "iVar4 = (int)command[4]" identifier = (cast_expression "(int)command[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "command[4]" identifier [ number_literal ]))) ;) (expression_statement "iVar8 = iVar4 + 7;" (assignment_expression "iVar8 = iVar4 + 7" identifier = (binary_expression "iVar4 + 7" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar4 + 5;" (assignment_expression "iVar11 = iVar4 + 5" identifier = (binary_expression "iVar4 + 5" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + 6;" (assignment_expression "iVar4 = iVar4 + 6" identifier = (binary_expression "iVar4 + 6" identifier + number_literal)) ;) }))))) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) (expression_statement "command[0] = '\x05';" (assignment_expression "command[0] = '\x05'" (subscript_expression "command[0]" identifier [ number_literal ]) = (char_literal "'\x05'" ' escape_sequence ')) ;) (expression_statement "command[1] = '\x01';" (assignment_expression "command[1] = '\x01'" (subscript_expression "command[1]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "command[2] = '\0';" (assignment_expression "command[2] = '\0'" (subscript_expression "command[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar2 = p->remote_port;" (assignment_expression "iVar2 = p->remote_port" identifier = (field_expression "p->remote_port" identifier -> field_identifier)) ;) (expression_statement "command[iVar11] = (char)((uint)iVar2 >> 8);" (assignment_expression "command[iVar11] = (char)((uint)iVar2 >> 8)" (subscript_expression "command[iVar11]" identifier [ identifier ]) = (cast_expression "(char)((uint)iVar2 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)iVar2 >> 8)" ( (binary_expression "(uint)iVar2 >> 8" (cast_expression "(uint)iVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "command[iVar4] = (char)iVar2;" (assignment_expression "command[iVar4] = (char)iVar2" (subscript_expression "command[iVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "(*(*p->sub_socket)->write)(p->sub_socket,command,iVar8);" (call_expression "(*(*p->sub_socket)->write)(p->sub_socket,command,iVar8)" (parenthesized_expression "(*(*p->sub_socket)->write)" ( (pointer_expression "*(*p->sub_socket)->write" * (field_expression "(*p->sub_socket)->write" (parenthesized_expression "(*p->sub_socket)" ( (pointer_expression "*p->sub_socket" * (field_expression "p->sub_socket" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->sub_socket,command,iVar8)" ( (field_expression "p->sub_socket" identifier -> field_identifier) , identifier , identifier ))) ;) (expression_statement "p->state = 3;" (assignment_expression "p->state = 3" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (iVar14 != 3) {\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }" if (parenthesized_expression "(iVar14 != 3)" ( (binary_expression "iVar14 != 3" identifier != number_literal) )) (compound_statement "{\n        if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        goto LAB_00020aec;\n      }" { (if_statement "if (iVar14 == 4) {\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }\n        else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }" if (parenthesized_expression "(iVar14 == 4)" ( (binary_expression "iVar14 == 4" identifier == number_literal) )) (compound_statement "{\n          pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }" { (expression_statement "pcVar5 = "Proxy error: We don\'t support GSSAPI authentication";" (assignment_expression "pcVar5 = "Proxy error: We don\'t support GSSAPI authentication"" identifier = (string_literal ""Proxy error: We don\'t support GSSAPI authentication"" " string_content escape_sequence string_content ")) ;) (expression_statement "pppVar3 = p->plug;" (assignment_expression "pppVar3 = p->plug" identifier = (field_expression "p->plug" identifier -> field_identifier)) ;) (expression_statement "ppVar10 = *pppVar3;" (assignment_expression "ppVar10 = *pppVar3" identifier = (pointer_expression "*pppVar3" * identifier)) ;) (expression_statement "iVar14 = 8000;" (assignment_expression "iVar14 = 8000" identifier = number_literal) ;) }) (else_clause "else {\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }" else (compound_statement "{\n          if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar5 = conf_get_str(p->conf,0x10);\n          pcVar6 = conf_get_str(p->conf,0x11);\n          if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }\n          pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          pppVar3 = p->plug;\n          ppVar10 = *pppVar3;\n          iVar14 = 8000;\n        }" { (if_statement "if (iVar14 != 5) {\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" if (parenthesized_expression "(iVar14 != 5)" ( (binary_expression "iVar14 != 5" identifier != number_literal) )) (compound_statement "{\n            if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" { (if_statement "if ((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))\n            goto LAB_00020af9;" if (parenthesized_expression "((iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0))" ( (binary_expression "(iVar14 == 6) && (iVar14 = proxy_socks5_selectchap(p), iVar14 != 0)" (parenthesized_expression "(iVar14 == 6)" ( (binary_expression "iVar14 == 6" identifier == number_literal) )) && (parenthesized_expression "(iVar14 = proxy_socks5_selectchap(p), iVar14 != 0)" ( (comma_expression "iVar14 = proxy_socks5_selectchap(p), iVar14 != 0" (assignment_expression "iVar14 = proxy_socks5_selectchap(p)" identifier = (call_expression "proxy_socks5_selectchap(p)" identifier (argument_list "(p)" ( identifier )))) , (binary_expression "iVar14 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (goto_statement "goto LAB_00020ad4;" goto statement_identifier ;) })) (expression_statement "pcVar5 = conf_get_str(p->conf,0x10);" (assignment_expression "pcVar5 = conf_get_str(p->conf,0x10)" identifier = (call_expression "conf_get_str(p->conf,0x10)" identifier (argument_list "(p->conf,0x10)" ( (field_expression "p->conf" identifier -> field_identifier) , number_literal )))) ;) (expression_statement "pcVar6 = conf_get_str(p->conf,0x11);" (assignment_expression "pcVar6 = conf_get_str(p->conf,0x11)" identifier = (call_expression "conf_get_str(p->conf,0x11)" identifier (argument_list "(p->conf,0x11)" ( (field_expression "p->conf" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if ((*pcVar5 != '\0') || (*pcVar6 != '\0')) {\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }" if (parenthesized_expression "((*pcVar5 != '\0') || (*pcVar6 != '\0'))" ( (binary_expression "(*pcVar5 != '\0') || (*pcVar6 != '\0')" (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            local_238 = strlen(pcVar5);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar7 = strlen(pcVar6);\n            if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }\n            command[1] = local_244;\n            command[0] = '\x01';\n            __memcpy_chk(command + 2,pcVar5,local_238,0x1ff);\n            command[local_240] = local_24d;\n            pcVar5 = command + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }\n            iVar14 = 1;\n            (*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);\n            p->state = 7;\n            goto LAB_00020af9;\n          }" { (expression_statement "local_238 = strlen(pcVar5);" (assignment_expression "local_238 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (if_statement "if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" if (parenthesized_expression "(local_238 < 0x100)" ( (binary_expression "local_238 < 0x100" identifier < number_literal) )) (compound_statement "{\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }" { (if_statement "if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" if (parenthesized_expression "(local_238 == 0)" ( (binary_expression "local_238 == 0" identifier == number_literal) )) (compound_statement "{\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }" { (expression_statement "local_23c = 4;" (assignment_expression "local_23c = 4" identifier = number_literal) ;) (expression_statement "local_240 = 3;" (assignment_expression "local_240 = 3" identifier = number_literal) ;) (expression_statement "local_244 = 1;" (assignment_expression "local_244 = 1" identifier = number_literal) ;) (expression_statement "local_238 = 1;" (assignment_expression "local_238 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" else (compound_statement "{\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" { (expression_statement "local_244 = (undefined1)local_238;" (assignment_expression "local_244 = (undefined1)local_238" identifier = (cast_expression "(undefined1)local_238" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "local_240 = local_238 + 2;" (assignment_expression "local_240 = local_238 + 2" identifier = (binary_expression "local_238 + 2" identifier + number_literal)) ;) (expression_statement "local_23c = local_238 + 3;" (assignment_expression "local_23c = local_238 + 3" identifier = (binary_expression "local_238 + 3" identifier + number_literal)) ;) }))) }) (else_clause "else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" else (compound_statement "{\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" { (expression_statement "local_23c = 0x102;" (assignment_expression "local_23c = 0x102" identifier = number_literal) ;) (expression_statement "local_240 = 0x101;" (assignment_expression "local_240 = 0x101" identifier = number_literal) ;) (expression_statement "local_244 = 0xff;" (assignment_expression "local_244 = 0xff" identifier = number_literal) ;) (expression_statement "local_238 = 0xff;" (assignment_expression "local_238 = 0xff" identifier = number_literal) ;) }))) (expression_statement "sVar7 = strlen(pcVar6);" (assignment_expression "sVar7 = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;) (if_statement "if (sVar7 < 0x100) {\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }\n            else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }" if (parenthesized_expression "(sVar7 < 0x100)" ( (binary_expression "sVar7 < 0x100" identifier < number_literal) )) (compound_statement "{\n              local_24d = '\x01';\n              if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }\n              local_24c = 1;\n              if (sVar7 != 0) {\n                local_24c = sVar7;\n              }\n            }" { (expression_statement "local_24d = '\x01';" (assignment_expression "local_24d = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (sVar7 != 0) {\n                local_24d = (char)sVar7;\n              }" if (parenthesized_expression "(sVar7 != 0)" ( (binary_expression "sVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                local_24d = (char)sVar7;\n              }" { (expression_statement "local_24d = (char)sVar7;" (assignment_expression "local_24d = (char)sVar7" identifier = (cast_expression "(char)sVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) })) (expression_statement "local_24c = 1;" (assignment_expression "local_24c = 1" identifier = number_literal) ;) (if_statement "if (sVar7 != 0) {\n                local_24c = sVar7;\n              }" if (parenthesized_expression "(sVar7 != 0)" ( (binary_expression "sVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                local_24c = sVar7;\n              }" { (expression_statement "local_24c = sVar7;" (assignment_expression "local_24c = sVar7" identifier = identifier) ;) })) }) (else_clause "else {\n              local_24d = -1;\n              local_24c = 0xff;\n            }" else (compound_statement "{\n              local_24d = -1;\n              local_24c = 0xff;\n            }" { (expression_statement "local_24d = -1;" (assignment_expression "local_24d = -1" identifier = number_literal) ;) (expression_statement "local_24c = 0xff;" (assignment_expression "local_24c = 0xff" identifier = number_literal) ;) }))) (expression_statement "command[1] = local_244;" (assignment_expression "command[1] = local_244" (subscript_expression "command[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "command[0] = '\x01';" (assignment_expression "command[0] = '\x01'" (subscript_expression "command[0]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "__memcpy_chk(command + 2,pcVar5,local_238,0x1ff);" (call_expression "__memcpy_chk(command + 2,pcVar5,local_238,0x1ff)" identifier (argument_list "(command + 2,pcVar5,local_238,0x1ff)" ( (binary_expression "command + 2" identifier + number_literal) , identifier , identifier , number_literal ))) ;) (expression_statement "command[local_240] = local_24d;" (assignment_expression "command[local_240] = local_24d" (subscript_expression "command[local_240]" identifier [ identifier ]) = identifier) ;) (expression_statement "pcVar5 = command + local_23c;" (assignment_expression "pcVar5 = command + local_23c" identifier = (binary_expression "command + local_23c" identifier + identifier)) ;) (if_statement "if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }" if (parenthesized_expression "(local_24c < 4)" ( (binary_expression "local_24c < 4" identifier < number_literal) )) (compound_statement "{\n              if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }\n            }" { (if_statement "if ((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)) {\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }" if (parenthesized_expression "((local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0))" ( (binary_expression "(local_24c != 0) && (*pcVar5 = *pcVar6, (local_24c & 2) != 0)" (parenthesized_expression "(local_24c != 0)" ( (binary_expression "local_24c != 0" identifier != number_literal) )) && (parenthesized_expression "(*pcVar5 = *pcVar6, (local_24c & 2) != 0)" ( (comma_expression "*pcVar5 = *pcVar6, (local_24c & 2) != 0" (assignment_expression "*pcVar5 = *pcVar6" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar6" * identifier)) , (binary_expression "(local_24c & 2) != 0" (parenthesized_expression "(local_24c & 2)" ( (binary_expression "local_24c & 2" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                *(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));\n              }" { (expression_statement "*(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2));" (assignment_expression "*(undefined2 *)(data_2 + local_24c + local_23c + 3) =\n                     *(undefined2 *)(pcVar6 + (local_24c - 2))" (pointer_expression "*(undefined2 *)(data_2 + local_24c + local_23c + 3)" * (cast_expression "(undefined2 *)(data_2 + local_24c + local_23c + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(data_2 + local_24c + local_23c + 3)" ( (binary_expression "data_2 + local_24c + local_23c + 3" (binary_expression "data_2 + local_24c + local_23c" (binary_expression "data_2 + local_24c" identifier + identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined2 *)(pcVar6 + (local_24c - 2))" * (cast_expression "(undefined2 *)(pcVar6 + (local_24c - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + (local_24c - 2))" ( (binary_expression "pcVar6 + (local_24c - 2)" identifier + (parenthesized_expression "(local_24c - 2)" ( (binary_expression "local_24c - 2" identifier - number_literal) ))) ))))) ;) })) }) (else_clause "else {\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }" else (compound_statement "{\n              *(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;\n              *(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));\n              iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);\n              pcVar5 = pcVar6 + -iVar14;\n              puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);\n              for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }\n            }" { (expression_statement "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar6;" (assignment_expression "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar6" (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar6" * (cast_expression "(undefined4 *)pcVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4));" (assignment_expression "*(undefined4 *)(data_2 + local_24c + local_23c + 1) =\n                   *(undefined4 *)(pcVar6 + (local_24c - 4))" (pointer_expression "*(undefined4 *)(data_2 + local_24c + local_23c + 1)" * (cast_expression "(undefined4 *)(data_2 + local_24c + local_23c + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(data_2 + local_24c + local_23c + 1)" ( (binary_expression "data_2 + local_24c + local_23c + 1" (binary_expression "data_2 + local_24c + local_23c" (binary_expression "data_2 + local_24c" identifier + identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(pcVar6 + (local_24c - 4))" * (cast_expression "(undefined4 *)(pcVar6 + (local_24c - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + (local_24c - 4))" ( (binary_expression "pcVar6 + (local_24c - 4)" identifier + (parenthesized_expression "(local_24c - 4)" ( (binary_expression "local_24c - 4" identifier - number_literal) ))) ))))) ;) (expression_statement "iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc);" (assignment_expression "iVar14 = (int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc)" identifier = (binary_expression "(int)pcVar5 - (int)((uint)(command + local_23c + 4) & 0xfffffffc)" (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(command + local_23c + 4) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(command + local_23c + 4) & 0xfffffffc)" ( (binary_expression "(uint)(command + local_23c + 4) & 0xfffffffc" (call_expression "(uint)(command + local_23c + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(command + local_23c + 4)" ( (binary_expression "command + local_23c + 4" (binary_expression "command + local_23c" identifier + identifier) + number_literal) ))) & number_literal) ))))) ;) (expression_statement "pcVar5 = pcVar6 + -iVar14;" (assignment_expression "pcVar5 = pcVar6 + -iVar14" identifier = (binary_expression "pcVar6 + -iVar14" identifier + (unary_expression "-iVar14" - identifier))) ;) (expression_statement "puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc);" (assignment_expression "puVar12 = (undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(command + local_23c + 4) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(command + local_23c + 4) & 0xfffffffc)" ( (binary_expression "(uint)(command + local_23c + 4) & 0xfffffffc" (call_expression "(uint)(command + local_23c + 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(command + local_23c + 4)" ( (binary_expression "command + local_23c + 4" (binary_expression "command + local_23c" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar9 = local_24c + iVar14 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }" for ( (assignment_expression "uVar9 = local_24c + iVar14 >> 2" identifier = (binary_expression "local_24c + iVar14 >> 2" (binary_expression "local_24c + iVar14" identifier + identifier) >> number_literal)) ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n                *puVar12 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                puVar12 = puVar12 + (uint)bVar13 * -2 + 1;\n              }" { (expression_statement "*puVar12 = *(undefined4 *)pcVar5;" (assignment_expression "*puVar12 = *(undefined4 *)pcVar5" (pointer_expression "*puVar12" * identifier) = (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4" identifier = (binary_expression "pcVar5 + ((uint)bVar13 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar13 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar13 * -2 + 1)" ( (binary_expression "(uint)bVar13 * -2 + 1" (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "puVar12 = puVar12 + (uint)bVar13 * -2 + 1;" (assignment_expression "puVar12 = puVar12 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "puVar12 + (uint)bVar13 * -2 + 1" (binary_expression "puVar12 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }))) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) (expression_statement "(*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c);" (call_expression "(*(*p->sub_socket)->write)(p->sub_socket,command,local_238 + 3 + local_24c)" (parenthesized_expression "(*(*p->sub_socket)->write)" ( (pointer_expression "*(*p->sub_socket)->write" * (field_expression "(*p->sub_socket)->write" (parenthesized_expression "(*p->sub_socket)" ( (pointer_expression "*p->sub_socket" * (field_expression "p->sub_socket" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->sub_socket,command,local_238 + 3 + local_24c)" ( (field_expression "p->sub_socket" identifier -> field_identifier) , identifier , (binary_expression "local_238 + 3 + local_24c" (binary_expression "local_238 + 3" identifier + number_literal) + identifier) ))) ;) (expression_statement "p->state = 7;" (assignment_expression "p->state = 7" (field_expression "p->state" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (expression_statement "pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";" (assignment_expression "pcVar5 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!"" identifier = (string_literal ""Proxy error: Server chose username/password authentication but we didn\'t offer it!"" " string_content escape_sequence string_content ")) ;) (expression_statement "pppVar3 = p->plug;" (assignment_expression "pppVar3 = p->plug" identifier = (field_expression "p->plug" identifier -> field_identifier)) ;) (expression_statement "ppVar10 = *pppVar3;" (assignment_expression "ppVar10 = *pppVar3" identifier = (pointer_expression "*pppVar3" * identifier)) ;) (expression_statement "iVar14 = 8000;" (assignment_expression "iVar14 = 8000" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00020aec;" goto statement_identifier ;) })) (expression_statement "pbVar1 = &p->pending_input_data;" (assignment_expression "pbVar1 = &p->pending_input_data" identifier = (pointer_expression "&p->pending_input_data" & (field_expression "p->pending_input_data" identifier -> field_identifier))) ;) (expression_statement "iVar14 = bufchain_size(pbVar1);" (assignment_expression "iVar14 = bufchain_size(pbVar1)" identifier = (call_expression "bufchain_size(pbVar1)" identifier (argument_list "(pbVar1)" ( identifier )))) ;) (if_statement "if (4 < iVar14) {\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" if (parenthesized_expression "(4 < iVar14)" ( (binary_expression "4 < iVar14" number_literal < identifier) )) (compound_statement "{\n        bufchain_fetch(pbVar1,data_2,5);\n        if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" { (expression_statement "bufchain_fetch(pbVar1,data_2,5);" (call_expression "bufchain_fetch(pbVar1,data_2,5)" identifier (argument_list "(pbVar1,data_2,5)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (data_2[0] == '\x05') {\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }\n        else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" if (parenthesized_expression "(data_2[0] == '\x05')" ( (binary_expression "data_2[0] == '\x05'" (subscript_expression "data_2[0]" identifier [ number_literal ]) == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n          if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }\n        }" { (if_statement "if (data_2[1] == '\0') {\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }\n          else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }" if (parenthesized_expression "(data_2[1] == '\0')" ( (binary_expression "data_2[1] == '\0'" (subscript_expression "data_2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }\n            iVar8 = bufchain_size(pbVar1);\n            if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }\n          }" { (if_statement "if (data_2[3] == '\x03') {\n              iVar14 = (byte)data_2[4] + 6;\n            }\n            else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }" if (parenthesized_expression "(data_2[3] == '\x03')" ( (binary_expression "data_2[3] == '\x03'" (subscript_expression "data_2[3]" identifier [ number_literal ]) == (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n              iVar14 = (byte)data_2[4] + 6;\n            }" { (expression_statement "iVar14 = (byte)data_2[4] + 6;" (assignment_expression "iVar14 = (byte)data_2[4] + 6" identifier = (binary_expression "(byte)data_2[4] + 6" (cast_expression "(byte)data_2[4]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "data_2[4]" identifier [ number_literal ])) + number_literal)) ;) }) (else_clause "else if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }" else (if_statement "if (data_2[3] == '\x04') {\n              iVar14 = 0x16;\n            }\n            else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }" if (parenthesized_expression "(data_2[3] == '\x04')" ( (binary_expression "data_2[3] == '\x04'" (subscript_expression "data_2[3]" identifier [ number_literal ]) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n              iVar14 = 0x16;\n            }" { (expression_statement "iVar14 = 0x16;" (assignment_expression "iVar14 = 0x16" identifier = number_literal) ;) }) (else_clause "else {\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }" else (compound_statement "{\n              if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }\n              iVar14 = 10;\n            }" { (if_statement "if (data_2[3] != '\x01') {\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }" if (parenthesized_expression "(data_2[3] != '\x01')" ( (binary_expression "data_2[3] != '\x01'" (subscript_expression "data_2[3]" identifier [ number_literal ]) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                (*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);\n                goto LAB_00020af4;\n              }" { (expression_statement "(*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0);" (call_expression "(*(*p->plug)->closing)\n                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",\n                           8000,0)" ( (field_expression "p->plug" identifier -> field_identifier) , (string_literal ""Proxy error: SOCKS proxy returned unrecognised address format"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af4;" goto statement_identifier ;) })) (expression_statement "iVar14 = 10;" (assignment_expression "iVar14 = 10" identifier = number_literal) ;) }))))) (expression_statement "iVar8 = bufchain_size(pbVar1);" (assignment_expression "iVar8 = bufchain_size(pbVar1)" identifier = (call_expression "bufchain_size(pbVar1)" identifier (argument_list "(pbVar1)" ( identifier )))) ;) (if_statement "if (iVar14 <= iVar8) {\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }" if (parenthesized_expression "(iVar14 <= iVar8)" ( (binary_expression "iVar14 <= iVar8" identifier <= identifier) )) (compound_statement "{\n              bufchain_consume(pbVar1,iVar14);\n              proxy_activate(p);\n            }" { (expression_statement "bufchain_consume(pbVar1,iVar14);" (call_expression "bufchain_consume(pbVar1,iVar14)" identifier (argument_list "(pbVar1,iVar14)" ( identifier , identifier ))) ;) (expression_statement "proxy_activate(p);" (call_expression "proxy_activate(p)" identifier (argument_list "(p)" ( identifier ))) ;) })) }) (else_clause "else {\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }" else (compound_statement "{\n            pcVar5 = "Proxy error: ";\n            pcVar6 = command;\n            for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }\n            switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }\n            (*(*p->plug)->closing)(p->plug,command,8000,0);\n          }" { (expression_statement "pcVar5 = "Proxy error: ";" (assignment_expression "pcVar5 = "Proxy error: "" identifier = (string_literal ""Proxy error: "" " string_content ")) ;) (expression_statement "pcVar6 = command;" (assignment_expression "pcVar6 = command" identifier = identifier) ;) (for_statement "for (iVar14 = 0xe; iVar14 != 0; iVar14 = iVar14 + -1) {\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }" for ( (assignment_expression "iVar14 = 0xe" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n              *pcVar6 = *pcVar5;\n              pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n              pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n            }" { (expression_statement "*pcVar6 = *pcVar5;" (assignment_expression "*pcVar6 = *pcVar5" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (switch_statement "switch((int)data_2[1] - 1U & 0xff) {\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }" switch (parenthesized_expression "((int)data_2[1] - 1U & 0xff)" ( (binary_expression "(int)data_2[1] - 1U & 0xff" (binary_expression "(int)data_2[1] - 1U" (cast_expression "(int)data_2[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "data_2[1]" identifier [ number_literal ])) - number_literal) & number_literal) )) (compound_statement "{\n            case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );\n            }" { (case_statement "case 0:\n              pcVar5 = "General SOCKS server failure";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "General SOCKS server failure";" (assignment_expression "pcVar5 = "General SOCKS server failure"" identifier = (string_literal ""General SOCKS server failure"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 0x1d; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" for ( (assignment_expression "iVar14 = 0x1d" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" { (expression_statement "*pcVar6 = *pcVar5;" (assignment_expression "*pcVar6 = *pcVar5" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n              pcVar5 = "Connection not allowed by ruleset";\n              pcVar6 = local_214;\n              for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "Connection not allowed by ruleset";" (assignment_expression "pcVar5 = "Connection not allowed by ruleset"" identifier = (string_literal ""Connection not allowed by ruleset"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 0x22; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" for ( (assignment_expression "iVar14 = 0x22" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" { (expression_statement "*pcVar6 = *pcVar5;" (assignment_expression "*pcVar6 = *pcVar5" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 2:\n              pcVar5 = "Network unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "Network unreachable";" (assignment_expression "pcVar5 = "Network unreachable"" identifier = (string_literal ""Network unreachable"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 5; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }" for ( (assignment_expression "iVar14 = 5" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }" { (expression_statement "*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;" (assignment_expression "*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5" (pointer_expression "*(undefined4 *)pcVar6" * (cast_expression "(undefined4 *)pcVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4" identifier = (binary_expression "pcVar5 + ((uint)bVar13 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar13 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar13 * -2 + 1)" ( (binary_expression "(uint)bVar13 * -2 + 1" (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;" (assignment_expression "pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4" identifier = (binary_expression "pcVar6 + ((uint)bVar13 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar13 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar13 * -2 + 1)" ( (binary_expression "(uint)bVar13 * -2 + 1" (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n              pcVar5 = "Host unreachable";\n              pcVar6 = local_214;\n              for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "Host unreachable";" (assignment_expression "pcVar5 = "Host unreachable"" identifier = (string_literal ""Host unreachable"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 0x11; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" for ( (assignment_expression "iVar14 = 0x11" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" { (expression_statement "*pcVar6 = *pcVar5;" (assignment_expression "*pcVar6 = *pcVar5" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n              pcVar5 = "Connection refused";\n              pcVar6 = local_214;\n              for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "Connection refused";" (assignment_expression "pcVar5 = "Connection refused"" identifier = (string_literal ""Connection refused"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 0x13; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" for ( (assignment_expression "iVar14 = 0x13" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" { (expression_statement "*pcVar6 = *pcVar5;" (assignment_expression "*pcVar6 = *pcVar5" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 5:\n              pcVar5 = "TTL expired";\n              pcVar6 = local_214;\n              for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "TTL expired";" (assignment_expression "pcVar5 = "TTL expired"" identifier = (string_literal ""TTL expired"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 3; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }" for ( (assignment_expression "iVar14 = 3" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;\n                pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;\n                pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;\n              }" { (expression_statement "*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;" (assignment_expression "*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5" (pointer_expression "*(undefined4 *)pcVar6" * (cast_expression "(undefined4 *)pcVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar13 * -2 + 1) * 4" identifier = (binary_expression "pcVar5 + ((uint)bVar13 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar13 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar13 * -2 + 1)" ( (binary_expression "(uint)bVar13 * -2 + 1" (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4;" (assignment_expression "pcVar6 = pcVar6 + ((uint)bVar13 * -2 + 1) * 4" identifier = (binary_expression "pcVar6 + ((uint)bVar13 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar13 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar13 * -2 + 1)" ( (binary_expression "(uint)bVar13 * -2 + 1" (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) })) (break_statement "break;" break ;)) (case_statement "case 6:\n              pcVar5 = "Command not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "Command not supported";" (assignment_expression "pcVar5 = "Command not supported"" identifier = (string_literal ""Command not supported"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 0x16; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" for ( (assignment_expression "iVar14 = 0x16" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" { (expression_statement "*pcVar6 = *pcVar5;" (assignment_expression "*pcVar6 = *pcVar5" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 7:\n              pcVar5 = "Address type not supported";\n              pcVar6 = local_214;\n              for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar5 = "Address type not supported";" (assignment_expression "pcVar5 = "Address type not supported"" identifier = (string_literal ""Address type not supported"" " string_content ")) ;) (expression_statement "pcVar6 = local_214;" (assignment_expression "pcVar6 = local_214" identifier = identifier) ;) (for_statement "for (iVar14 = 0x1b; iVar14 != 0; iVar14 = iVar14 + -1) {\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" for ( (assignment_expression "iVar14 = 0x1b" identifier = number_literal) ; (binary_expression "iVar14 != 0" identifier != number_literal) ; (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar6 = *pcVar5;\n                pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;\n                pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;\n              }" { (expression_statement "*pcVar6 = *pcVar5;" (assignment_expression "*pcVar6 = *pcVar5" (pointer_expression "*pcVar6" * identifier) = (pointer_expression "*pcVar5" * identifier)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1;" (assignment_expression "pcVar6 = pcVar6 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "pcVar6 + (uint)bVar13 * -2 + 1" (binary_expression "pcVar6 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );" default : (expression_statement "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           );" (call_expression "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           )" identifier (argument_list "(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)data_2[1]\n                           )" ( identifier , number_literal , number_literal , (string_literal ""Unrecognised SOCKS error code %d"" " string_content ") , (cast_expression "(int)data_2[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "data_2[1]" identifier [ number_literal ])) ))) ;)) })) (expression_statement "(*(*p->plug)->closing)(p->plug,command,8000,0);" (call_expression "(*(*p->plug)->closing)(p->plug,command,8000,0)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,command,8000,0)" ( (field_expression "p->plug" identifier -> field_identifier) , identifier , number_literal , number_literal ))) ;) }))) }) (else_clause "else {\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" else (compound_statement "{\n          (*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" { (expression_statement "(*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);" (call_expression "(*(*p->plug)->closing)\n                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0)" (parenthesized_expression "(*(*p->plug)->closing)" ( (pointer_expression "*(*p->plug)->closing" * (field_expression "(*p->plug)->closing" (parenthesized_expression "(*p->plug)" ( (pointer_expression "*p->plug" * (field_expression "p->plug" identifier -> field_identifier)) )) -> field_identifier)) )) (argument_list "(p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0)" ( (field_expression "p->plug" identifier -> field_identifier) , (string_literal ""Proxy error: SOCKS proxy returned wrong version number"" " string_content ") , number_literal , number_literal ))) ;) }))) })) }))) }) (else_clause "else {\nLAB_00020ad4:\n    pcVar5 = "Proxy error: Unexpected proxy error";\n    pppVar3 = p->plug;\n    ppVar10 = *pppVar3;\n    iVar14 = 0x1f41;\nLAB_00020aec:\n    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);\n  }" else (compound_statement "{\nLAB_00020ad4:\n    pcVar5 = "Proxy error: Unexpected proxy error";\n    pppVar3 = p->plug;\n    ppVar10 = *pppVar3;\n    iVar14 = 0x1f41;\nLAB_00020aec:\n    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);\n  }" { (labeled_statement "LAB_00020ad4:\n    pcVar5 = "Proxy error: Unexpected proxy error";" statement_identifier : (expression_statement "pcVar5 = "Proxy error: Unexpected proxy error";" (assignment_expression "pcVar5 = "Proxy error: Unexpected proxy error"" identifier = (string_literal ""Proxy error: Unexpected proxy error"" " string_content ")) ;)) (expression_statement "pppVar3 = p->plug;" (assignment_expression "pppVar3 = p->plug" identifier = (field_expression "p->plug" identifier -> field_identifier)) ;) (expression_statement "ppVar10 = *pppVar3;" (assignment_expression "ppVar10 = *pppVar3" identifier = (pointer_expression "*pppVar3" * identifier)) ;) (expression_statement "iVar14 = 0x1f41;" (assignment_expression "iVar14 = 0x1f41" identifier = number_literal) ;) (labeled_statement "LAB_00020aec:\n    (*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);" statement_identifier : (expression_statement "(*ppVar10->closing)(pppVar3,pcVar5,iVar14,0);" (call_expression "(*ppVar10->closing)(pppVar3,pcVar5,iVar14,0)" (parenthesized_expression "(*ppVar10->closing)" ( (pointer_expression "*ppVar10->closing" * (field_expression "ppVar10->closing" identifier -> field_identifier)) )) (argument_list "(pppVar3,pcVar5,iVar14,0)" ( identifier , identifier , identifier , number_literal ))) ;)) }))) (labeled_statement "LAB_00020af4:\n  iVar14 = 1;" statement_identifier : (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar14;" return identifier ;) })))
(translation_unit "int FUN_00020a80(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return iVar9;\n}\n\n" (function_definition "int FUN_00020a80(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return iVar9;\n}" primitive_type (function_declarator "FUN_00020a80(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return iVar9;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "undefined1 local_24d;" type_identifier identifier ;) (declaration "uint local_24c;" type_identifier identifier ;) (declaration "undefined1 local_244;" type_identifier identifier ;) (declaration "int local_240;" primitive_type identifier ;) (declaration "int local_23c;" primitive_type identifier ;) (declaration "size_t local_238;" primitive_type identifier ;) (declaration "int local_22c;" primitive_type identifier ;) (declaration "char local_226;" primitive_type identifier ;) (declaration "char local_225 [4];" primitive_type (array_declarator "local_225 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 local_221;" type_identifier identifier ;) (declaration "undefined2 uStack_220;" type_identifier identifier ;) (declaration "undefined1 local_21e;" type_identifier identifier ;) (declaration "char local_21d [9];" primitive_type (array_declarator "local_21d [9]" identifier [ number_literal ]) ;) (declaration "char local_214 [500];" primitive_type (array_declarator "local_214 [500]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x20a8b;" (assignment_expression "uStack_14 = 0x20a8b" identifier = number_literal) ;) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" 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) ))))) ;) (if_statement "if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" { (expression_statement "_local_221 = CONCAT21(uStack_220,5);" (assignment_expression "_local_221 = CONCAT21(uStack_220,5)" identifier = (call_expression "CONCAT21(uStack_220,5)" identifier (argument_list "(uStack_220,5)" ( identifier , number_literal )))) ;) (expression_statement "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);" (assignment_expression "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x10)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (expression_statement "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);" (assignment_expression "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x11)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (if_statement "if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" if (parenthesized_expression "((*pcVar4 == '\0') && (*pcVar5 == '\0'))" ( (binary_expression "(*pcVar4 == '\0') && (*pcVar5 == '\0')" (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*pcVar5 == '\0')" ( (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }" { (expression_statement "local_22c = 3;" (assignment_expression "local_22c = 3" identifier = number_literal) ;) (expression_statement "_local_221 = CONCAT21(1,local_221);" (assignment_expression "_local_221 = CONCAT21(1,local_221)" identifier = (call_expression "CONCAT21(1,local_221)" identifier (argument_list "(1,local_221)" ( number_literal , identifier )))) ;) }) (else_clause "else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" else (compound_statement "{\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" { (expression_statement "_local_221 = _local_221 & 0xffff;" (assignment_expression "_local_221 = _local_221 & 0xffff" identifier = (binary_expression "_local_221 & 0xffff" identifier & number_literal)) ;) (expression_statement "local_22c = 3;" (assignment_expression "local_22c = 3" identifier = number_literal) ;) (expression_statement "FUN_0001a140(&local_221,&local_22c);" (call_expression "FUN_0001a140(&local_221,&local_22c)" identifier (argument_list "(&local_221,&local_22c)" ( (pointer_expression "&local_221" & identifier) , (pointer_expression "&local_22c" & identifier) ))) ;) (expression_statement "(&local_221)[local_22c] = 2;" (assignment_expression "(&local_221)[local_22c] = 2" (subscript_expression "(&local_221)[local_22c]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = number_literal) ;) (expression_statement "_local_221 = CONCAT11((char)local_22c + -1,local_221);" (assignment_expression "_local_221 = CONCAT11((char)local_22c + -1,local_221)" identifier = (call_expression "CONCAT11((char)local_22c + -1,local_221)" identifier (argument_list "((char)local_22c + -1,local_221)" ( (binary_expression "(char)local_22c + -1" (cast_expression "(char)local_22c" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) , identifier )))) ;) (expression_statement "local_22c = local_22c + 1;" (assignment_expression "local_22c = local_22c + 1" identifier = (binary_expression "local_22c + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" ( (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 8),&local_221,local_22c)" ( (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58))" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x54)" * (cast_expression "(undefined4 *)(param_1 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }" if (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) (compound_statement "{\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }" { (expression_statement "iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));" (assignment_expression "iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 0x10))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 0x10)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 0x10)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 0x10)" ( (binary_expression "**(int **)(param_1 + 0xc) + 0x10" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x70)" * (cast_expression "(undefined4 *)(param_1 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) )))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }" { (if_statement "if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }" if (parenthesized_expression "(iVar9 == 1)" ( (binary_expression "iVar9 == 1" identifier == number_literal) )) (compound_statement "{\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }" { (expression_statement "iVar3 = param_1 + 0x34;" (assignment_expression "iVar3 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (expression_statement "iVar7 = FUN_0001d890(iVar3);" (assignment_expression "iVar7 = FUN_0001d890(iVar3)" identifier = (call_expression "FUN_0001d890(iVar3)" identifier (argument_list "(iVar3)" ( identifier )))) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (if_statement "if (iVar7 < 2) goto LAB_00020af9;" if (parenthesized_expression "(iVar7 < 2)" ( (binary_expression "iVar7 < 2" identifier < number_literal) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (expression_statement "FUN_0001dae0(iVar3,&local_221,2);" (call_expression "FUN_0001dae0(iVar3,&local_221,2)" identifier (argument_list "(iVar3,&local_221,2)" ( identifier , (pointer_expression "&local_221" & identifier) , number_literal ))) ;) (if_statement "if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }" if (parenthesized_expression "(local_221 != '\x05')" ( (binary_expression "local_221 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy returned unexpected version"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" if (parenthesized_expression "((char)uStack_220 == '\0')" ( (binary_expression "(char)uStack_220 == '\0'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" else (if_statement "if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" if (parenthesized_expression "((char)uStack_220 == '\x01')" ( (binary_expression "(char)uStack_220 == '\x01'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" else (if_statement "if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" if (parenthesized_expression "((char)uStack_220 == '\x02')" ( (binary_expression "(char)uStack_220 == '\x02'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x44) = 5;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 5" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" else (compound_statement "{\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" { (if_statement "if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" if (parenthesized_expression "((char)uStack_220 != '\x03')" ( (binary_expression "(char)uStack_220 != '\x03'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy did not accept our authentication"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 6;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 6" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) }))))))) (expression_statement "FUN_0001da00(iVar3,2);" (call_expression "FUN_0001da00(iVar3,2)" identifier (argument_list "(iVar3,2)" ( identifier , number_literal ))) ;) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" if (parenthesized_expression "(iVar9 == 7)" ( (binary_expression "iVar9 == 7" identifier == number_literal) )) (compound_statement "{\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }" { (expression_statement "iVar9 = param_1 + 0x34;" (assignment_expression "iVar9 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001d890(iVar9);" (assignment_expression "iVar3 = FUN_0001d890(iVar9)" identifier = (call_expression "FUN_0001d890(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (if_statement "if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" if (parenthesized_expression "(1 < iVar3)" ( (binary_expression "1 < iVar3" number_literal < identifier) )) (compound_statement "{\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" { (expression_statement "FUN_0001dae0(iVar9,&local_221,2);" (call_expression "FUN_0001dae0(iVar9,&local_221,2)" identifier (argument_list "(iVar9,&local_221,2)" ( identifier , (pointer_expression "&local_221" & identifier) , number_literal ))) ;) (if_statement "if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" if (parenthesized_expression "(local_221 == '\x01')" ( (binary_expression "local_221 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }" { (if_statement "if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }" if (parenthesized_expression "((char)uStack_220 == '\0')" ( (binary_expression "(char)uStack_220 == '\0'" (cast_expression "(char)uStack_220" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }" { (expression_statement "FUN_0001da00(iVar9,2);" (call_expression "FUN_0001da00(iVar9,2)" identifier (argument_list "(iVar9,2)" ( identifier , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00020dd0;" goto statement_identifier ;) })) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy refused password authentication"" " string_content ") , number_literal , number_literal ))) ;) }) (else_clause "else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" else (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS password subnegotiation contained wrong version number"" " string_content ") , number_literal , number_literal ))) ;) }))) })) }) (else_clause "else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" else (compound_statement "{\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" { (if_statement "if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }" if (parenthesized_expression "(iVar9 == 8)" ( (binary_expression "iVar9 == 8" identifier == number_literal) )) (compound_statement "{\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }" { (expression_statement "iVar9 = FUN_0001a160(param_1);" (assignment_expression "iVar9 = FUN_0001a160(param_1)" identifier = (call_expression "FUN_0001a160(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar9 != 0) goto LAB_00020af9;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }" if (parenthesized_expression "(iVar9 == 2)" ( (binary_expression "iVar9 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }" { (labeled_statement "LAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));" statement_identifier : (expression_statement "iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));" (assignment_expression "iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10))" identifier = (call_expression "FUN_00084330(*(undefined4 *)(param_1 + 0x10))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) )))) ;)) (if_statement "if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" if (parenthesized_expression "(iVar9 == 1)" ( (binary_expression "iVar9 == 1" identifier == number_literal) )) (compound_statement "{\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }" { (expression_statement "local_21e = 1;" (assignment_expression "local_21e = 1" identifier = number_literal) ;) (expression_statement "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);" (call_expression "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" identifier = number_literal) ;) (expression_statement "iVar7 = 8;" (assignment_expression "iVar7 = 8" identifier = number_literal) ;) (expression_statement "iVar3 = 10;" (assignment_expression "iVar3 = 10" identifier = number_literal) ;) }) (else_clause "else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" else (if_statement "if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" if (parenthesized_expression "(iVar9 == 2)" ( (binary_expression "iVar9 == 2" identifier == number_literal) )) (compound_statement "{\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }" { (expression_statement "local_21e = 4;" (assignment_expression "local_21e = 4" identifier = number_literal) ;) (expression_statement "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);" (call_expression "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar2 = 0x15;" (assignment_expression "iVar2 = 0x15" identifier = number_literal) ;) (expression_statement "iVar7 = 0x14;" (assignment_expression "iVar7 = 0x14" identifier = number_literal) ;) (expression_statement "iVar3 = 0x16;" (assignment_expression "iVar3 = 0x16" identifier = number_literal) ;) }) (else_clause "else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" else (compound_statement "{\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" { (if_statement "if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" if (parenthesized_expression "(iVar9 != 3)" ( (binary_expression "iVar9 != 3" identifier != number_literal) )) (compound_statement "{\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" { (expression_statement "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");" (call_expression "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" identifier (argument_list "("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" ( (string_literal ""type == ADDRTYPE_NAME"" " string_content ") , (string_literal ""proxy.c"" " string_content ") , number_literal , (string_literal ""proxy_socks5_negotiate"" " string_content ") ))) ;) })) (expression_statement "local_21e = 3;" (assignment_expression "local_21e = 3" identifier = number_literal) ;) (expression_statement "FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);" (call_expression "FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (binary_expression "local_21d + 1" identifier + number_literal) , number_literal ))) ;) (expression_statement "sVar6 = strlen(local_21d + 1);" (assignment_expression "sVar6 = strlen(local_21d + 1)" identifier = (call_expression "strlen(local_21d + 1)" identifier (argument_list "(local_21d + 1)" ( (binary_expression "local_21d + 1" identifier + number_literal) )))) ;) (expression_statement "local_21d[0] = (char)sVar6;" (assignment_expression "local_21d[0] = (char)sVar6" (subscript_expression "local_21d[0]" identifier [ number_literal ]) = (cast_expression "(char)sVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar2 = (int)local_21d[0];" (assignment_expression "iVar2 = (int)local_21d[0]" identifier = (cast_expression "(int)local_21d[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_21d[0]" identifier [ number_literal ]))) ;) (expression_statement "iVar3 = iVar2 + 7;" (assignment_expression "iVar3 = iVar2 + 7" identifier = (binary_expression "iVar2 + 7" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar2 + 5;" (assignment_expression "iVar7 = iVar2 + 5" identifier = (binary_expression "iVar2 + 5" identifier + number_literal)) ;) (expression_statement "iVar2 = iVar2 + 6;" (assignment_expression "iVar2 = iVar2 + 6" identifier = (binary_expression "iVar2 + 6" identifier + number_literal)) ;) }))))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "_local_221 = 0x105;" (assignment_expression "_local_221 = 0x105" identifier = number_literal) ;) (expression_statement "uVar12 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar12 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(&local_221)[iVar7] = (char)((uint)uVar12 >> 8);" (assignment_expression "(&local_221)[iVar7] = (char)((uint)uVar12 >> 8)" (subscript_expression "(&local_221)[iVar7]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = (cast_expression "(char)((uint)uVar12 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar12 >> 8)" ( (binary_expression "(uint)uVar12 >> 8" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "(&local_221)[iVar2] = (char)uVar12;" (assignment_expression "(&local_221)[iVar2] = (char)uVar12" (subscript_expression "(&local_221)[iVar2]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" ( (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 8),&local_221,iVar3)" ( (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (if_statement "if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }" if (parenthesized_expression "(iVar9 != 3)" ( (binary_expression "iVar9 != 3" identifier != number_literal) )) (compound_statement "{\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }" { (if_statement "if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" if (parenthesized_expression "(iVar9 == 4)" ( (binary_expression "iVar9 == 4" identifier == number_literal) )) (compound_statement "{\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" { (expression_statement "pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";" (assignment_expression "pcVar4 = "Proxy error: We don\'t support GSSAPI authentication"" identifier = (string_literal ""Proxy error: We don\'t support GSSAPI authentication"" " string_content escape_sequence string_content ")) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" identifier = (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar12 = 8000;" (assignment_expression "uVar12 = 8000" identifier = number_literal) ;) }) (else_clause "else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" else (compound_statement "{\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" { (if_statement "if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" if (parenthesized_expression "(iVar9 != 5)" ( (binary_expression "iVar9 != 5" identifier != number_literal) )) (compound_statement "{\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" { (if_statement "if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;" if (parenthesized_expression "((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0))" ( (binary_expression "(iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)" (parenthesized_expression "(iVar9 == 6)" ( (binary_expression "iVar9 == 6" identifier == number_literal) )) && (parenthesized_expression "(iVar9 = FUN_0001a470(param_1), iVar9 != 0)" ( (comma_expression "iVar9 = FUN_0001a470(param_1), iVar9 != 0" (assignment_expression "iVar9 = FUN_0001a470(param_1)" identifier = (call_expression "FUN_0001a470(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;)) (goto_statement "goto LAB_00020ad4;" goto statement_identifier ;) })) (expression_statement "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);" (assignment_expression "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x10)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (expression_statement "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);" (assignment_expression "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier = (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x74),0x11)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x74)" * (cast_expression "(undefined4 *)(param_1 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) , number_literal ))))) ;) (if_statement "if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }" if (parenthesized_expression "((*pcVar4 != '\0') || (*pcVar5 != '\0'))" ( (binary_expression "(*pcVar4 != '\0') || (*pcVar5 != '\0')" (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }" { (expression_statement "local_238 = strlen(pcVar4);" (assignment_expression "local_238 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (if_statement "if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" if (parenthesized_expression "(local_238 < 0x100)" ( (binary_expression "local_238 < 0x100" identifier < number_literal) )) (compound_statement "{\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }" { (if_statement "if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" if (parenthesized_expression "(local_238 == 0)" ( (binary_expression "local_238 == 0" identifier == number_literal) )) (compound_statement "{\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }" { (expression_statement "local_23c = 4;" (assignment_expression "local_23c = 4" identifier = number_literal) ;) (expression_statement "local_240 = 3;" (assignment_expression "local_240 = 3" identifier = number_literal) ;) (expression_statement "local_244 = 1;" (assignment_expression "local_244 = 1" identifier = number_literal) ;) (expression_statement "local_238 = 1;" (assignment_expression "local_238 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" else (compound_statement "{\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" { (expression_statement "local_244 = (undefined1)local_238;" (assignment_expression "local_244 = (undefined1)local_238" identifier = (cast_expression "(undefined1)local_238" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "local_240 = local_238 + 2;" (assignment_expression "local_240 = local_238 + 2" identifier = (binary_expression "local_238 + 2" identifier + number_literal)) ;) (expression_statement "local_23c = local_238 + 3;" (assignment_expression "local_23c = local_238 + 3" identifier = (binary_expression "local_238 + 3" identifier + number_literal)) ;) }))) }) (else_clause "else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" else (compound_statement "{\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" { (expression_statement "local_23c = 0x102;" (assignment_expression "local_23c = 0x102" identifier = number_literal) ;) (expression_statement "local_240 = 0x101;" (assignment_expression "local_240 = 0x101" identifier = number_literal) ;) (expression_statement "local_244 = 0xff;" (assignment_expression "local_244 = 0xff" identifier = number_literal) ;) (expression_statement "local_238 = 0xff;" (assignment_expression "local_238 = 0xff" identifier = number_literal) ;) }))) (expression_statement "sVar6 = strlen(pcVar5);" (assignment_expression "sVar6 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (if_statement "if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" if (parenthesized_expression "(sVar6 < 0x100)" ( (binary_expression "sVar6 < 0x100" identifier < number_literal) )) (compound_statement "{\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }" { (expression_statement "local_24d = 1;" (assignment_expression "local_24d = 1" identifier = number_literal) ;) (if_statement "if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                local_24d = (undefined1)sVar6;\n              }" { (expression_statement "local_24d = (undefined1)sVar6;" (assignment_expression "local_24d = (undefined1)sVar6" identifier = (cast_expression "(undefined1)sVar6" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) })) (expression_statement "local_24c = 1;" (assignment_expression "local_24c = 1" identifier = number_literal) ;) (if_statement "if (sVar6 != 0) {\n                local_24c = sVar6;\n              }" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                local_24c = sVar6;\n              }" { (expression_statement "local_24c = sVar6;" (assignment_expression "local_24c = sVar6" identifier = identifier) ;) })) }) (else_clause "else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" else (compound_statement "{\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" { (expression_statement "local_24d = 0xff;" (assignment_expression "local_24d = 0xff" identifier = number_literal) ;) (expression_statement "local_24c = 0xff;" (assignment_expression "local_24c = 0xff" identifier = number_literal) ;) }))) (expression_statement "_local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);" (assignment_expression "_local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1)" identifier = (call_expression "CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1)" identifier (argument_list "(CONCAT11(uStack_220._1_1_,local_244),1)" ( (call_expression "CONCAT11(uStack_220._1_1_,local_244)" identifier (argument_list "(uStack_220._1_1_,local_244)" ( (field_expression "uStack_220._1_1_" identifier . field_identifier) , identifier ))) , number_literal )))) ;) (expression_statement "__memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);" (call_expression "__memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff)" identifier (argument_list "((int)&uStack_220 + 1,pcVar4,local_238,0x1ff)" ( (binary_expression "(int)&uStack_220 + 1" (cast_expression "(int)&uStack_220" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_220" & identifier)) + number_literal) , identifier , identifier , number_literal ))) ;) (expression_statement "(&local_221)[local_240] = local_24d;" (assignment_expression "(&local_221)[local_240] = local_24d" (subscript_expression "(&local_221)[local_240]" (parenthesized_expression "(&local_221)" ( (pointer_expression "&local_221" & identifier) )) [ identifier ]) = identifier) ;) (expression_statement "pcVar4 = &local_221 + local_23c;" (assignment_expression "pcVar4 = &local_221 + local_23c" identifier = (binary_expression "&local_221 + local_23c" (pointer_expression "&local_221" & identifier) + identifier)) ;) (if_statement "if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" if (parenthesized_expression "(local_24c < 4)" ( (binary_expression "local_24c < 4" identifier < number_literal) )) (compound_statement "{\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }" { (if_statement "if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }" if (parenthesized_expression "((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0))" ( (binary_expression "(local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)" (parenthesized_expression "(local_24c != 0)" ( (binary_expression "local_24c != 0" identifier != number_literal) )) && (parenthesized_expression "(*pcVar4 = *pcVar5, (local_24c & 2) != 0)" ( (comma_expression "*pcVar4 = *pcVar5, (local_24c & 2) != 0" (assignment_expression "*pcVar4 = *pcVar5" (pointer_expression "*pcVar4" * identifier) = (pointer_expression "*pcVar5" * identifier)) , (binary_expression "(local_24c & 2) != 0" (parenthesized_expression "(local_24c & 2)" ( (binary_expression "local_24c & 2" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }" { (expression_statement "*(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));" (assignment_expression "*(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2))" (pointer_expression "*(undefined2 *)(local_225 + local_24c + local_23c + 2)" * (cast_expression "(undefined2 *)(local_225 + local_24c + local_23c + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_225 + local_24c + local_23c + 2)" ( (binary_expression "local_225 + local_24c + local_23c + 2" (binary_expression "local_225 + local_24c + local_23c" (binary_expression "local_225 + local_24c" identifier + identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined2 *)(pcVar5 + (local_24c - 2))" * (cast_expression "(undefined2 *)(pcVar5 + (local_24c - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + (local_24c - 2))" ( (binary_expression "pcVar5 + (local_24c - 2)" identifier + (parenthesized_expression "(local_24c - 2)" ( (binary_expression "local_24c - 2" identifier - number_literal) ))) ))))) ;) })) }) (else_clause "else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" else (compound_statement "{\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" { (expression_statement "*(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;" (assignment_expression "*(undefined4 *)pcVar4 = *(undefined4 *)pcVar5" (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));" (assignment_expression "*(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4))" (pointer_expression "*(undefined4 *)(local_225 + local_24c + local_23c)" * (cast_expression "(undefined4 *)(local_225 + local_24c + local_23c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_225 + local_24c + local_23c)" ( (binary_expression "local_225 + local_24c + local_23c" (binary_expression "local_225 + local_24c" identifier + identifier) + identifier) )))) = (pointer_expression "*(undefined4 *)(pcVar5 + (local_24c - 4))" * (cast_expression "(undefined4 *)(pcVar5 + (local_24c - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + (local_24c - 4))" ( (binary_expression "pcVar5 + (local_24c - 4)" identifier + (parenthesized_expression "(local_24c - 4)" ( (binary_expression "local_24c - 4" identifier - number_literal) ))) ))))) ;) (expression_statement "iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);" (assignment_expression "iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc)" identifier = (binary_expression "(int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc)" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)((uint)(local_21d + local_23c) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(local_21d + local_23c) & 0xfffffffc)" ( (binary_expression "(uint)(local_21d + local_23c) & 0xfffffffc" (call_expression "(uint)(local_21d + local_23c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_21d + local_23c)" ( (binary_expression "local_21d + local_23c" identifier + identifier) ))) & number_literal) ))))) ;) (expression_statement "pcVar4 = pcVar5 + -iVar9;" (assignment_expression "pcVar4 = pcVar5 + -iVar9" identifier = (binary_expression "pcVar5 + -iVar9" identifier + (unary_expression "-iVar9" - identifier))) ;) (expression_statement "puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);" (assignment_expression "puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(local_21d + local_23c) & 0xfffffffc)" ( (binary_expression "(uint)(local_21d + local_23c) & 0xfffffffc" (call_expression "(uint)(local_21d + local_23c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_21d + local_23c)" ( (binary_expression "local_21d + local_23c" identifier + identifier) ))) & number_literal) )))) ;) (for_statement "for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "uVar8 = local_24c + iVar9 >> 2" identifier = (binary_expression "local_24c + iVar9 >> 2" (binary_expression "local_24c + iVar9" identifier + identifier) >> number_literal)) ; (binary_expression "uVar8 != 0" identifier != number_literal) ; (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ) (compound_statement "{\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*puVar10 = *(undefined4 *)pcVar4;" (assignment_expression "*puVar10 = *(undefined4 *)pcVar4" (pointer_expression "*puVar10" * identifier) = (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "puVar10 = puVar10 + (uint)bVar11 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "puVar10 + (uint)bVar11 * -2 + 1" (binary_expression "puVar10 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" * (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" * (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" ( (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c)" ( (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , (binary_expression "local_238 + 3 + local_24c" (binary_expression "local_238 + 3" identifier + number_literal) + identifier) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 7;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 7" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00020af9;" goto statement_identifier ;) })) (expression_statement "pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";" (assignment_expression "pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!"" identifier = (string_literal ""Proxy error: Server chose username/password authentication but we didn\'t offer it!"" " string_content escape_sequence string_content ")) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" identifier = (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar12 = 8000;" (assignment_expression "uVar12 = 8000" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00020aec;" goto statement_identifier ;) })) (expression_statement "iVar9 = param_1 + 0x34;" (assignment_expression "iVar9 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001d890(iVar9);" (assignment_expression "iVar3 = FUN_0001d890(iVar9)" identifier = (call_expression "FUN_0001d890(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (if_statement "if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" if (parenthesized_expression "(4 < iVar3)" ( (binary_expression "4 < iVar3" number_literal < identifier) )) (compound_statement "{\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" { (expression_statement "FUN_0001dae0(iVar9,&local_226,5);" (call_expression "FUN_0001dae0(iVar9,&local_226,5)" identifier (argument_list "(iVar9,&local_226,5)" ( identifier , (pointer_expression "&local_226" & identifier) , number_literal ))) ;) (if_statement "if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" if (parenthesized_expression "(local_226 == '\x05')" ( (binary_expression "local_226 == '\x05'" identifier == (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }" { (if_statement "if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" if (parenthesized_expression "(local_225[0] == '\0')" ( (binary_expression "local_225[0] == '\0'" (subscript_expression "local_225[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }" { (if_statement "if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" if (parenthesized_expression "(local_225[2] == '\x03')" ( (binary_expression "local_225[2] == '\x03'" (subscript_expression "local_225[2]" identifier [ number_literal ]) == (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n              iVar3 = (byte)local_225[3] + 6;\n            }" { (expression_statement "iVar3 = (byte)local_225[3] + 6;" (assignment_expression "iVar3 = (byte)local_225[3] + 6" identifier = (binary_expression "(byte)local_225[3] + 6" (cast_expression "(byte)local_225[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_225[3]" identifier [ number_literal ])) + number_literal)) ;) }) (else_clause "else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" else (if_statement "if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" if (parenthesized_expression "(local_225[2] == '\x04')" ( (binary_expression "local_225[2] == '\x04'" (subscript_expression "local_225[2]" identifier [ number_literal ]) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n              iVar3 = 0x16;\n            }" { (expression_statement "iVar3 = 0x16;" (assignment_expression "iVar3 = 0x16" identifier = number_literal) ;) }) (else_clause "else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" else (compound_statement "{\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" { (if_statement "if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }" if (parenthesized_expression "(local_225[2] != '\x01')" ( (binary_expression "local_225[2] != '\x01'" (subscript_expression "local_225[2]" identifier [ number_literal ]) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy returned unrecognised address format"" " string_content ") , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00020af4;" goto statement_identifier ;) })) (expression_statement "iVar3 = 10;" (assignment_expression "iVar3 = 10" identifier = number_literal) ;) }))))) (expression_statement "iVar7 = FUN_0001d890(iVar9);" (assignment_expression "iVar7 = FUN_0001d890(iVar9)" identifier = (call_expression "FUN_0001d890(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (if_statement "if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }" if (parenthesized_expression "(iVar3 <= iVar7)" ( (binary_expression "iVar3 <= iVar7" identifier <= identifier) )) (compound_statement "{\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }" { (expression_statement "FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);" (call_expression "FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX)" identifier (argument_list "(iVar9,iVar3,extraout_ECX,extraout_ECX)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_0001fe90(param_1);" (call_expression "FUN_0001fe90(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) }) (else_clause "else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" else (compound_statement "{\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" { (expression_statement "pcVar4 = "Proxy error: ";" (assignment_expression "pcVar4 = "Proxy error: "" identifier = (string_literal ""Proxy error: "" " string_content ")) ;) (expression_statement "pcVar5 = &local_221;" (assignment_expression "pcVar5 = &local_221" identifier = (pointer_expression "&local_221" & identifier)) ;) (for_statement "for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }" for ( (assignment_expression "iVar9 = 0xe" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (switch_statement "switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }" switch (parenthesized_expression "((int)local_225[0] - 1U & 0xff)" ( (binary_expression "(int)local_225[0] - 1U & 0xff" (binary_expression "(int)local_225[0] - 1U" (cast_expression "(int)local_225[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_225[0]" identifier [ number_literal ])) - number_literal) & number_literal) )) (compound_statement "{\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }" { (case_statement "case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "General SOCKS server failure";" (assignment_expression "pcVar4 = "General SOCKS server failure"" identifier = (string_literal ""General SOCKS server failure"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x1d" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Connection not allowed by ruleset";" (assignment_expression "pcVar4 = "Connection not allowed by ruleset"" identifier = (string_literal ""Connection not allowed by ruleset"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x22" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Network unreachable";" (assignment_expression "pcVar4 = "Network unreachable"" identifier = (string_literal ""Network unreachable"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" for ( (assignment_expression "iVar9 = 5" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" { (expression_statement "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;" (assignment_expression "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4" (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Host unreachable";" (assignment_expression "pcVar4 = "Host unreachable"" identifier = (string_literal ""Host unreachable"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x11" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Connection refused";" (assignment_expression "pcVar4 = "Connection refused"" identifier = (string_literal ""Connection refused"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x13" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "TTL expired";" (assignment_expression "pcVar4 = "TTL expired"" identifier = (string_literal ""TTL expired"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" for ( (assignment_expression "iVar9 = 3" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" { (expression_statement "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;" (assignment_expression "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4" (pointer_expression "*(undefined4 *)pcVar5" * (cast_expression "(undefined4 *)pcVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)pcVar4" * (cast_expression "(undefined4 *)pcVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier = (binary_expression "pcVar5 + ((uint)bVar11 * -2 + 1) * 4" identifier + (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" ( (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + number_literal) )) * number_literal))) ;) })) (break_statement "break;" break ;)) (case_statement "case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Command not supported";" (assignment_expression "pcVar4 = "Command not supported"" identifier = (string_literal ""Command not supported"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x16" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" case number_literal : (expression_statement "pcVar4 = "Address type not supported";" (assignment_expression "pcVar4 = "Address type not supported"" identifier = (string_literal ""Address type not supported"" " string_content ")) ;) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" identifier = identifier) ;) (for_statement "for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" for ( (assignment_expression "iVar9 = 0x1b" identifier = number_literal) ; (binary_expression "iVar9 != 0" identifier != number_literal) ; (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" { (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);" default : (expression_statement "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);" (call_expression "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0])" identifier (argument_list "(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0])" ( identifier , number_literal , number_literal , (string_literal ""Unrecognised SOCKS error code %d"" " string_content ") , (cast_expression "(int)local_225[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_225[0]" identifier [ number_literal ])) ))) ;)) })) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),&local_221,8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (pointer_expression "&local_221" & identifier) , number_literal , number_literal ))) ;) }))) }) (else_clause "else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" else (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" { (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" * (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" ( (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" * (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0)" ( (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) , (string_literal ""Proxy error: SOCKS proxy returned wrong version number"" " string_content ") , number_literal , number_literal ))) ;) }))) })) }))) }) (else_clause "else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" else (compound_statement "{\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" { (labeled_statement "LAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";" statement_identifier : (expression_statement "pcVar4 = "Proxy error: Unexpected proxy error";" (assignment_expression "pcVar4 = "Proxy error: Unexpected proxy error"" identifier = (string_literal ""Proxy error: Unexpected proxy error"" " string_content ")) ;)) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" identifier = (pointer_expression "*(int **)(param_1 + 0xc)" * (cast_expression "(int **)(param_1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "uVar12 = 0x1f41;" (assignment_expression "uVar12 = 0x1f41" identifier = number_literal) ;) (labeled_statement "LAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);" statement_identifier : (expression_statement "(**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);" (call_expression "(**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0)" (parenthesized_expression "(**(code **)(iVar9 + 4))" ( (pointer_expression "**(code **)(iVar9 + 4)" * (pointer_expression "*(code **)(iVar9 + 4)" * (cast_expression "(code **)(iVar9 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) )) (argument_list "(piVar1,pcVar4,uVar12,0)" ( identifier , identifier , identifier , number_literal ))) ;)) }))) (labeled_statement "LAB_00020af4:\n  iVar9 = 1;" statement_identifier : (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0008d800();\n  }" { (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE 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 ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , 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 = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) , (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) )))) ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , LIT , LIT ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , 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) )))) = LIT) ;) }))))))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , LIT , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , LIT , LIT ))) ;) }))) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content ")) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + LIT) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , (binary_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) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content ")) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , LIT , LIT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (switch_statement switch (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - LIT) & LIT) )) (compound_statement { (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )) * LIT))) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )) * LIT))) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (break_statement break ;)) (case_statement default : (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) ))) ;)) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT , LIT ))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , LIT , LIT ))) ;) }))) })) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;)) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_00020a80(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return iVar9;\n}" (primitive_type "int") (function_declarator "FUN_00020a80(int param_1,int param_2)" (identifier "FUN_00020a80") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  char *pcVar5;\n  size_t sVar6;\n  int iVar7;\n  uint uVar8;\n  undefined4 extraout_ECX;\n  int iVar9;\n  undefined4 *puVar10;\n  int in_GS_OFFSET;\n  byte bVar11;\n  undefined4 uVar12;\n  undefined1 local_24d;\n  uint local_24c;\n  undefined1 local_244;\n  int local_240;\n  int local_23c;\n  size_t local_238;\n  int local_22c;\n  char local_226;\n  char local_225 [4];\n  undefined1 local_221;\n  undefined2 uStack_220;\n  undefined1 local_21e;\n  char local_21d [9];\n  char local_214 [500];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x20a8b;\n  iVar9 = *(int *)(param_1 + 0x44);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }\n  if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }\n  if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }\nLAB_00020af4:\n  iVar9 = 1;\nLAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return iVar9;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "undefined1 local_24d;" (type_identifier "undefined1") (identifier "local_24d") (; ";")) (declaration "uint local_24c;" (type_identifier "uint") (identifier "local_24c") (; ";")) (declaration "undefined1 local_244;" (type_identifier "undefined1") (identifier "local_244") (; ";")) (declaration "int local_240;" (primitive_type "int") (identifier "local_240") (; ";")) (declaration "int local_23c;" (primitive_type "int") (identifier "local_23c") (; ";")) (declaration "size_t local_238;" (primitive_type "size_t") (identifier "local_238") (; ";")) (declaration "int local_22c;" (primitive_type "int") (identifier "local_22c") (; ";")) (declaration "char local_226;" (primitive_type "char") (identifier "local_226") (; ";")) (declaration "char local_225 [4];" (primitive_type "char") (array_declarator "local_225 [4]" (identifier "local_225") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 local_221;" (type_identifier "undefined1") (identifier "local_221") (; ";")) (declaration "undefined2 uStack_220;" (type_identifier "undefined2") (identifier "uStack_220") (; ";")) (declaration "undefined1 local_21e;" (type_identifier "undefined1") (identifier "local_21e") (; ";")) (declaration "char local_21d [9];" (primitive_type "char") (array_declarator "local_21d [9]" (identifier "local_21d") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "char local_214 [500];" (primitive_type "char") (array_declarator "local_214 [500]" (identifier "local_214") ([ "[") (number_literal "500") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" (identifier "bVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x20a8b;" (assignment_expression "uStack_14 = 0x20a8b" (identifier "uStack_14") (= "=") (number_literal "0x20a8b")) (; ";")) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -1) {\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    _local_221 = CONCAT21(uStack_220,5);\n    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }\n    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);\n    *(undefined4 *)(param_1 + 0x44) = 1;\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" ({ "{") (expression_statement "_local_221 = CONCAT21(uStack_220,5);" (assignment_expression "_local_221 = CONCAT21(uStack_220,5)" (identifier "_local_221") (= "=") (call_expression "CONCAT21(uStack_220,5)" (identifier "CONCAT21") (argument_list "(uStack_220,5)" (( "(") (identifier "uStack_220") (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);" (assignment_expression "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" (identifier "FUN_00018b60") (argument_list "(*(undefined4 *)(param_1 + 0x74),0x10)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x74)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (, ",") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);" (assignment_expression "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" (identifier "pcVar5") (= "=") (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" (identifier "FUN_00018b60") (argument_list "(*(undefined4 *)(param_1 + 0x74),0x11)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x74)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (, ",") (number_literal "0x11") () ")"))))) (; ";")) (if_statement "if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }\n    else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" (if "if") (parenthesized_expression "((*pcVar4 == '\0') && (*pcVar5 == '\0'))" (( "(") (binary_expression "(*pcVar4 == '\0') && (*pcVar5 == '\0')" (parenthesized_expression "(*pcVar4 == '\0')" (( "(") (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar5 == '\0')" (( "(") (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      local_22c = 3;\n      _local_221 = CONCAT21(1,local_221);\n    }" ({ "{") (expression_statement "local_22c = 3;" (assignment_expression "local_22c = 3" (identifier "local_22c") (= "=") (number_literal "3")) (; ";")) (expression_statement "_local_221 = CONCAT21(1,local_221);" (assignment_expression "_local_221 = CONCAT21(1,local_221)" (identifier "_local_221") (= "=") (call_expression "CONCAT21(1,local_221)" (identifier "CONCAT21") (argument_list "(1,local_221)" (( "(") (number_literal "1") (, ",") (identifier "local_221") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" (else "else") (compound_statement "{\n      _local_221 = _local_221 & 0xffff;\n      local_22c = 3;\n      FUN_0001a140(&local_221,&local_22c);\n      (&local_221)[local_22c] = 2;\n      _local_221 = CONCAT11((char)local_22c + -1,local_221);\n      local_22c = local_22c + 1;\n    }" ({ "{") (expression_statement "_local_221 = _local_221 & 0xffff;" (assignment_expression "_local_221 = _local_221 & 0xffff" (identifier "_local_221") (= "=") (binary_expression "_local_221 & 0xffff" (identifier "_local_221") (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "local_22c = 3;" (assignment_expression "local_22c = 3" (identifier "local_22c") (= "=") (number_literal "3")) (; ";")) (expression_statement "FUN_0001a140(&local_221,&local_22c);" (call_expression "FUN_0001a140(&local_221,&local_22c)" (identifier "FUN_0001a140") (argument_list "(&local_221,&local_22c)" (( "(") (pointer_expression "&local_221" (& "&") (identifier "local_221")) (, ",") (pointer_expression "&local_22c" (& "&") (identifier "local_22c")) () ")"))) (; ";")) (expression_statement "(&local_221)[local_22c] = 2;" (assignment_expression "(&local_221)[local_22c] = 2" (subscript_expression "(&local_221)[local_22c]" (parenthesized_expression "(&local_221)" (( "(") (pointer_expression "&local_221" (& "&") (identifier "local_221")) () ")")) ([ "[") (identifier "local_22c") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "_local_221 = CONCAT11((char)local_22c + -1,local_221);" (assignment_expression "_local_221 = CONCAT11((char)local_22c + -1,local_221)" (identifier "_local_221") (= "=") (call_expression "CONCAT11((char)local_22c + -1,local_221)" (identifier "CONCAT11") (argument_list "((char)local_22c + -1,local_221)" (( "(") (binary_expression "(char)local_22c + -1" (cast_expression "(char)local_22c" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_22c")) (+ "+") (number_literal "-1")) (, ",") (identifier "local_221") () ")")))) (; ";")) (expression_statement "local_22c = local_22c + 1;" (assignment_expression "local_22c = local_22c + 1" (identifier "local_22c") (= "=") (binary_expression "local_22c + 1" (identifier "local_22c") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" (( "(") (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" (* "*") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 8),&local_221,local_22c)" (( "(") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "&local_221" (& "&") (identifier "local_221")) (, ",") (identifier "local_22c") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 1;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 1" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = 0;\n    (**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));\n    goto LAB_00020af9;\n  }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),\n               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58))" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x54)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (if_statement "if (param_2 == 1) {\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" (if "if") (parenthesized_expression "(param_2 == 1)" (( "(") (binary_expression "param_2 == 1" (identifier "param_2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    iVar9 = 0;\n    goto LAB_00020af9;\n  }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (if_statement "if (param_2 == 3) {\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }" (if "if") (parenthesized_expression "(param_2 == 3)" (( "(") (binary_expression "param_2 == 3" (identifier "param_2") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));\n    goto LAB_00020af9;\n  }" ({ "{") (expression_statement "iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70));" (assignment_expression "iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" (identifier "iVar9") (= "=") (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 0x10))\n                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 0x10))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 0x10)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 0x10)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 0x10)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 0x10" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),\n                       *(undefined4 *)(param_1 + 0x70))" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x70)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) () ")")))) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (if_statement "if (param_2 == 2) {\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }\n  else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" (if "if") (parenthesized_expression "(param_2 == 2)" (( "(") (binary_expression "param_2 == 2" (identifier "param_2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }\n    if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (iVar9 == 1) {\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }" (if "if") (parenthesized_expression "(iVar9 == 1)" (( "(") (binary_expression "iVar9 == 1" (identifier "iVar9") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      iVar3 = param_1 + 0x34;\n      iVar7 = FUN_0001d890(iVar3);\n      iVar9 = 1;\n      if (iVar7 < 2) goto LAB_00020af9;\n      FUN_0001dae0(iVar3,&local_221,2);\n      if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }\n      if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }\n      FUN_0001da00(iVar3,2);\n      iVar9 = *(int *)(param_1 + 0x44);\n    }" ({ "{") (expression_statement "iVar3 = param_1 + 0x34;" (assignment_expression "iVar3 = param_1 + 0x34" (identifier "iVar3") (= "=") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34"))) (; ";")) (expression_statement "iVar7 = FUN_0001d890(iVar3);" (assignment_expression "iVar7 = FUN_0001d890(iVar3)" (identifier "iVar7") (= "=") (call_expression "FUN_0001d890(iVar3)" (identifier "FUN_0001d890") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")")))) (; ";")) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar7 < 2) goto LAB_00020af9;" (if "if") (parenthesized_expression "(iVar7 < 2)" (( "(") (binary_expression "iVar7 < 2" (identifier "iVar7") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";"))) (expression_statement "FUN_0001dae0(iVar3,&local_221,2);" (call_expression "FUN_0001dae0(iVar3,&local_221,2)" (identifier "FUN_0001dae0") (argument_list "(iVar3,&local_221,2)" (( "(") (identifier "iVar3") (, ",") (pointer_expression "&local_221" (& "&") (identifier "local_221")) (, ",") (number_literal "2") () ")"))) (; ";")) (if_statement "if (local_221 != '\x05') {\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }" (if "if") (parenthesized_expression "(local_221 != '\x05')" (( "(") (binary_expression "local_221 != '\x05'" (identifier "local_221") (!= "!=") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n        (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);\n        goto LAB_00020af9;\n      }" ({ "{") (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",\n                   8000,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (string_literal ""Proxy error: SOCKS proxy returned unexpected version"" (" """) (string_content "Proxy error: SOCKS proxy returned unexpected version") (" """)) (, ",") (number_literal "8000") (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (if_statement "if ((char)uStack_220 == '\0') {\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }\n      else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" (if "if") (parenthesized_expression "((char)uStack_220 == '\0')" (( "(") (binary_expression "(char)uStack_220 == '\0'" (cast_expression "(char)uStack_220" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uStack_220")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 2;\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x44) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" (else "else") (if_statement "if ((char)uStack_220 == '\x01') {\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }\n      else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" (if "if") (parenthesized_expression "((char)uStack_220 == '\x01')" (( "(") (binary_expression "(char)uStack_220 == '\x01'" (cast_expression "(char)uStack_220" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uStack_220")) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 4;\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x44) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" (else "else") (if_statement "if ((char)uStack_220 == '\x02') {\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }\n      else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" (if "if") (parenthesized_expression "((char)uStack_220 == '\x02')" (( "(") (binary_expression "(char)uStack_220 == '\x02'" (cast_expression "(char)uStack_220" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uStack_220")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x44) = 5;\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x44) = 5;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 5" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "5")) (; ";")) (} "}")) (else_clause "else {\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" (else "else") (compound_statement "{\n        if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }\n        *(undefined4 *)(param_1 + 0x44) = 6;\n      }" ({ "{") (if_statement "if ((char)uStack_220 != '\x03') {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" (if "if") (parenthesized_expression "((char)uStack_220 != '\x03')" (( "(") (binary_expression "(char)uStack_220 != '\x03'" (cast_expression "(char)uStack_220" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uStack_220")) (!= "!=") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) () ")")) (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);\n          goto LAB_00020af9;\n        }" ({ "{") (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (string_literal ""Proxy error: SOCKS proxy did not accept our authentication"" (" """) (string_content "Proxy error: SOCKS proxy did not accept our authentication") (" """)) (, ",") (number_literal "8000") (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 6;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 6" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "6")) (; ";")) (} "}")))))))) (expression_statement "FUN_0001da00(iVar3,2);" (call_expression "FUN_0001da00(iVar3,2)" (identifier "FUN_0001da00") (argument_list "(iVar3,2)" (( "(") (identifier "iVar3") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (iVar9 == 7) {\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }\n    else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(iVar9 == 7)" (( "(") (binary_expression "iVar9 == 7" (identifier "iVar9") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }\n    }" ({ "{") (expression_statement "iVar9 = param_1 + 0x34;" (assignment_expression "iVar9 = param_1 + 0x34" (identifier "iVar9") (= "=") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34"))) (; ";")) (expression_statement "iVar3 = FUN_0001d890(iVar9);" (assignment_expression "iVar3 = FUN_0001d890(iVar9)" (identifier "iVar3") (= "=") (call_expression "FUN_0001d890(iVar9)" (identifier "FUN_0001d890") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")")))) (; ";")) (if_statement "if (1 < iVar3) {\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" (if "if") (parenthesized_expression "(1 < iVar3)" (( "(") (binary_expression "1 < iVar3" (number_literal "1") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n        FUN_0001dae0(iVar9,&local_221,2);\n        if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }\n      }" ({ "{") (expression_statement "FUN_0001dae0(iVar9,&local_221,2);" (call_expression "FUN_0001dae0(iVar9,&local_221,2)" (identifier "FUN_0001dae0") (argument_list "(iVar9,&local_221,2)" (( "(") (identifier "iVar9") (, ",") (pointer_expression "&local_221" (& "&") (identifier "local_221")) (, ",") (number_literal "2") () ")"))) (; ";")) (if_statement "if (local_221 == '\x01') {\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" (if "if") (parenthesized_expression "(local_221 == '\x01')" (( "(") (binary_expression "local_221 == '\x01'" (identifier "local_221") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n          if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);\n        }" ({ "{") (if_statement "if ((char)uStack_220 == '\0') {\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }" (if "if") (parenthesized_expression "((char)uStack_220 == '\0')" (( "(") (binary_expression "(char)uStack_220 == '\0'" (cast_expression "(char)uStack_220" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uStack_220")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            FUN_0001da00(iVar9,2);\n            *(undefined4 *)(param_1 + 0x44) = 2;\n            goto LAB_00020dd0;\n          }" ({ "{") (expression_statement "FUN_0001da00(iVar9,2);" (call_expression "FUN_0001da00(iVar9,2)" (identifier "FUN_0001da00") (argument_list "(iVar9,2)" (( "(") (identifier "iVar9") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 2;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 2" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_00020dd0;" (goto "goto") (statement_identifier "LAB_00020dd0") (; ";")) (} "}"))) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy refused password authentication",8000,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (string_literal ""Proxy error: SOCKS proxy refused password authentication"" (" """) (string_content "Proxy error: SOCKS proxy refused password authentication") (" """)) (, ",") (number_literal "8000") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" (else "else") (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);\n        }" ({ "{") (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS password subnegotiation contained wrong version number",\n                     8000,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (string_literal ""Proxy error: SOCKS password subnegotiation contained wrong version number"" (" """) (string_content "Proxy error: SOCKS password subnegotiation contained wrong version number") (" """)) (, ",") (number_literal "8000") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" (else "else") (compound_statement "{\n      if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }\n      if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }\n      if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }\n      iVar9 = param_1 + 0x34;\n      iVar3 = FUN_0001d890(iVar9);\n      if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }\n    }" ({ "{") (if_statement "if (iVar9 == 8) {\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }" (if "if") (parenthesized_expression "(iVar9 == 8)" (( "(") (binary_expression "iVar9 == 8" (identifier "iVar9") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n        iVar9 = FUN_0001a160(param_1);\n        if (iVar9 != 0) goto LAB_00020af9;\n        iVar9 = *(int *)(param_1 + 0x44);\n      }" ({ "{") (expression_statement "iVar9 = FUN_0001a160(param_1);" (assignment_expression "iVar9 = FUN_0001a160(param_1)" (identifier "iVar9") (= "=") (call_expression "FUN_0001a160(param_1)" (identifier "FUN_0001a160") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar9 != 0) goto LAB_00020af9;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";"))) (expression_statement "iVar9 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x44)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (iVar9 == 2) {\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }" (if "if") (parenthesized_expression "(iVar9 == 2)" (( "(") (binary_expression "iVar9 == 2" (identifier "iVar9") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));\n        if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }\n        iVar9 = 1;\n        _local_221 = 0x105;\n        uVar12 = *(undefined4 *)(param_1 + 0x14);\n        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);\n        (&local_221)[iVar2] = (char)uVar12;\n        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);\n        *(undefined4 *)(param_1 + 0x44) = 3;\n        goto LAB_00020af9;\n      }" ({ "{") (labeled_statement "LAB_00020dd0:\n        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));" (statement_identifier "LAB_00020dd0") (: ":") (expression_statement "iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));" (assignment_expression "iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10))" (identifier "iVar9") (= "=") (call_expression "FUN_00084330(*(undefined4 *)(param_1 + 0x10))" (identifier "FUN_00084330") (argument_list "(*(undefined4 *)(param_1 + 0x10))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";"))) (if_statement "if (iVar9 == 1) {\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }\n        else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" (if "if") (parenthesized_expression "(iVar9 == 1)" (( "(") (binary_expression "iVar9 == 1" (identifier "iVar9") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          local_21e = 1;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 9;\n          iVar7 = 8;\n          iVar3 = 10;\n        }" ({ "{") (expression_statement "local_21e = 1;" (assignment_expression "local_21e = 1" (identifier "local_21e") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);" (call_expression "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d)" (identifier "FUN_00084360") (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "local_21d") () ")"))) (; ";")) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" (identifier "iVar2") (= "=") (number_literal "9")) (; ";")) (expression_statement "iVar7 = 8;" (assignment_expression "iVar7 = 8" (identifier "iVar7") (= "=") (number_literal "8")) (; ";")) (expression_statement "iVar3 = 10;" (assignment_expression "iVar3 = 10" (identifier "iVar3") (= "=") (number_literal "10")) (; ";")) (} "}")) (else_clause "else if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" (else "else") (if_statement "if (iVar9 == 2) {\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }\n        else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" (if "if") (parenthesized_expression "(iVar9 == 2)" (( "(") (binary_expression "iVar9 == 2" (identifier "iVar9") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          local_21e = 4;\n          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);\n          iVar2 = 0x15;\n          iVar7 = 0x14;\n          iVar3 = 0x16;\n        }" ({ "{") (expression_statement "local_21e = 4;" (assignment_expression "local_21e = 4" (identifier "local_21e") (= "=") (number_literal "4")) (; ";")) (expression_statement "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);" (call_expression "FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d)" (identifier "FUN_00084360") (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "local_21d") () ")"))) (; ";")) (expression_statement "iVar2 = 0x15;" (assignment_expression "iVar2 = 0x15" (identifier "iVar2") (= "=") (number_literal "0x15")) (; ";")) (expression_statement "iVar7 = 0x14;" (assignment_expression "iVar7 = 0x14" (identifier "iVar7") (= "=") (number_literal "0x14")) (; ";")) (expression_statement "iVar3 = 0x16;" (assignment_expression "iVar3 = 0x16" (identifier "iVar3") (= "=") (number_literal "0x16")) (; ";")) (} "}")) (else_clause "else {\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" (else "else") (compound_statement "{\n          if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }\n          local_21e = 3;\n          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);\n          sVar6 = strlen(local_21d + 1);\n          local_21d[0] = (char)sVar6;\n          iVar2 = (int)local_21d[0];\n          iVar3 = iVar2 + 7;\n          iVar7 = iVar2 + 5;\n          iVar2 = iVar2 + 6;\n        }" ({ "{") (if_statement "if (iVar9 != 3) {\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" (if "if") (parenthesized_expression "(iVar9 != 3)" (( "(") (binary_expression "iVar9 != 3" (identifier "iVar9") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n                    \n            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");\n          }" ({ "{") (expression_statement "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");" (call_expression "__assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" (identifier "__assert_fail") (argument_list "("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate")" (( "(") (string_literal ""type == ADDRTYPE_NAME"" (" """) (string_content "type == ADDRTYPE_NAME") (" """)) (, ",") (string_literal ""proxy.c"" (" """) (string_content "proxy.c") (" """)) (, ",") (number_literal "0x46a") (, ",") (string_literal ""proxy_socks5_negotiate"" (" """) (string_content "proxy_socks5_negotiate") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "local_21e = 3;" (assignment_expression "local_21e = 3" (identifier "local_21e") (= "=") (number_literal "3")) (; ";")) (expression_statement "FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);" (call_expression "FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100)" (identifier "FUN_00084190") (argument_list "(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (binary_expression "local_21d + 1" (identifier "local_21d") (+ "+") (number_literal "1")) (, ",") (number_literal "0x100") () ")"))) (; ";")) (expression_statement "sVar6 = strlen(local_21d + 1);" (assignment_expression "sVar6 = strlen(local_21d + 1)" (identifier "sVar6") (= "=") (call_expression "strlen(local_21d + 1)" (identifier "strlen") (argument_list "(local_21d + 1)" (( "(") (binary_expression "local_21d + 1" (identifier "local_21d") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_21d[0] = (char)sVar6;" (assignment_expression "local_21d[0] = (char)sVar6" (subscript_expression "local_21d[0]" (identifier "local_21d") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(char)sVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "sVar6"))) (; ";")) (expression_statement "iVar2 = (int)local_21d[0];" (assignment_expression "iVar2 = (int)local_21d[0]" (identifier "iVar2") (= "=") (cast_expression "(int)local_21d[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_21d[0]" (identifier "local_21d") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "iVar3 = iVar2 + 7;" (assignment_expression "iVar3 = iVar2 + 7" (identifier "iVar3") (= "=") (binary_expression "iVar2 + 7" (identifier "iVar2") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "iVar7 = iVar2 + 5;" (assignment_expression "iVar7 = iVar2 + 5" (identifier "iVar7") (= "=") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "iVar2 = iVar2 + 6;" (assignment_expression "iVar2 = iVar2 + 6" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 6" (identifier "iVar2") (+ "+") (number_literal "6"))) (; ";")) (} "}")))))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "_local_221 = 0x105;" (assignment_expression "_local_221 = 0x105" (identifier "_local_221") (= "=") (number_literal "0x105")) (; ";")) (expression_statement "uVar12 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar12 = *(undefined4 *)(param_1 + 0x14)" (identifier "uVar12") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "(&local_221)[iVar7] = (char)((uint)uVar12 >> 8);" (assignment_expression "(&local_221)[iVar7] = (char)((uint)uVar12 >> 8)" (subscript_expression "(&local_221)[iVar7]" (parenthesized_expression "(&local_221)" (( "(") (pointer_expression "&local_221" (& "&") (identifier "local_221")) () ")")) ([ "[") (identifier "iVar7") (] "]")) (= "=") (cast_expression "(char)((uint)uVar12 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar12 >> 8)" (( "(") (binary_expression "(uint)uVar12 >> 8" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "(&local_221)[iVar2] = (char)uVar12;" (assignment_expression "(&local_221)[iVar2] = (char)uVar12" (subscript_expression "(&local_221)[iVar2]" (parenthesized_expression "(&local_221)" (( "(") (pointer_expression "&local_221" (& "&") (identifier "local_221")) () ")")) ([ "[") (identifier "iVar2") (] "]")) (= "=") (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" (( "(") (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" (* "*") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 8),&local_221,iVar3)" (( "(") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "&local_221" (& "&") (identifier "local_221")) (, ",") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "3")) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (if_statement "if (iVar9 != 3) {\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }" (if "if") (parenthesized_expression "(iVar9 != 3)" (( "(") (binary_expression "iVar9 != 3" (identifier "iVar9") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n        if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        goto LAB_00020aec;\n      }" ({ "{") (if_statement "if (iVar9 == 4) {\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }\n        else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" (if "if") (parenthesized_expression "(iVar9 == 4)" (( "(") (binary_expression "iVar9 == 4" (identifier "iVar9") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" ({ "{") (expression_statement "pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";" (assignment_expression "pcVar4 = "Proxy error: We don\'t support GSSAPI authentication"" (identifier "pcVar4") (= "=") (string_literal ""Proxy error: We don\'t support GSSAPI authentication"" (" """) (string_content "Proxy error: We don") (escape_sequence "\'") (string_content "t support GSSAPI authentication") (" """))) (; ";")) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" (identifier "iVar9") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "uVar12 = 8000;" (assignment_expression "uVar12 = 8000" (identifier "uVar12") (= "=") (number_literal "8000")) (; ";")) (} "}")) (else_clause "else {\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" (else "else") (compound_statement "{\n          if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }\n          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);\n          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);\n          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }\n          pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";\n          piVar1 = *(int **)(param_1 + 0xc);\n          iVar9 = *piVar1;\n          uVar12 = 8000;\n        }" ({ "{") (if_statement "if (iVar9 != 5) {\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" (if "if") (parenthesized_expression "(iVar9 != 5)" (( "(") (binary_expression "iVar9 != 5" (identifier "iVar9") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;\n            goto LAB_00020ad4;\n          }" ({ "{") (if_statement "if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;" (if "if") (parenthesized_expression "((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0))" (( "(") (binary_expression "(iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)" (parenthesized_expression "(iVar9 == 6)" (( "(") (binary_expression "iVar9 == 6" (identifier "iVar9") (== "==") (number_literal "6")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = FUN_0001a470(param_1), iVar9 != 0)" (( "(") (comma_expression "iVar9 = FUN_0001a470(param_1), iVar9 != 0" (assignment_expression "iVar9 = FUN_0001a470(param_1)" (identifier "iVar9") (= "=") (call_expression "FUN_0001a470(param_1)" (identifier "FUN_0001a470") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";"))) (goto_statement "goto LAB_00020ad4;" (goto "goto") (statement_identifier "LAB_00020ad4") (; ";")) (} "}"))) (expression_statement "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);" (assignment_expression "pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10)" (identifier "FUN_00018b60") (argument_list "(*(undefined4 *)(param_1 + 0x74),0x10)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x74)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (, ",") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);" (assignment_expression "pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" (identifier "pcVar5") (= "=") (cast_expression "(char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11)" (identifier "FUN_00018b60") (argument_list "(*(undefined4 *)(param_1 + 0x74),0x11)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x74)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (, ",") (number_literal "0x11") () ")"))))) (; ";")) (if_statement "if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }" (if "if") (parenthesized_expression "((*pcVar4 != '\0') || (*pcVar5 != '\0'))" (( "(") (binary_expression "(*pcVar4 != '\0') || (*pcVar5 != '\0')" (parenthesized_expression "(*pcVar4 != '\0')" (( "(") (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            local_238 = strlen(pcVar4);\n            if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }\n            sVar6 = strlen(pcVar5);\n            if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }\n            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);\n            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);\n            (&local_221)[local_240] = local_24d;\n            pcVar4 = &local_221 + local_23c;\n            if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }\n            iVar9 = 1;\n            (**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);\n            *(undefined4 *)(param_1 + 0x44) = 7;\n            goto LAB_00020af9;\n          }" ({ "{") (expression_statement "local_238 = strlen(pcVar4);" (assignment_expression "local_238 = strlen(pcVar4)" (identifier "local_238") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (if_statement "if (local_238 < 0x100) {\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }\n            else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" (if "if") (parenthesized_expression "(local_238 < 0x100)" (( "(") (binary_expression "local_238 < 0x100" (identifier "local_238") (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n              if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }\n            }" ({ "{") (if_statement "if (local_238 == 0) {\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }\n              else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" (if "if") (parenthesized_expression "(local_238 == 0)" (( "(") (binary_expression "local_238 == 0" (identifier "local_238") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_23c = 4;\n                local_240 = 3;\n                local_244 = 1;\n                local_238 = 1;\n              }" ({ "{") (expression_statement "local_23c = 4;" (assignment_expression "local_23c = 4" (identifier "local_23c") (= "=") (number_literal "4")) (; ";")) (expression_statement "local_240 = 3;" (assignment_expression "local_240 = 3" (identifier "local_240") (= "=") (number_literal "3")) (; ";")) (expression_statement "local_244 = 1;" (assignment_expression "local_244 = 1" (identifier "local_244") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_238 = 1;" (assignment_expression "local_238 = 1" (identifier "local_238") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" (else "else") (compound_statement "{\n                local_244 = (undefined1)local_238;\n                local_240 = local_238 + 2;\n                local_23c = local_238 + 3;\n              }" ({ "{") (expression_statement "local_244 = (undefined1)local_238;" (assignment_expression "local_244 = (undefined1)local_238" (identifier "local_244") (= "=") (cast_expression "(undefined1)local_238" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "local_238"))) (; ";")) (expression_statement "local_240 = local_238 + 2;" (assignment_expression "local_240 = local_238 + 2" (identifier "local_240") (= "=") (binary_expression "local_238 + 2" (identifier "local_238") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_23c = local_238 + 3;" (assignment_expression "local_23c = local_238 + 3" (identifier "local_23c") (= "=") (binary_expression "local_238 + 3" (identifier "local_238") (+ "+") (number_literal "3"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" (else "else") (compound_statement "{\n              local_23c = 0x102;\n              local_240 = 0x101;\n              local_244 = 0xff;\n              local_238 = 0xff;\n            }" ({ "{") (expression_statement "local_23c = 0x102;" (assignment_expression "local_23c = 0x102" (identifier "local_23c") (= "=") (number_literal "0x102")) (; ";")) (expression_statement "local_240 = 0x101;" (assignment_expression "local_240 = 0x101" (identifier "local_240") (= "=") (number_literal "0x101")) (; ";")) (expression_statement "local_244 = 0xff;" (assignment_expression "local_244 = 0xff" (identifier "local_244") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "local_238 = 0xff;" (assignment_expression "local_238 = 0xff" (identifier "local_238") (= "=") (number_literal "0xff")) (; ";")) (} "}")))) (expression_statement "sVar6 = strlen(pcVar5);" (assignment_expression "sVar6 = strlen(pcVar5)" (identifier "sVar6") (= "=") (call_expression "strlen(pcVar5)" (identifier "strlen") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";")) (if_statement "if (sVar6 < 0x100) {\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }\n            else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" (if "if") (parenthesized_expression "(sVar6 < 0x100)" (( "(") (binary_expression "sVar6 < 0x100" (identifier "sVar6") (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n              local_24d = 1;\n              if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }\n              local_24c = 1;\n              if (sVar6 != 0) {\n                local_24c = sVar6;\n              }\n            }" ({ "{") (expression_statement "local_24d = 1;" (assignment_expression "local_24d = 1" (identifier "local_24d") (= "=") (number_literal "1")) (; ";")) (if_statement "if (sVar6 != 0) {\n                local_24d = (undefined1)sVar6;\n              }" (if "if") (parenthesized_expression "(sVar6 != 0)" (( "(") (binary_expression "sVar6 != 0" (identifier "sVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                local_24d = (undefined1)sVar6;\n              }" ({ "{") (expression_statement "local_24d = (undefined1)sVar6;" (assignment_expression "local_24d = (undefined1)sVar6" (identifier "local_24d") (= "=") (cast_expression "(undefined1)sVar6" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "sVar6"))) (; ";")) (} "}"))) (expression_statement "local_24c = 1;" (assignment_expression "local_24c = 1" (identifier "local_24c") (= "=") (number_literal "1")) (; ";")) (if_statement "if (sVar6 != 0) {\n                local_24c = sVar6;\n              }" (if "if") (parenthesized_expression "(sVar6 != 0)" (( "(") (binary_expression "sVar6 != 0" (identifier "sVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                local_24c = sVar6;\n              }" ({ "{") (expression_statement "local_24c = sVar6;" (assignment_expression "local_24c = sVar6" (identifier "local_24c") (= "=") (identifier "sVar6")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" (else "else") (compound_statement "{\n              local_24d = 0xff;\n              local_24c = 0xff;\n            }" ({ "{") (expression_statement "local_24d = 0xff;" (assignment_expression "local_24d = 0xff" (identifier "local_24d") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "local_24c = 0xff;" (assignment_expression "local_24c = 0xff" (identifier "local_24c") (= "=") (number_literal "0xff")) (; ";")) (} "}")))) (expression_statement "_local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);" (assignment_expression "_local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1)" (identifier "_local_221") (= "=") (call_expression "CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1)" (identifier "CONCAT21") (argument_list "(CONCAT11(uStack_220._1_1_,local_244),1)" (( "(") (call_expression "CONCAT11(uStack_220._1_1_,local_244)" (identifier "CONCAT11") (argument_list "(uStack_220._1_1_,local_244)" (( "(") (field_expression "uStack_220._1_1_" (identifier "uStack_220") (. ".") (field_identifier "_1_1_")) (, ",") (identifier "local_244") () ")"))) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "__memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);" (call_expression "__memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff)" (identifier "__memcpy_chk") (argument_list "((int)&uStack_220 + 1,pcVar4,local_238,0x1ff)" (( "(") (binary_expression "(int)&uStack_220 + 1" (cast_expression "(int)&uStack_220" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&uStack_220" (& "&") (identifier "uStack_220"))) (+ "+") (number_literal "1")) (, ",") (identifier "pcVar4") (, ",") (identifier "local_238") (, ",") (number_literal "0x1ff") () ")"))) (; ";")) (expression_statement "(&local_221)[local_240] = local_24d;" (assignment_expression "(&local_221)[local_240] = local_24d" (subscript_expression "(&local_221)[local_240]" (parenthesized_expression "(&local_221)" (( "(") (pointer_expression "&local_221" (& "&") (identifier "local_221")) () ")")) ([ "[") (identifier "local_240") (] "]")) (= "=") (identifier "local_24d")) (; ";")) (expression_statement "pcVar4 = &local_221 + local_23c;" (assignment_expression "pcVar4 = &local_221 + local_23c" (identifier "pcVar4") (= "=") (binary_expression "&local_221 + local_23c" (pointer_expression "&local_221" (& "&") (identifier "local_221")) (+ "+") (identifier "local_23c"))) (; ";")) (if_statement "if (local_24c < 4) {\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }\n            else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" (if "if") (parenthesized_expression "(local_24c < 4)" (( "(") (binary_expression "local_24c < 4" (identifier "local_24c") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }\n            }" ({ "{") (if_statement "if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }" (if "if") (parenthesized_expression "((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0))" (( "(") (binary_expression "(local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)" (parenthesized_expression "(local_24c != 0)" (( "(") (binary_expression "local_24c != 0" (identifier "local_24c") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar4 = *pcVar5, (local_24c & 2) != 0)" (( "(") (comma_expression "*pcVar4 = *pcVar5, (local_24c & 2) != 0" (assignment_expression "*pcVar4 = *pcVar5" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (= "=") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5"))) (, ",") (binary_expression "(local_24c & 2) != 0" (parenthesized_expression "(local_24c & 2)" (( "(") (binary_expression "local_24c & 2" (identifier "local_24c") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));\n              }" ({ "{") (expression_statement "*(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2));" (assignment_expression "*(undefined2 *)(local_225 + local_24c + local_23c + 2) =\n                     *(undefined2 *)(pcVar5 + (local_24c - 2))" (pointer_expression "*(undefined2 *)(local_225 + local_24c + local_23c + 2)" (* "*") (cast_expression "(undefined2 *)(local_225 + local_24c + local_23c + 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_225 + local_24c + local_23c + 2)" (( "(") (binary_expression "local_225 + local_24c + local_23c + 2" (binary_expression "local_225 + local_24c + local_23c" (binary_expression "local_225 + local_24c" (identifier "local_225") (+ "+") (identifier "local_24c")) (+ "+") (identifier "local_23c")) (+ "+") (number_literal "2")) () ")")))) (= "=") (pointer_expression "*(undefined2 *)(pcVar5 + (local_24c - 2))" (* "*") (cast_expression "(undefined2 *)(pcVar5 + (local_24c - 2))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + (local_24c - 2))" (( "(") (binary_expression "pcVar5 + (local_24c - 2)" (identifier "pcVar5") (+ "+") (parenthesized_expression "(local_24c - 2)" (( "(") (binary_expression "local_24c - 2" (identifier "local_24c") (- "-") (number_literal "2")) () ")"))) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" (else "else") (compound_statement "{\n              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;\n              *(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));\n              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);\n              pcVar4 = pcVar5 + -iVar9;\n              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);\n              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }\n            }" ({ "{") (expression_statement "*(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;" (assignment_expression "*(undefined4 *)pcVar4 = *(undefined4 *)pcVar5" (pointer_expression "*(undefined4 *)pcVar4" (* "*") (cast_expression "(undefined4 *)pcVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar4"))) (= "=") (pointer_expression "*(undefined4 *)pcVar5" (* "*") (cast_expression "(undefined4 *)pcVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar5")))) (; ";")) (expression_statement "*(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4));" (assignment_expression "*(undefined4 *)(local_225 + local_24c + local_23c) =\n                   *(undefined4 *)(pcVar5 + (local_24c - 4))" (pointer_expression "*(undefined4 *)(local_225 + local_24c + local_23c)" (* "*") (cast_expression "(undefined4 *)(local_225 + local_24c + local_23c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_225 + local_24c + local_23c)" (( "(") (binary_expression "local_225 + local_24c + local_23c" (binary_expression "local_225 + local_24c" (identifier "local_225") (+ "+") (identifier "local_24c")) (+ "+") (identifier "local_23c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(pcVar5 + (local_24c - 4))" (* "*") (cast_expression "(undefined4 *)(pcVar5 + (local_24c - 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + (local_24c - 4))" (( "(") (binary_expression "pcVar5 + (local_24c - 4)" (identifier "pcVar5") (+ "+") (parenthesized_expression "(local_24c - 4)" (( "(") (binary_expression "local_24c - 4" (identifier "local_24c") (- "-") (number_literal "4")) () ")"))) () ")"))))) (; ";")) (expression_statement "iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);" (assignment_expression "iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc)" (identifier "iVar9") (= "=") (binary_expression "(int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc)" (cast_expression "(int)pcVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar4")) (- "-") (cast_expression "(int)((uint)(local_21d + local_23c) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(local_21d + local_23c) & 0xfffffffc)" (( "(") (binary_expression "(uint)(local_21d + local_23c) & 0xfffffffc" (call_expression "(uint)(local_21d + local_23c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_21d + local_23c)" (( "(") (binary_expression "local_21d + local_23c" (identifier "local_21d") (+ "+") (identifier "local_23c")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")"))))) (; ";")) (expression_statement "pcVar4 = pcVar5 + -iVar9;" (assignment_expression "pcVar4 = pcVar5 + -iVar9" (identifier "pcVar4") (= "=") (binary_expression "pcVar5 + -iVar9" (identifier "pcVar5") (+ "+") (unary_expression "-iVar9" (- "-") (identifier "iVar9")))) (; ";")) (expression_statement "puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);" (assignment_expression "puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc)" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(local_21d + local_23c) & 0xfffffffc)" (( "(") (binary_expression "(uint)(local_21d + local_23c) & 0xfffffffc" (call_expression "(uint)(local_21d + local_23c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_21d + local_23c)" (( "(") (binary_expression "local_21d + local_23c" (identifier "local_21d") (+ "+") (identifier "local_23c")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }" (for "for") (( "(") (assignment_expression "uVar8 = local_24c + iVar9 >> 2" (identifier "uVar8") (= "=") (binary_expression "local_24c + iVar9 >> 2" (binary_expression "local_24c + iVar9" (identifier "local_24c") (+ "+") (identifier "iVar9")) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                *puVar10 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;\n              }" ({ "{") (expression_statement "*puVar10 = *(undefined4 *)pcVar4;" (assignment_expression "*puVar10 = *(undefined4 *)pcVar4" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (pointer_expression "*(undefined4 *)pcVar4" (* "*") (cast_expression "(undefined4 *)pcVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar4")))) (; ";")) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar4") (+ "+") (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" (( "(") (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "puVar10 = puVar10 + (uint)bVar11 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (uint)bVar11 * -2 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + (uint)bVar11 * -2 + 1" (binary_expression "puVar10 + (uint)bVar11 * -2" (identifier "puVar10") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "(**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);" (call_expression "(**(code **)(**(int **)(param_1 + 8) + 8))\n                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 8) + 8))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 8) + 8)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 8) + 8)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 8) + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 8) + 8)" (( "(") (binary_expression "**(int **)(param_1 + 8) + 8" (pointer_expression "**(int **)(param_1 + 8)" (* "*") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c)" (( "(") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "&local_221" (& "&") (identifier "local_221")) (, ",") (binary_expression "local_238 + 3 + local_24c" (binary_expression "local_238 + 3" (identifier "local_238") (+ "+") (number_literal "3")) (+ "+") (identifier "local_24c")) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x44) = 7;" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = 7" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "7")) (; ";")) (goto_statement "goto LAB_00020af9;" (goto "goto") (statement_identifier "LAB_00020af9") (; ";")) (} "}"))) (expression_statement "pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";" (assignment_expression "pcVar4 = \n          "Proxy error: Server chose username/password authentication but we didn\'t offer it!"" (identifier "pcVar4") (= "=") (string_literal ""Proxy error: Server chose username/password authentication but we didn\'t offer it!"" (" """) (string_content "Proxy error: Server chose username/password authentication but we didn") (escape_sequence "\'") (string_content "t offer it!") (" """))) (; ";")) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" (identifier "iVar9") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "uVar12 = 8000;" (assignment_expression "uVar12 = 8000" (identifier "uVar12") (= "=") (number_literal "8000")) (; ";")) (} "}")))) (goto_statement "goto LAB_00020aec;" (goto "goto") (statement_identifier "LAB_00020aec") (; ";")) (} "}"))) (expression_statement "iVar9 = param_1 + 0x34;" (assignment_expression "iVar9 = param_1 + 0x34" (identifier "iVar9") (= "=") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34"))) (; ";")) (expression_statement "iVar3 = FUN_0001d890(iVar9);" (assignment_expression "iVar3 = FUN_0001d890(iVar9)" (identifier "iVar3") (= "=") (call_expression "FUN_0001d890(iVar9)" (identifier "FUN_0001d890") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")")))) (; ";")) (if_statement "if (4 < iVar3) {\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" (if "if") (parenthesized_expression "(4 < iVar3)" (( "(") (binary_expression "4 < iVar3" (number_literal "4") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n        FUN_0001dae0(iVar9,&local_226,5);\n        if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }\n      }" ({ "{") (expression_statement "FUN_0001dae0(iVar9,&local_226,5);" (call_expression "FUN_0001dae0(iVar9,&local_226,5)" (identifier "FUN_0001dae0") (argument_list "(iVar9,&local_226,5)" (( "(") (identifier "iVar9") (, ",") (pointer_expression "&local_226" (& "&") (identifier "local_226")) (, ",") (number_literal "5") () ")"))) (; ";")) (if_statement "if (local_226 == '\x05') {\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }\n        else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" (if "if") (parenthesized_expression "(local_226 == '\x05')" (( "(") (binary_expression "local_226 == '\x05'" (identifier "local_226") (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n          if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }\n        }" ({ "{") (if_statement "if (local_225[0] == '\0') {\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }\n          else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" (if "if") (parenthesized_expression "(local_225[0] == '\0')" (( "(") (binary_expression "local_225[0] == '\0'" (subscript_expression "local_225[0]" (identifier "local_225") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }\n            iVar7 = FUN_0001d890(iVar9);\n            if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }\n          }" ({ "{") (if_statement "if (local_225[2] == '\x03') {\n              iVar3 = (byte)local_225[3] + 6;\n            }\n            else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" (if "if") (parenthesized_expression "(local_225[2] == '\x03')" (( "(") (binary_expression "local_225[2] == '\x03'" (subscript_expression "local_225[2]" (identifier "local_225") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) () ")")) (compound_statement "{\n              iVar3 = (byte)local_225[3] + 6;\n            }" ({ "{") (expression_statement "iVar3 = (byte)local_225[3] + 6;" (assignment_expression "iVar3 = (byte)local_225[3] + 6" (identifier "iVar3") (= "=") (binary_expression "(byte)local_225[3] + 6" (cast_expression "(byte)local_225[3]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "local_225[3]" (identifier "local_225") ([ "[") (number_literal "3") (] "]"))) (+ "+") (number_literal "6"))) (; ";")) (} "}")) (else_clause "else if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" (else "else") (if_statement "if (local_225[2] == '\x04') {\n              iVar3 = 0x16;\n            }\n            else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" (if "if") (parenthesized_expression "(local_225[2] == '\x04')" (( "(") (binary_expression "local_225[2] == '\x04'" (subscript_expression "local_225[2]" (identifier "local_225") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")")) (compound_statement "{\n              iVar3 = 0x16;\n            }" ({ "{") (expression_statement "iVar3 = 0x16;" (assignment_expression "iVar3 = 0x16" (identifier "iVar3") (= "=") (number_literal "0x16")) (; ";")) (} "}")) (else_clause "else {\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" (else "else") (compound_statement "{\n              if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }\n              iVar3 = 10;\n            }" ({ "{") (if_statement "if (local_225[2] != '\x01') {\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }" (if "if") (parenthesized_expression "(local_225[2] != '\x01')" (( "(") (binary_expression "local_225[2] != '\x01'" (subscript_expression "local_225[2]" (identifier "local_225") ([ "[") (number_literal "2") (] "]")) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n                (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);\n                goto LAB_00020af4;\n              }" ({ "{") (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                          (*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),\n                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (string_literal ""Proxy error: SOCKS proxy returned unrecognised address format"" (" """) (string_content "Proxy error: SOCKS proxy returned unrecognised address format") (" """)) (, ",") (number_literal "8000") (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_00020af4;" (goto "goto") (statement_identifier "LAB_00020af4") (; ";")) (} "}"))) (expression_statement "iVar3 = 10;" (assignment_expression "iVar3 = 10" (identifier "iVar3") (= "=") (number_literal "10")) (; ";")) (} "}")))))) (expression_statement "iVar7 = FUN_0001d890(iVar9);" (assignment_expression "iVar7 = FUN_0001d890(iVar9)" (identifier "iVar7") (= "=") (call_expression "FUN_0001d890(iVar9)" (identifier "FUN_0001d890") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")")))) (; ";")) (if_statement "if (iVar3 <= iVar7) {\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }" (if "if") (parenthesized_expression "(iVar3 <= iVar7)" (( "(") (binary_expression "iVar3 <= iVar7" (identifier "iVar3") (<= "<=") (identifier "iVar7")) () ")")) (compound_statement "{\n              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);\n              FUN_0001fe90(param_1);\n            }" ({ "{") (expression_statement "FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);" (call_expression "FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX)" (identifier "FUN_0001da00") (argument_list "(iVar9,iVar3,extraout_ECX,extraout_ECX)" (( "(") (identifier "iVar9") (, ",") (identifier "iVar3") (, ",") (identifier "extraout_ECX") (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (expression_statement "FUN_0001fe90(param_1);" (call_expression "FUN_0001fe90(param_1)" (identifier "FUN_0001fe90") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" (else "else") (compound_statement "{\n            pcVar4 = "Proxy error: ";\n            pcVar5 = &local_221;\n            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }\n            switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }\n            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;\n          }" ({ "{") (expression_statement "pcVar4 = "Proxy error: ";" (assignment_expression "pcVar4 = "Proxy error: "" (identifier "pcVar4") (= "=") (string_literal ""Proxy error: "" (" """) (string_content "Proxy error: ") (" """))) (; ";")) (expression_statement "pcVar5 = &local_221;" (assignment_expression "pcVar5 = &local_221" (identifier "pcVar5") (= "=") (pointer_expression "&local_221" (& "&") (identifier "local_221"))) (; ";")) (for_statement "for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }" (for "for") (( "(") (assignment_expression "iVar9 = 0xe" (identifier "iVar9") (= "=") (number_literal "0xe")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n              *pcVar5 = *pcVar4;\n              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n            }" ({ "{") (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" (identifier "pcVar4") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (switch_statement "switch((int)local_225[0] - 1U & 0xff) {\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }" (switch "switch") (parenthesized_expression "((int)local_225[0] - 1U & 0xff)" (( "(") (binary_expression "(int)local_225[0] - 1U & 0xff" (binary_expression "(int)local_225[0] - 1U" (cast_expression "(int)local_225[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_225[0]" (identifier "local_225") ([ "[") (number_literal "0") (] "]"))) (- "-") (number_literal "1U")) (& "&") (number_literal "0xff")) () ")")) (compound_statement "{\n            case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;\n            case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;\n            default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);\n            }" ({ "{") (case_statement "case 0:\n              pcVar4 = "General SOCKS server failure";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" (case "case") (number_literal "0") (: ":") (expression_statement "pcVar4 = "General SOCKS server failure";" (assignment_expression "pcVar4 = "General SOCKS server failure"" (identifier "pcVar4") (= "=") (string_literal ""General SOCKS server failure"" (" """) (string_content "General SOCKS server failure") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 0x1d" (identifier "iVar9") (= "=") (number_literal "0x1d")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" ({ "{") (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" (identifier "pcVar4") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n              pcVar4 = "Connection not allowed by ruleset";\n              pcVar5 = local_214;\n              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" (case "case") (number_literal "1") (: ":") (expression_statement "pcVar4 = "Connection not allowed by ruleset";" (assignment_expression "pcVar4 = "Connection not allowed by ruleset"" (identifier "pcVar4") (= "=") (string_literal ""Connection not allowed by ruleset"" (" """) (string_content "Connection not allowed by ruleset") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 0x22" (identifier "iVar9") (= "=") (number_literal "0x22")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" ({ "{") (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" (identifier "pcVar4") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n              pcVar4 = "Network unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;" (case "case") (number_literal "2") (: ":") (expression_statement "pcVar4 = "Network unreachable";" (assignment_expression "pcVar4 = "Network unreachable"" (identifier "pcVar4") (= "=") (string_literal ""Network unreachable"" (" """) (string_content "Network unreachable") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 5" (identifier "iVar9") (= "=") (number_literal "5")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" ({ "{") (expression_statement "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;" (assignment_expression "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4" (pointer_expression "*(undefined4 *)pcVar5" (* "*") (cast_expression "(undefined4 *)pcVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar5"))) (= "=") (pointer_expression "*(undefined4 *)pcVar4" (* "*") (cast_expression "(undefined4 *)pcVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar4")))) (; ";")) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar4") (+ "+") (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" (( "(") (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar5") (+ "+") (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" (( "(") (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n              pcVar4 = "Host unreachable";\n              pcVar5 = local_214;\n              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" (case "case") (number_literal "3") (: ":") (expression_statement "pcVar4 = "Host unreachable";" (assignment_expression "pcVar4 = "Host unreachable"" (identifier "pcVar4") (= "=") (string_literal ""Host unreachable"" (" """) (string_content "Host unreachable") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 0x11" (identifier "iVar9") (= "=") (number_literal "0x11")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" ({ "{") (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" (identifier "pcVar4") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n              pcVar4 = "Connection refused";\n              pcVar5 = local_214;\n              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" (case "case") (number_literal "4") (: ":") (expression_statement "pcVar4 = "Connection refused";" (assignment_expression "pcVar4 = "Connection refused"" (identifier "pcVar4") (= "=") (string_literal ""Connection refused"" (" """) (string_content "Connection refused") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 0x13" (identifier "iVar9") (= "=") (number_literal "0x13")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" ({ "{") (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" (identifier "pcVar4") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 5:\n              pcVar4 = "TTL expired";\n              pcVar5 = local_214;\n              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }\n              break;" (case "case") (number_literal "5") (: ":") (expression_statement "pcVar4 = "TTL expired";" (assignment_expression "pcVar4 = "TTL expired"" (identifier "pcVar4") (= "=") (string_literal ""TTL expired"" (" """) (string_content "TTL expired") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 3" (identifier "iVar9") (= "=") (number_literal "3")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;\n                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;\n                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;\n              }" ({ "{") (expression_statement "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;" (assignment_expression "*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4" (pointer_expression "*(undefined4 *)pcVar5" (* "*") (cast_expression "(undefined4 *)pcVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar5"))) (= "=") (pointer_expression "*(undefined4 *)pcVar4" (* "*") (cast_expression "(undefined4 *)pcVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar4")))) (; ";")) (expression_statement "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar4") (+ "+") (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" (( "(") (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;" (assignment_expression "pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + ((uint)bVar11 * -2 + 1) * 4" (identifier "pcVar5") (+ "+") (binary_expression "((uint)bVar11 * -2 + 1) * 4" (parenthesized_expression "((uint)bVar11 * -2 + 1)" (( "(") (binary_expression "(uint)bVar11 * -2 + 1" (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 6:\n              pcVar4 = "Command not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" (case "case") (number_literal "6") (: ":") (expression_statement "pcVar4 = "Command not supported";" (assignment_expression "pcVar4 = "Command not supported"" (identifier "pcVar4") (= "=") (string_literal ""Command not supported"" (" """) (string_content "Command not supported") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 0x16" (identifier "iVar9") (= "=") (number_literal "0x16")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" ({ "{") (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" (identifier "pcVar4") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 7:\n              pcVar4 = "Address type not supported";\n              pcVar5 = local_214;\n              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }\n              break;" (case "case") (number_literal "7") (: ":") (expression_statement "pcVar4 = "Address type not supported";" (assignment_expression "pcVar4 = "Address type not supported"" (identifier "pcVar4") (= "=") (string_literal ""Address type not supported"" (" """) (string_content "Address type not supported") (" """))) (; ";")) (expression_statement "pcVar5 = local_214;" (assignment_expression "pcVar5 = local_214" (identifier "pcVar5") (= "=") (identifier "local_214")) (; ";")) (for_statement "for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar9 = 0x1b" (identifier "iVar9") (= "=") (number_literal "0x1b")) (; ";") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n                *pcVar5 = *pcVar4;\n                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;\n                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;\n              }" ({ "{") (expression_statement "*pcVar5 = *pcVar4;" (assignment_expression "*pcVar5 = *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar4 + (uint)bVar11 * -2" (identifier "pcVar4") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;" (assignment_expression "pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + (uint)bVar11 * -2 + 1" (binary_expression "pcVar5 + (uint)bVar11 * -2" (identifier "pcVar5") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);" (default "default") (: ":") (expression_statement "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0]);" (call_expression "__sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0])" (identifier "__sprintf_chk") (argument_list "(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",\n                            (int)local_225[0])" (( "(") (identifier "local_214") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (string_literal ""Unrecognised SOCKS error code %d"" (" """) (string_content "Unrecognised SOCKS error code %d") (" """)) (, ",") (cast_expression "(int)local_225[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_225[0]" (identifier "local_225") ([ "[") (number_literal "0") (] "]"))) () ")"))) (; ";"))) (} "}"))) (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)\n            ;" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),&local_221,8000,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "&local_221" (& "&") (identifier "local_221")) (, ",") (number_literal "8000") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" (else "else") (compound_statement "{\n          (**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);\n        }" ({ "{") (expression_statement "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);" (call_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))\n                    (*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0)" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0xc) + 4))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0xc) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 0xc) + 4" (pointer_expression "**(int **)(param_1 + 0xc)" (* "*") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0xc),\n                     "Proxy error: SOCKS proxy returned wrong version number",8000,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (string_literal ""Proxy error: SOCKS proxy returned wrong version number"" (" """) (string_content "Proxy error: SOCKS proxy returned wrong version number") (" """)) (, ",") (number_literal "8000") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" (else "else") (compound_statement "{\nLAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";\n    piVar1 = *(int **)(param_1 + 0xc);\n    iVar9 = *piVar1;\n    uVar12 = 0x1f41;\nLAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);\n  }" ({ "{") (labeled_statement "LAB_00020ad4:\n    pcVar4 = "Proxy error: Unexpected proxy error";" (statement_identifier "LAB_00020ad4") (: ":") (expression_statement "pcVar4 = "Proxy error: Unexpected proxy error";" (assignment_expression "pcVar4 = "Proxy error: Unexpected proxy error"" (identifier "pcVar4") (= "=") (string_literal ""Proxy error: Unexpected proxy error"" (" """) (string_content "Proxy error: Unexpected proxy error") (" """))) (; ";"))) (expression_statement "piVar1 = *(int **)(param_1 + 0xc);" (assignment_expression "piVar1 = *(int **)(param_1 + 0xc)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 0xc)" (* "*") (cast_expression "(int **)(param_1 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar9 = *piVar1;" (assignment_expression "iVar9 = *piVar1" (identifier "iVar9") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "uVar12 = 0x1f41;" (assignment_expression "uVar12 = 0x1f41" (identifier "uVar12") (= "=") (number_literal "0x1f41")) (; ";")) (labeled_statement "LAB_00020aec:\n    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);" (statement_identifier "LAB_00020aec") (: ":") (expression_statement "(**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);" (call_expression "(**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0)" (parenthesized_expression "(**(code **)(iVar9 + 4))" (( "(") (pointer_expression "**(code **)(iVar9 + 4)" (* "*") (pointer_expression "*(code **)(iVar9 + 4)" (* "*") (cast_expression "(code **)(iVar9 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(piVar1,pcVar4,uVar12,0)" (( "(") (identifier "piVar1") (, ",") (identifier "pcVar4") (, ",") (identifier "uVar12") (, ",") (number_literal "0") () ")"))) (; ";"))) (} "}")))) (labeled_statement "LAB_00020af4:\n  iVar9 = 1;" (statement_identifier "LAB_00020af4") (: ":") (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";"))) (labeled_statement "LAB_00020af9:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" (statement_identifier "LAB_00020af9") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0008d800();\n  }" ({ "{") (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" (identifier "FUN_0008d800") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar9;" (return "return") (identifier "iVar9") (; ";")) (} "}")))

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

int function_1(type_1 p,int var_6)

{
  type_2 *pbVar1;
  int iVar2;
  type_3 pppVar3;
  int var_18;
  char *var_28;
  char *var_26;
  size_t var_21;
  int var_8;
  type_4 var_27;
  type_5 *ppVar10;
  int iVar11;
  type_6 *var_29;
  int var_1;
  type_7 bVar13;
  int var_2;
  char local_24d;
  type_4 var_24;
  type_8 local_244;
  int local_240;
  int var_23;
  size_t var_20;
  int var_5;
  char var_25 [5];
  char var_14 [5];
  char local_21c [8];
  char local_214 [500];
  int var_32;
  type_6 uStack_14;
  
  bVar13 = 0;
  uStack_14 = 0x20a8b;
  var_2 = p->state;
  var_32 = *(int *)(var_1 + 0x14);
  if (var_2 == -1) {
    var_14[0] = '\x05';
    var_28 = var_3(p->conf,0x10);
    var_26 = var_3(p->conf,0x11);
    if ((*var_28 == '\0') && (*var_26 == '\0')) {
      var_5 = 3;
      var_14[1] = '\x01';
      var_14[2] = '\0';
    }
    else {
      var_14._0_3_ = var_14._0_3_ & 0xffff;
      var_5 = 3;
      var_4(var_14,&var_5);
      var_14[var_5] = '\x02';
      var_14[1] = (char)var_5 + -1;
      var_5 = var_5 + 1;
    }
    (*(*p->sub_socket)->write)(p->sub_socket,var_14,var_5);
    p->state = 1;
    var_2 = 0;
    goto LAB_00020af9;
  }
  if (var_6 == 0) {
    var_2 = 0;
    (*(*p->plug)->closing)
              (p->plug,p->closing_error_msg,p->closing_error_code,p->closing_calling_back);
    goto LAB_00020af9;
  }
  if (var_6 == 1) {
    var_2 = 0;
    goto LAB_00020af9;
  }
  if (var_6 == 3) {
    var_2 = (*(*p->plug)->accepting)
                       (p->plug,p->accepting_constructor,(accept_ctx_t)(p->accepting_ctx).p);
    goto LAB_00020af9;
  }
  if (var_6 == 2) {
    if (var_2 == 1) {
      pbVar1 = &p->pending_input_data;
      var_8 = var_7(pbVar1);
      var_2 = 1;
      if (var_8 < 2) goto LAB_00020af9;
      var_9(pbVar1,var_14,2);
      if (var_14[0] != '\x05') {
        (*(*p->plug)->closing)
                  (p->plug,"Proxy error: SOCKS proxy returned unexpected version",8000,0);
        goto LAB_00020af9;
      }
      if (var_14[1] == '\0') {
        p->state = 2;
      }
      else if (var_14[1] == '\x01') {
        p->state = 4;
      }
      else if (var_14[1] == '\x02') {
        p->state = 5;
      }
      else {
        if (var_14[1] != '\x03') {
          (*(*p->plug)->closing)
                    (p->plug,"Proxy error: SOCKS proxy did not accept our authentication",8000,0);
          goto LAB_00020af9;
        }
        p->state = 6;
      }
      var_10(pbVar1,2);
      var_2 = p->state;
    }
    if (var_2 == 7) {
      pbVar1 = &p->pending_input_data;
      var_2 = var_7(pbVar1);
      if (1 < var_2) {
        var_9(pbVar1,var_14,2);
        if (var_14[0] == '\x01') {
          if (var_14[1] == '\0') {
            var_10(pbVar1,2);
            p->state = 2;
            goto LAB_00020dd0;
          }
          (*(*p->plug)->closing)
                    (p->plug,"Proxy error: SOCKS proxy refused password authentication",8000,0);
        }
        else {
          (*(*p->plug)->closing)
                    (p->plug,
                     "Proxy error: SOCKS password subnegotiation contained wrong version number",
                     8000,0);
        }
      }
    }
    else {
      if (var_2 == 8) {
        var_2 = var_11(p);
        if (var_2 != 0) goto LAB_00020af9;
        var_2 = p->state;
      }
      if (var_2 == 2) {
LAB_00020dd0:
        var_2 = var_12(p->remote_addr);
        if (var_2 == 1) {
          var_14[3] = '\x01';
          var_13(p->remote_addr,var_14 + 4);
          var_18 = 9;
          iVar11 = 8;
          var_8 = 10;
        }
        else if (var_2 == 2) {
          var_14[3] = '\x04';
          var_13(p->remote_addr,var_14 + 4);
          var_18 = 0x15;
          iVar11 = 0x14;
          var_8 = 0x16;
        }
        else {
          if (var_2 != 3) {
                    /* WARNING: Subroutine does not return */
            var_15("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");
          }
          var_14[3] = '\x03';
          var_16(p->remote_addr,local_21c,0x100);
          var_21 = var_17(local_21c);
          var_14[4] = (char)var_21;
          var_18 = (int)var_14[4];
          var_8 = var_18 + 7;
          iVar11 = var_18 + 5;
          var_18 = var_18 + 6;
        }
        var_2 = 1;
        var_14[0] = '\x05';
        var_14[1] = '\x01';
        var_14[2] = '\0';
        iVar2 = p->remote_port;
        var_14[iVar11] = (char)((type_4)iVar2 >> 8);
        var_14[var_18] = (char)iVar2;
        (*(*p->sub_socket)->write)(p->sub_socket,var_14,var_8);
        p->state = 3;
        goto LAB_00020af9;
      }
      if (var_2 != 3) {
        if (var_2 == 4) {
          var_28 = "Proxy error: We don\'t support GSSAPI authentication";
          pppVar3 = p->plug;
          ppVar10 = *pppVar3;
          var_2 = 8000;
        }
        else {
          if (var_2 != 5) {
            if ((var_2 == 6) && (var_2 = var_19(p), var_2 != 0))
            goto LAB_00020af9;
            goto LAB_00020ad4;
          }
          var_28 = var_3(p->conf,0x10);
          var_26 = var_3(p->conf,0x11);
          if ((*var_28 != '\0') || (*var_26 != '\0')) {
            var_20 = var_17(var_28);
            if (var_20 < 0x100) {
              if (var_20 == 0) {
                var_23 = 4;
                local_240 = 3;
                local_244 = 1;
                var_20 = 1;
              }
              else {
                local_244 = (type_8)var_20;
                local_240 = var_20 + 2;
                var_23 = var_20 + 3;
              }
            }
            else {
              var_23 = 0x102;
              local_240 = 0x101;
              local_244 = 0xff;
              var_20 = 0xff;
            }
            var_21 = var_17(var_26);
            if (var_21 < 0x100) {
              local_24d = '\x01';
              if (var_21 != 0) {
                local_24d = (char)var_21;
              }
              var_24 = 1;
              if (var_21 != 0) {
                var_24 = var_21;
              }
            }
            else {
              local_24d = -1;
              var_24 = 0xff;
            }
            var_14[1] = local_244;
            var_14[0] = '\x01';
            var_22(var_14 + 2,var_28,var_20,0x1ff);
            var_14[local_240] = local_24d;
            var_28 = var_14 + var_23;
            if (var_24 < 4) {
              if ((var_24 != 0) && (*var_28 = *var_26, (var_24 & 2) != 0)) {
                *(type_9 *)(var_25 + var_24 + var_23 + 3) =
                     *(type_9 *)(var_26 + (var_24 - 2));
              }
            }
            else {
              *(type_6 *)var_28 = *(type_6 *)var_26;
              *(type_6 *)(var_25 + var_24 + var_23 + 1) =
                   *(type_6 *)(var_26 + (var_24 - 4));
              var_2 = (int)var_28 - (int)((type_4)(var_14 + var_23 + 4) & 0xfffffffc);
              var_28 = var_26 + -var_2;
              var_29 = (type_6 *)((type_4)(var_14 + var_23 + 4) & 0xfffffffc);
              for (var_27 = var_24 + var_2 >> 2; var_27 != 0; var_27 = var_27 - 1) {
                *var_29 = *(type_6 *)var_28;
                var_28 = var_28 + ((type_4)bVar13 * -2 + 1) * 4;
                var_29 = var_29 + (type_4)bVar13 * -2 + 1;
              }
            }
            var_2 = 1;
            (*(*p->sub_socket)->write)(p->sub_socket,var_14,var_20 + 3 + var_24);
            p->state = 7;
            goto LAB_00020af9;
          }
          var_28 = 
          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";
          pppVar3 = p->plug;
          ppVar10 = *pppVar3;
          var_2 = 8000;
        }
        goto LAB_00020aec;
      }
      pbVar1 = &p->pending_input_data;
      var_2 = var_7(pbVar1);
      if (4 < var_2) {
        var_9(pbVar1,var_25,5);
        if (var_25[0] == '\x05') {
          if (var_25[1] == '\0') {
            if (var_25[3] == '\x03') {
              var_2 = (type_7)var_25[4] + 6;
            }
            else if (var_25[3] == '\x04') {
              var_2 = 0x16;
            }
            else {
              if (var_25[3] != '\x01') {
                (*(*p->plug)->closing)
                          (p->plug,"Proxy error: SOCKS proxy returned unrecognised address format",
                           8000,0);
                goto LAB_00020af4;
              }
              var_2 = 10;
            }
            var_8 = var_7(pbVar1);
            if (var_2 <= var_8) {
              var_10(pbVar1,var_2);
              var_30(p);
            }
          }
          else {
            var_28 = "Proxy error: ";
            var_26 = var_14;
            for (var_2 = 0xe; var_2 != 0; var_2 = var_2 + -1) {
              *var_26 = *var_28;
              var_28 = var_28 + (type_4)bVar13 * -2 + 1;
              var_26 = var_26 + (type_4)bVar13 * -2 + 1;
            }
            switch((int)var_25[1] - 1U & 0xff) {
            case 0:
              var_28 = "General SOCKS server failure";
              var_26 = local_214;
              for (var_2 = 0x1d; var_2 != 0; var_2 = var_2 + -1) {
                *var_26 = *var_28;
                var_28 = var_28 + (type_4)bVar13 * -2 + 1;
                var_26 = var_26 + (type_4)bVar13 * -2 + 1;
              }
              break;
            case 1:
              var_28 = "Connection not allowed by ruleset";
              var_26 = local_214;
              for (var_2 = 0x22; var_2 != 0; var_2 = var_2 + -1) {
                *var_26 = *var_28;
                var_28 = var_28 + (type_4)bVar13 * -2 + 1;
                var_26 = var_26 + (type_4)bVar13 * -2 + 1;
              }
              break;
            case 2:
              var_28 = "Network unreachable";
              var_26 = local_214;
              for (var_2 = 5; var_2 != 0; var_2 = var_2 + -1) {
                *(type_6 *)var_26 = *(type_6 *)var_28;
                var_28 = var_28 + ((type_4)bVar13 * -2 + 1) * 4;
                var_26 = var_26 + ((type_4)bVar13 * -2 + 1) * 4;
              }
              break;
            case 3:
              var_28 = "Host unreachable";
              var_26 = local_214;
              for (var_2 = 0x11; var_2 != 0; var_2 = var_2 + -1) {
                *var_26 = *var_28;
                var_28 = var_28 + (type_4)bVar13 * -2 + 1;
                var_26 = var_26 + (type_4)bVar13 * -2 + 1;
              }
              break;
            case 4:
              var_28 = "Connection refused";
              var_26 = local_214;
              for (var_2 = 0x13; var_2 != 0; var_2 = var_2 + -1) {
                *var_26 = *var_28;
                var_28 = var_28 + (type_4)bVar13 * -2 + 1;
                var_26 = var_26 + (type_4)bVar13 * -2 + 1;
              }
              break;
            case 5:
              var_28 = "TTL expired";
              var_26 = local_214;
              for (var_2 = 3; var_2 != 0; var_2 = var_2 + -1) {
                *(type_6 *)var_26 = *(type_6 *)var_28;
                var_28 = var_28 + ((type_4)bVar13 * -2 + 1) * 4;
                var_26 = var_26 + ((type_4)bVar13 * -2 + 1) * 4;
              }
              break;
            case 6:
              var_28 = "Command not supported";
              var_26 = local_214;
              for (var_2 = 0x16; var_2 != 0; var_2 = var_2 + -1) {
                *var_26 = *var_28;
                var_28 = var_28 + (type_4)bVar13 * -2 + 1;
                var_26 = var_26 + (type_4)bVar13 * -2 + 1;
              }
              break;
            case 7:
              var_28 = "Address type not supported";
              var_26 = local_214;
              for (var_2 = 0x1b; var_2 != 0; var_2 = var_2 + -1) {
                *var_26 = *var_28;
                var_28 = var_28 + (type_4)bVar13 * -2 + 1;
                var_26 = var_26 + (type_4)bVar13 * -2 + 1;
              }
              break;
            default:
              var_31(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",(int)var_25[1]
                           );
            }
            (*(*p->plug)->closing)(p->plug,var_14,8000,0);
          }
        }
        else {
          (*(*p->plug)->closing)
                    (p->plug,"Proxy error: SOCKS proxy returned wrong version number",8000,0);
        }
      }
    }
  }
  else {
LAB_00020ad4:
    var_28 = "Proxy error: Unexpected proxy error";
    pppVar3 = p->plug;
    ppVar10 = *pppVar3;
    var_2 = 0x1f41;
LAB_00020aec:
    (*ppVar10->closing)(pppVar3,var_28,var_2,0);
  }
LAB_00020af4:
  var_2 = 1;
LAB_00020af9:
  if (var_32 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_33();
  }
  return var_2;
}


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

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

int MASKED(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  size_t sVar6;
  int iVar7;
  uint uVar8;
  undefined4 extraout_ECX;
  int iVar9;
  undefined4 *puVar10;
  int in_GS_OFFSET;
  byte bVar11;
  undefined4 uVar12;
  undefined1 local_24d;
  uint local_24c;
  undefined1 local_244;
  int local_240;
  int local_23c;
  size_t local_238;
  int local_22c;
  char local_226;
  char local_225 [4];
  undefined1 local_221;
  undefined2 uStack_220;
  undefined1 local_21e;
  char local_21d [9];
  char local_214 [500];
  int local_20;
  undefined4 uStack_14;
  
  bVar11 = 0;
  uStack_14 = 0x20a8b;
  iVar9 = *(int *)(param_1 + 0x44);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (iVar9 == -1) {
    _local_221 = CONCAT21(uStack_220,5);
    pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);
    pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);
    if ((*pcVar4 == '\0') && (*pcVar5 == '\0')) {
      local_22c = 3;
      _local_221 = CONCAT21(1,local_221);
    }
    else {
      _local_221 = _local_221 & 0xffff;
      local_22c = 3;
      FUN_0001a140(&local_221,&local_22c);
      (&local_221)[local_22c] = 2;
      _local_221 = CONCAT11((char)local_22c + -1,local_221);
      local_22c = local_22c + 1;
    }
    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,local_22c);
    *(undefined4 *)(param_1 + 0x44) = 1;
    iVar9 = 0;
    goto LAB_00020af9;
  }
  if (param_2 == 0) {
    iVar9 = 0;
    (**(code **)(**(int **)(param_1 + 0xc) + 4))
              (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x50),
               *(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x58));
    goto LAB_00020af9;
  }
  if (param_2 == 1) {
    iVar9 = 0;
    goto LAB_00020af9;
  }
  if (param_2 == 3) {
    iVar9 = (**(code **)(**(int **)(param_1 + 0xc) + 0x10))
                      (*(int **)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x6c),
                       *(undefined4 *)(param_1 + 0x70));
    goto LAB_00020af9;
  }
  if (param_2 == 2) {
    if (iVar9 == 1) {
      iVar3 = param_1 + 0x34;
      iVar7 = FUN_0001d890(iVar3);
      iVar9 = 1;
      if (iVar7 < 2) goto LAB_00020af9;
      FUN_0001dae0(iVar3,&local_221,2);
      if (local_221 != '\x05') {
        (**(code **)(**(int **)(param_1 + 0xc) + 4))
                  (*(int **)(param_1 + 0xc),"Proxy error: SOCKS proxy returned unexpected version",
                   8000,0);
        goto LAB_00020af9;
      }
      if ((char)uStack_220 == '\0') {
        *(undefined4 *)(param_1 + 0x44) = 2;
      }
      else if ((char)uStack_220 == '\x01') {
        *(undefined4 *)(param_1 + 0x44) = 4;
      }
      else if ((char)uStack_220 == '\x02') {
        *(undefined4 *)(param_1 + 0x44) = 5;
      }
      else {
        if ((char)uStack_220 != '\x03') {
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS proxy did not accept our authentication",8000,0);
          goto LAB_00020af9;
        }
        *(undefined4 *)(param_1 + 0x44) = 6;
      }
      FUN_0001da00(iVar3,2);
      iVar9 = *(int *)(param_1 + 0x44);
    }
    if (iVar9 == 7) {
      iVar9 = param_1 + 0x34;
      iVar3 = FUN_0001d890(iVar9);
      if (1 < iVar3) {
        FUN_0001dae0(iVar9,&local_221,2);
        if (local_221 == '\x01') {
          if ((char)uStack_220 == '\0') {
            FUN_0001da00(iVar9,2);
            *(undefined4 *)(param_1 + 0x44) = 2;
            goto LAB_00020dd0;
          }
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS proxy refused password authentication",8000,0);
        }
        else {
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS password subnegotiation contained wrong version number",
                     8000,0);
        }
      }
    }
    else {
      if (iVar9 == 8) {
        iVar9 = FUN_0001a160(param_1);
        if (iVar9 != 0) goto LAB_00020af9;
        iVar9 = *(int *)(param_1 + 0x44);
      }
      if (iVar9 == 2) {
LAB_00020dd0:
        iVar9 = FUN_00084330(*(undefined4 *)(param_1 + 0x10));
        if (iVar9 == 1) {
          local_21e = 1;
          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);
          iVar2 = 9;
          iVar7 = 8;
          iVar3 = 10;
        }
        else if (iVar9 == 2) {
          local_21e = 4;
          FUN_00084360(*(undefined4 *)(param_1 + 0x10),local_21d);
          iVar2 = 0x15;
          iVar7 = 0x14;
          iVar3 = 0x16;
        }
        else {
          if (iVar9 != 3) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("type == ADDRTYPE_NAME","proxy.c",0x46a,"proxy_socks5_negotiate");
          }
          local_21e = 3;
          FUN_00084190(*(undefined4 *)(param_1 + 0x10),local_21d + 1,0x100);
          sVar6 = strlen(local_21d + 1);
          local_21d[0] = (char)sVar6;
          iVar2 = (int)local_21d[0];
          iVar3 = iVar2 + 7;
          iVar7 = iVar2 + 5;
          iVar2 = iVar2 + 6;
        }
        iVar9 = 1;
        _local_221 = 0x105;
        uVar12 = *(undefined4 *)(param_1 + 0x14);
        (&local_221)[iVar7] = (char)((uint)uVar12 >> 8);
        (&local_221)[iVar2] = (char)uVar12;
        (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8),&local_221,iVar3);
        *(undefined4 *)(param_1 + 0x44) = 3;
        goto LAB_00020af9;
      }
      if (iVar9 != 3) {
        if (iVar9 == 4) {
          pcVar4 = "Proxy error: We don\'t support GSSAPI authentication";
          piVar1 = *(int **)(param_1 + 0xc);
          iVar9 = *piVar1;
          uVar12 = 8000;
        }
        else {
          if (iVar9 != 5) {
            if ((iVar9 == 6) && (iVar9 = FUN_0001a470(param_1), iVar9 != 0)) goto LAB_00020af9;
            goto LAB_00020ad4;
          }
          pcVar4 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x10);
          pcVar5 = (char *)FUN_00018b60(*(undefined4 *)(param_1 + 0x74),0x11);
          if ((*pcVar4 != '\0') || (*pcVar5 != '\0')) {
            local_238 = strlen(pcVar4);
            if (local_238 < 0x100) {
              if (local_238 == 0) {
                local_23c = 4;
                local_240 = 3;
                local_244 = 1;
                local_238 = 1;
              }
              else {
                local_244 = (undefined1)local_238;
                local_240 = local_238 + 2;
                local_23c = local_238 + 3;
              }
            }
            else {
              local_23c = 0x102;
              local_240 = 0x101;
              local_244 = 0xff;
              local_238 = 0xff;
            }
            sVar6 = strlen(pcVar5);
            if (sVar6 < 0x100) {
              local_24d = 1;
              if (sVar6 != 0) {
                local_24d = (undefined1)sVar6;
              }
              local_24c = 1;
              if (sVar6 != 0) {
                local_24c = sVar6;
              }
            }
            else {
              local_24d = 0xff;
              local_24c = 0xff;
            }
            _local_221 = CONCAT21(CONCAT11(uStack_220._1_1_,local_244),1);
            __memcpy_chk((int)&uStack_220 + 1,pcVar4,local_238,0x1ff);
            (&local_221)[local_240] = local_24d;
            pcVar4 = &local_221 + local_23c;
            if (local_24c < 4) {
              if ((local_24c != 0) && (*pcVar4 = *pcVar5, (local_24c & 2) != 0)) {
                *(undefined2 *)(local_225 + local_24c + local_23c + 2) =
                     *(undefined2 *)(pcVar5 + (local_24c - 2));
              }
            }
            else {
              *(undefined4 *)pcVar4 = *(undefined4 *)pcVar5;
              *(undefined4 *)(local_225 + local_24c + local_23c) =
                   *(undefined4 *)(pcVar5 + (local_24c - 4));
              iVar9 = (int)pcVar4 - (int)((uint)(local_21d + local_23c) & 0xfffffffc);
              pcVar4 = pcVar5 + -iVar9;
              puVar10 = (undefined4 *)((uint)(local_21d + local_23c) & 0xfffffffc);
              for (uVar8 = local_24c + iVar9 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {
                *puVar10 = *(undefined4 *)pcVar4;
                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;
                puVar10 = puVar10 + (uint)bVar11 * -2 + 1;
              }
            }
            iVar9 = 1;
            (**(code **)(**(int **)(param_1 + 8) + 8))
                      (*(int **)(param_1 + 8),&local_221,local_238 + 3 + local_24c);
            *(undefined4 *)(param_1 + 0x44) = 7;
            goto LAB_00020af9;
          }
          pcVar4 = 
          "Proxy error: Server chose username/password authentication but we didn\'t offer it!";
          piVar1 = *(int **)(param_1 + 0xc);
          iVar9 = *piVar1;
          uVar12 = 8000;
        }
        goto LAB_00020aec;
      }
      iVar9 = param_1 + 0x34;
      iVar3 = FUN_0001d890(iVar9);
      if (4 < iVar3) {
        FUN_0001dae0(iVar9,&local_226,5);
        if (local_226 == '\x05') {
          if (local_225[0] == '\0') {
            if (local_225[2] == '\x03') {
              iVar3 = (byte)local_225[3] + 6;
            }
            else if (local_225[2] == '\x04') {
              iVar3 = 0x16;
            }
            else {
              if (local_225[2] != '\x01') {
                (**(code **)(**(int **)(param_1 + 0xc) + 4))
                          (*(int **)(param_1 + 0xc),
                           "Proxy error: SOCKS proxy returned unrecognised address format",8000,0);
                goto LAB_00020af4;
              }
              iVar3 = 10;
            }
            iVar7 = FUN_0001d890(iVar9);
            if (iVar3 <= iVar7) {
              FUN_0001da00(iVar9,iVar3,extraout_ECX,extraout_ECX);
              FUN_0001fe90(param_1);
            }
          }
          else {
            pcVar4 = "Proxy error: ";
            pcVar5 = &local_221;
            for (iVar9 = 0xe; iVar9 != 0; iVar9 = iVar9 + -1) {
              *pcVar5 = *pcVar4;
              pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
              pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
            }
            switch((int)local_225[0] - 1U & 0xff) {
            case 0:
              pcVar4 = "General SOCKS server failure";
              pcVar5 = local_214;
              for (iVar9 = 0x1d; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 1:
              pcVar4 = "Connection not allowed by ruleset";
              pcVar5 = local_214;
              for (iVar9 = 0x22; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 2:
              pcVar4 = "Network unreachable";
              pcVar5 = local_214;
              for (iVar9 = 5; iVar9 != 0; iVar9 = iVar9 + -1) {
                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;
                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;
              }
              break;
            case 3:
              pcVar4 = "Host unreachable";
              pcVar5 = local_214;
              for (iVar9 = 0x11; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 4:
              pcVar4 = "Connection refused";
              pcVar5 = local_214;
              for (iVar9 = 0x13; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 5:
              pcVar4 = "TTL expired";
              pcVar5 = local_214;
              for (iVar9 = 3; iVar9 != 0; iVar9 = iVar9 + -1) {
                *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
                pcVar4 = pcVar4 + ((uint)bVar11 * -2 + 1) * 4;
                pcVar5 = pcVar5 + ((uint)bVar11 * -2 + 1) * 4;
              }
              break;
            case 6:
              pcVar4 = "Command not supported";
              pcVar5 = local_214;
              for (iVar9 = 0x16; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            case 7:
              pcVar4 = "Address type not supported";
              pcVar5 = local_214;
              for (iVar9 = 0x1b; iVar9 != 0; iVar9 = iVar9 + -1) {
                *pcVar5 = *pcVar4;
                pcVar4 = pcVar4 + (uint)bVar11 * -2 + 1;
                pcVar5 = pcVar5 + (uint)bVar11 * -2 + 1;
              }
              break;
            default:
              __sprintf_chk(local_214,1,0xffffffff,"Unrecognised SOCKS error code %d",
                            (int)local_225[0]);
            }
            (**(code **)(**(int **)(param_1 + 0xc) + 4))(*(int **)(param_1 + 0xc),&local_221,8000,0)
            ;
          }
        }
        else {
          (**(code **)(**(int **)(param_1 + 0xc) + 4))
                    (*(int **)(param_1 + 0xc),
                     "Proxy error: SOCKS proxy returned wrong version number",8000,0);
        }
      }
    }
  }
  else {
LAB_00020ad4:
    pcVar4 = "Proxy error: Unexpected proxy error";
    piVar1 = *(int **)(param_1 + 0xc);
    iVar9 = *piVar1;
    uVar12 = 0x1f41;
LAB_00020aec:
    (**(code **)(iVar9 + 4))(piVar1,pcVar4,uVar12,0);
  }
LAB_00020af4:
  iVar9 = 1;
LAB_00020af9:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0008d800();
  }
  return iVar9;
}

