void FUN_00403674(int param_1)
{
ushort uVar1;
int iVar2;
char *pcVar3;
int iVar4;
hostent *phVar5;
uint uVar6;
int *piVar7;
undefined **ppuVar8;
undefined4 uVar9;
int iVar10;
code *pcVar11;
sockaddr local_20;
*(undefined4 *)(param_1 + 0x18) = 0;
ppuVar8 = &PTR_s_CYBERGATE_0041aa00;
iVar4 = 0;
do {
iVar10 = iVar4;
pcVar3 = *ppuVar8;
ppuVar8 = ppuVar8 + 6;
if (pcVar3 == (char *)0x0) goto LAB_004036fc;
iVar2 = strcmp(pcVar3,*(char **)(param_1 + 0x1c));
iVar4 = iVar10 + 1;
} while (iVar2 != 0);
*(undefined ***)(param_1 + 0x18) = &PTR_s_CYBERGATE_0041aa00 + iVar10 * 6;
LAB_004036fc:
if (*(int *)(param_1 + 0x18) == 0) {
return;
}
if (*(int *)(param_1 + 0xc) != 0) {
if (*(int *)(param_1 + 0x38) == 1) {
pcVar11 = sloop_cancel_write_sock;
}
else {
pcVar11 = sloop_cancel_read_sock;
}
(*pcVar11)();
*(undefined4 *)(param_1 + 0xc) = 0;
}
if (*(int *)(param_1 + 0x10) != 0) {
sloop_cancel_timeout();
*(undefined4 *)(param_1 + 0x10) = 0;
}
if (-1 < *(int *)(param_1 + 8)) {
close(*(int *)(param_1 + 8));
*(undefined4 *)(param_1 + 8) = 0xffffffff;
}
*(undefined4 *)(param_1 + 0x3c) = 0;
iVar4 = socket(2,2,6);
*(int *)(param_1 + 8) = iVar4;
if (-1 < iVar4) {
phVar5 = gethostbyname(*(char **)(*(int *)(param_1 + 0x18) + 4));
if (phVar5 == (hostent *)0x0) {
syslog(5,"Unable to resolve the IP address of \'%s\'",
*(undefined4 *)(*(int *)(param_1 + 0x18) + 8));
}
else {
local_20.sa_data[6] = '\0';
local_20.sa_data[7] = '\0';
local_20.sa_data[8] = '\0';
local_20.sa_data[9] = '\0';
local_20.sa_data[10] = '\0';
local_20.sa_data[0xb] = '\0';
local_20.sa_data[0xc] = '\0';
local_20.sa_data[0xd] = '\0';
uVar1 = *(ushort *)(*(int *)(param_1 + 0x18) + 0xc);
local_20.sa_data._2_4_ = *(undefined4 *)*phVar5->h_addr_list;
local_20.sa_data._0_2_ = uVar1 << 8 | uVar1 >> 8;
local_20.sa_family = 2;
uVar6 = fcntl(*(int *)(param_1 + 8),3);
if (-1 < (int)uVar6) {
iVar4 = fcntl(*(int *)(param_1 + 8),4,uVar6 | 0x80);
if (-1 < iVar4) {
iVar4 = connect(*(int *)(param_1 + 8),&local_20,0x10);
if (-1 < iVar4) {
FUN_00403328(param_1);
return;
}
piVar7 = __errno_location();
if (*piVar7 == 0x96) {
uVar9 = sloop_register_write_sock(*(undefined4 *)(param_1 + 8),FUN_00404418,param_1);
*(undefined4 *)(param_1 + 0xc) = uVar9;
uVar9 = sloop_register_timeout(0x3c,0,FUN_00404378,param_1);
*(undefined4 *)(param_1 + 0x38) = 1;
*(undefined4 *)(param_1 + 0x10) = uVar9;
return;
}
uVar9 = *(undefined4 *)(*(int *)(param_1 + 0x18) + 8);
pcVar3 = strerror(*piVar7);
syslog(5,"Unable to connect server \'%s\'. %s",uVar9,pcVar3);
}
}
}
}
if (-1 < *(int *)(param_1 + 8)) {
close(*(int *)(param_1 + 8));
}
*(undefined4 *)(param_1 + 8) = 0xffffffff;
*(undefined4 *)(param_1 + 0x38) = 3;
FUN_004026ec(param_1);
return;
}