/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int susockc_main(int param_1,int param_2)
{
int iVar1;
int iVar2;
int *piVar3;
char *pcVar4;
int iVar5;
uint uVar6;
byte *pbVar7;
uint uVar8;
FILE *pFVar9;
char *__format;
uint uVar10;
undefined4 uVar11;
int iVar12;
int iVar13;
timeval local_4b8;
fd_set local_4b0;
byte local_430 [1024];
fd_set *local_30;
if (param_1 < 3) {
fputs("Usage: susockc [sockname] [message1] [message2] ...\n",_stderr);
return -1;
}
iVar1 = sobj_new();
iVar2 = sobj_new();
if ((iVar1 == 0) || (iVar2 == 0)) {
fputs("susockc: unable to allocate strobj.\n",_stderr);
iVar12 = -1;
if (iVar1 == 0) {
iVar13 = 0;
goto LAB_00405110;
}
iVar13 = 0;
}
else {
iVar13 = susock_open(*(undefined4 *)(param_2 + 4)) //possible issue identified - semgrep
pFVar9 = _stderr;
if (iVar13 == 0) {
uVar11 = *(undefined4 *)(param_2 + 4);
iVar12 = -1;
piVar3 = __errno_location();
pcVar4 = strerror(*piVar3);
fprintf(pFVar9,"susockc: unable to open socket \'%s\'. %s.\n",uVar11,pcVar4);
}
else {
iVar12 = 2;
do {
sobj_free(iVar2);
sobj_escape_javascript(*(undefined4 *)(param_2 + 8),iVar2);
iVar12 = iVar12 + 1;
iVar5 = sobj_get_length(iVar1);
param_2 = param_2 + 4;
if (iVar5 != 0) {
sobj_add_char(iVar1,0x20);
}
sobj_add_char(iVar1,0x22);
uVar11 = sobj_get_string(iVar2);
sobj_add_string(iVar1,uVar11);
sobj_add_char(iVar1,0x22);
} while (iVar12 < param_1);
uVar11 = sobj_get_string(iVar1);
iVar12 = sobj_get_length(iVar1);
iVar12 = susock_send(iVar13,uVar11,iVar12 + 1,0x4000);
pFVar9 = _stderr;
if (iVar12 < 0) {
piVar3 = __errno_location();
pcVar4 = strerror(*piVar3);
__format = "susockc: unable to send message. %s.\n";
}
else {
local_30 = &local_4b0;
uVar8 = 0;
do {
while( true ) {
for (; uVar8 < 0x20; uVar8 = uVar8 + 1) {
local_4b0.fds_bits[uVar8] = 0;
}
uVar8 = susock_fd(iVar13);
uVar10 = local_4b0.fds_bits[uVar8 >> 5];
uVar6 = susock_fd(iVar13);
local_4b0.fds_bits[uVar8 >> 5] = uVar10 | 1 << (uVar6 & 0x1f);
local_4b8.tv_sec = 10;
local_4b8.tv_usec = 0;
iVar12 = susock_fd(iVar13);
iVar12 = select(iVar12 + 1,local_30,(fd_set *)0x0,(fd_set *)0x0,&local_4b8);
if (iVar12 == 0) {
fputs("susockc: timeout !!\n",_stderr);
iVar12 = -1;
goto LAB_004050fc;
}
if (iVar12 < 0) break;
uVar8 = susock_fd(iVar13);
iVar12 = local_4b0.fds_bits[uVar8 >> 5];
uVar6 = susock_fd(iVar13);
uVar8 = 0;
if ((iVar12 >> (uVar6 & 0x1f) & 1U) != 0) {
uVar8 = susock_fd(iVar13);
uVar10 = local_4b0.fds_bits[uVar8 >> 5];
uVar6 = susock_fd(iVar13);
local_4b0.fds_bits[uVar8 >> 5] = ~(1 << (uVar6 & 0x1f)) & uVar10;
iVar12 = susock_recv(iVar13,local_430,0x400,0) //possible issue identified - semgrep
if (iVar12 == 0) goto LAB_004050fc;
if (0 < iVar12) {
iVar5 = 0;
pbVar7 = local_430;
do {
iVar5 = iVar5 + 1;
fputc((uint)*pbVar7,_stdout);
pbVar7 = local_430 + iVar5;
} while (iVar5 < iVar12);
fflush(_stdout);
}
putchar(10);
uVar8 = 0;
}
}
piVar3 = __errno_location();
pFVar9 = _stderr;
uVar8 = 0;
} while (*piVar3 == 4);
pcVar4 = strerror(*piVar3);
__format = "susockc: select error. %s.\n";
}
fprintf(pFVar9,__format,pcVar4);
}
}
LAB_004050fc:
sobj_del(iVar1);
LAB_00405110:
if (iVar2 != 0) {
sobj_del(iVar2);
}
if (iVar13 != 0) {
susock_close(iVar13);
}
return iVar12;
}