/* 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;
}