
int rev_body(int s,int stype,int prot,uchar *context)

{
  uchar uVar1;
  byte bVar2;
  int iVar3;
  uint uVar4;
  byte *out;
  BIO_METHOD *pBVar5;
  BIO *bp;
  BIO *pBVar6;
  long lVar7;
  SSL *ssl;
  BIO *rbio;
  byte *pbVar8;
  BIO *pBVar9;
  uchar *puVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  
  bVar14 = 0;
  out = (byte *)app_malloc(0x4000,"server rev buffer");
  pBVar5 = BIO_f_buffer();
  bp = BIO_new(pBVar5);
  pBVar5 = BIO_f_ssl();
  pBVar6 = BIO_new(pBVar5);
  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&
      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&
     (ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0)) {
    if (s_tlsextdebug != 0) {
      SSL_callback_ctrl(ssl,0x38,tlsext_cb);
      SSL_ctrl(ssl,0x39,0,bio_s_out);
    }
    if (context != (uchar *)0x0) {
      lVar7 = -1;
      puVar10 = context;
      do {
        if (lVar7 == 0) break;
        lVar7 = lVar7 + -1;
        uVar1 = *puVar10;
        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;
      } while (uVar1 != '\0');
      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);
      if (iVar3 == 0) {
        SSL_free(ssl);
        ERR_print_errors((BIO *)bio_err);
        goto LAB_00162069;
      }
    }
    rbio = BIO_new_socket(s,0);
    SSL_set_bio(ssl,rbio,rbio);
    SSL_set_accept_state(ssl);
    BIO_ctrl(pBVar6,0x6d,1,ssl);
    BIO_push(bp,pBVar6);
    if (s_debug != 0) {
      pBVar6 = SSL_get_rbio(ssl);
      BIO_set_callback(pBVar6,bio_dump_callback);
      pBVar9 = bio_s_out;
      pBVar6 = SSL_get_rbio(ssl);
      BIO_set_callback_arg(pBVar6,(char *)pBVar9);
    }
    if (s_msg != 0) {
      SSL_set_msg_callback(ssl,msg_cb);
      pBVar9 = bio_s_msg;
      if (bio_s_msg == (BIO *)0x0) {
        pBVar9 = bio_s_out;
      }
      SSL_ctrl(ssl,0x10,0,pBVar9);
    }
    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {
      iVar3 = BIO_test_flags(bp,8);
      if (iVar3 == 0) {
        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");
        ERR_print_errors((BIO *)bio_err);
        goto LAB_001622dc;
      }
      iVar3 = BIO_test_flags(bp,4);
      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {
        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");
        SRP_user_pwd_free(srp_callback_parm.user);
        srp_callback_parm.user =
             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);
        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {
          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");
        }
        else {
          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);
        }
      }
    }
    BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n");
    print_ssl_summary((SSL *)ssl);
LAB_0016238d:
    while( true ) {
      uVar4 = BIO_gets(bp,(char *)out,0x3fff);
      if (-1 < (int)uVar4) break;
      iVar3 = BIO_test_flags(bp,8);
      if (iVar3 == 0) {
        if (s_quiet == 0) {
          ERR_print_errors((BIO *)bio_err);
        }
        goto LAB_00162069;
      }
      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");
      iVar3 = BIO_test_flags(bp,4);
      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {
        sleep(1);
      }
      else {
        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");
        SRP_user_pwd_free(srp_callback_parm.user);
        srp_callback_parm.user =
             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);
        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {
          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");
        }
        else {
          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);
        }
      }
    }
    if (uVar4 != 0) {
      pbVar8 = out + (long)(int)uVar4 + -1;
      bVar2 = *pbVar8;
      while ((bVar2 == 10 || (bVar2 == 0xd))) {
        pbVar8 = pbVar8 + -1;
        uVar4 = uVar4 - 1;
        if (uVar4 == 0) goto LAB_00162400;
        bVar2 = *pbVar8;
      }
      if (s_ign_eof == 0) {
        bVar12 = uVar4 < 5;
        bVar13 = uVar4 == 5;
        if (bVar13) {
          lVar7 = 5;
          pbVar8 = out;
          pbVar11 = (byte *)"CLOSE";
          goto code_r0x001623ec;
        }
      }
      goto LAB_00162400;
    }
    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");
LAB_001622dc:
    SSL_set_shutdown(ssl,3);
  }
LAB_00162069:
  CRYPTO_free(out);
  BIO_free_all(bp);
  return 1;
  while( true ) {
    lVar7 = lVar7 + -1;
    bVar12 = *pbVar8 < *pbVar11;
    bVar13 = *pbVar8 == *pbVar11;
    pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;
    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;
    if (!bVar13) break;
code_r0x001623ec:
    if (lVar7 == 0) break;
  }
  if ((!bVar12 && !bVar13) == bVar12) {
    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");
    goto LAB_001622dc;
  }
  uVar4 = 5;
LAB_00162400:
  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);
  out[(int)uVar4] = 10;
  BIO_write(bp,out,uVar4 + 1);
  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {
    iVar3 = BIO_test_flags(bp,8);
    if (iVar3 == 0) goto LAB_001622dc;
  }
  goto LAB_0016238d;
}



undefined8 FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)

{
  uchar uVar1;
  byte bVar2;
  int iVar3;
  uint uVar4;
  byte *out;
  BIO_METHOD *pBVar5;
  BIO *bp;
  BIO *pBVar6;
  long lVar7;
  SSL *ssl;
  BIO *pBVar8;
  byte *pbVar9;
  uchar *puVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  
  bVar14 = 0;
  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");
  pBVar5 = BIO_f_buffer();
  bp = BIO_new(pBVar5);
  pBVar5 = BIO_f_ssl();
  pBVar6 = BIO_new(pBVar5);
  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&
      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&
     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {
    if (DAT_001b80d8 != 0) {
      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);
      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);
    }
    if (param_4 != (uchar *)0x0) {
      lVar7 = -1;
      puVar10 = param_4;
      do {
        if (lVar7 == 0) break;
        lVar7 = lVar7 + -1;
        uVar1 = *puVar10;
        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;
      } while (uVar1 != '\0');
      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);
      if (iVar3 == 0) {
        SSL_free(ssl);
        ERR_print_errors(DAT_001b76b0);
        goto LAB_00162069;
      }
    }
    pBVar8 = BIO_new_socket(param_1,0);
    SSL_set_bio(ssl,pBVar8,pBVar8);
    SSL_set_accept_state(ssl);
    BIO_ctrl(pBVar6,0x6d,1,ssl);
    BIO_push(bp,pBVar6);
    if (DAT_001b80dc != 0) {
      pBVar6 = SSL_get_rbio(ssl);
      BIO_set_callback(pBVar6,FUN_00182141);
      pBVar6 = DAT_001b80e8;
      pBVar8 = SSL_get_rbio(ssl);
      BIO_set_callback_arg(pBVar8,(char *)pBVar6);
    }
    if (DAT_001b80d4 != 0) {
      SSL_set_msg_callback(ssl,FUN_00182311);
      pBVar6 = DAT_001b80e0;
      if (DAT_001b80e0 == (BIO *)0x0) {
        pBVar6 = DAT_001b80e8;
      }
      SSL_ctrl(ssl,0x10,0,pBVar6);
    }
    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {
      iVar3 = BIO_test_flags(bp,8);
      if (iVar3 == 0) {
        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");
        ERR_print_errors(DAT_001b76b0);
        goto LAB_001622dc;
      }
      iVar3 = BIO_test_flags(bp,4);
      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {
        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");
        SRP_user_pwd_free(DAT_001b8080);
        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);
        if (DAT_001b8080 == 0) {
          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");
        }
        else {
          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));
        }
      }
    }
    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");
    FUN_00182e5b(ssl);
LAB_0016238d:
    while( true ) {
      uVar4 = BIO_gets(bp,(char *)out,0x3fff);
      if (-1 < (int)uVar4) break;
      iVar3 = BIO_test_flags(bp,8);
      if (iVar3 == 0) {
        if (DAT_001b80d0 == 0) {
          ERR_print_errors(DAT_001b76b0);
        }
        goto LAB_00162069;
      }
      BIO_printf(DAT_001b80e8,"read R BLOCK\n");
      iVar3 = BIO_test_flags(bp,4);
      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {
        sleep(1);
      }
      else {
        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");
        SRP_user_pwd_free(DAT_001b8080);
        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);
        if (DAT_001b8080 == 0) {
          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");
        }
        else {
          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));
        }
      }
    }
    if (uVar4 != 0) {
      pbVar9 = out + (long)(int)uVar4 + -1;
      bVar2 = *pbVar9;
      while ((bVar2 == 10 || (bVar2 == 0xd))) {
        pbVar9 = pbVar9 + -1;
        uVar4 = uVar4 - 1;
        if (uVar4 == 0) goto LAB_00162400;
        bVar2 = *pbVar9;
      }
      if (DAT_001b80cc == 0) {
        bVar12 = uVar4 < 5;
        bVar13 = uVar4 == 5;
        if (bVar13) {
          lVar7 = 5;
          pbVar9 = out;
          pbVar11 = (byte *)"CLOSE";
          goto code_r0x001623ec;
        }
      }
      goto LAB_00162400;
    }
    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");
LAB_001622dc:
    SSL_set_shutdown(ssl,3);
  }
LAB_00162069:
  CRYPTO_free(out);
  BIO_free_all(bp);
  return 1;
  while( true ) {
    lVar7 = lVar7 + -1;
    bVar12 = *pbVar9 < *pbVar11;
    bVar13 = *pbVar9 == *pbVar11;
    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;
    if (!bVar13) break;
code_r0x001623ec:
    if (lVar7 == 0) break;
  }
  if ((!bVar12 && !bVar13) == bVar12) {
    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");
    goto LAB_001622dc;
  }
  uVar4 = 5;
LAB_00162400:
  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);
  out[(int)uVar4] = 10;
  BIO_write(bp,out,uVar4 + 1);
  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {
    iVar3 = BIO_test_flags(bp,8);
    if (iVar3 == 0) goto LAB_001622dc;
  }
  goto LAB_0016238d;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV R15D,EDI
MOV R14,RCX
LEA RSI,[0x1945bb]
MOV EDI,0x4000
CALL 0x0017b399
MOV R12,RAX
CALL 0x00131c00
MOV RDI,RAX
CALL 0x0012ff90
MOV RBX,RAX
CALL 0x00130f60
MOV RDI,RAX
CALL 0x0012ff90
TEST RBX,RBX
JZ 0x00162069
MOV RBP,RAX
TEST RAX,RAX
JZ 0x00162069
MOV ECX,0x1
MOV EDX,0x4000
MOV ESI,0x75
MOV RDI,RBX
CALL 0x001325d0
TEST RAX,RAX
JNZ 0x00162099
MOV EDX,0xd9d
LEA RSI,[0x19442d]
MOV RDI,R12
CALL 0x0012fb80
MOV RDI,RBX
CALL 0x00131800
MOV EAX,0x1
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [0x001b8100]
CALL 0x0012fca0
MOV R13,RAX
TEST RAX,RAX
JZ 0x00162069
CMP dword ptr [0x001b80d8],0x0
JNZ 0x00162204
TEST R14,R14
JZ 0x001620ea
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,R14
SCASB.REPNE RDI
NOT RCX
LEA RDX,[RCX + -0x1]
MOV RSI,R14
MOV RDI,R13
CALL 0x00131400
TEST EAX,EAX
JZ 0x00162236
MOV ESI,0x0
MOV EDI,R15D
CALL 0x00132bd0
MOV RDX,RAX
MOV RSI,RAX
MOV RDI,R13
CALL 0x00131e50
MOV RDI,R13
CALL 0x00131680
MOV RCX,R13
MOV EDX,0x1
MOV ESI,0x6d
MOV RDI,RBP
CALL 0x00132780
MOV RSI,RBP
MOV RDI,RBX
CALL 0x0012f4c0
CMP dword ptr [0x001b80dc],0x0
JNZ 0x0016224f
CMP dword ptr [0x001b80d4],0x0
JNZ 0x00162285
LEA RBP,[0x1945e1]
MOV ECX,0x0
MOV EDX,0x0
MOV ESI,0x65
MOV RDI,RBX
CALL 0x00132780
TEST EAX,EAX
JG 0x0016230b
MOV ESI,0x8
MOV RDI,RBX
CALL 0x001319c0
TEST EAX,EAX
JZ 0x001622bd
MOV ESI,0x4
MOV RDI,RBX
CALL 0x001319c0
TEST EAX,EAX
JZ 0x0016214e
MOV RDI,RBX
CALL 0x0012eca0
CMP EAX,0x1
JNZ 0x0016214e
MOV RSI,RBP
MOV RDI,qword ptr [0x001b80e8]
MOV EAX,0x0
CALL 0x0012e210
MOV RDI,qword ptr [0x001b8080]
CALL 0x0012e6f0
MOV RSI,qword ptr [0x001b8070]
MOV RDI,qword ptr [0x001b8078]
CALL 0x0012eee0
MOV qword ptr [0x001b8080],RAX
TEST RAX,RAX
JZ 0x001622ee
MOV RDX,qword ptr [RAX + 0x28]
LEA RSI,[0x19446d]
MOV RDI,qword ptr [0x001b80e8]
MOV EAX,0x0
CALL 0x0012e210
JMP 0x0016214e
LEA RDX,[0x18259e]
MOV ESI,0x38
MOV RDI,RAX
CALL 0x0012e260
MOV RCX,qword ptr [0x001b80e8]
MOV EDX,0x0
MOV ESI,0x39
MOV RDI,R13
CALL 0x001323e0
JMP 0x001620ba
MOV RDI,R13
CALL 0x001311a0
MOV RDI,qword ptr [0x001b76b0]
CALL 0x00133090
JMP 0x00162069
MOV RDI,R13
CALL 0x0012e340
LEA RSI,[0x182141]
MOV RDI,RAX
CALL 0x0012f4a0
MOV RBP,qword ptr [0x001b80e8]
MOV RDI,R13
CALL 0x0012e340
MOV RSI,RBP
MOV RDI,RAX
CALL 0x00131a00
JMP 0x0016213a
LEA RSI,[0x182311]
MOV RDI,R13
CALL 0x00132460
MOV RCX,qword ptr [0x001b80e0]
TEST RCX,RCX
CMOVZ RCX,qword ptr [0x001b80e8]
MOV EDX,0x0
MOV ESI,0x10
MOV RDI,R13
CALL 0x001323e0
JMP 0x00162147
LEA RSI,[0x1945cd]
MOV RDI,qword ptr [0x001b76b0]
CALL 0x0012f360
MOV RDI,qword ptr [0x001b76b0]
CALL 0x00133090
MOV ESI,0x3
MOV RDI,R13
CALL 0x0012f340
JMP 0x00162069
LEA RSI,[0x19447d]
MOV RDI,qword ptr [0x001b80e8]
MOV EAX,0x0
CALL 0x0012e210
JMP 0x0016214e
LEA RSI,[0x19066f]
MOV RDI,qword ptr [0x001b76b0]
MOV EAX,0x0
CALL 0x0012e210
MOV RDI,R13
CALL 0x00182e5b
LEA R14,[0x194611]
JMP 0x0016238d
MOV ESI,0x8
MOV RDI,RBX
CALL 0x001319c0
TEST EAX,EAX
JZ 0x0016245b
LEA RSI,[0x190711]
MOV RDI,qword ptr [0x001b80e8]
MOV EAX,0x0
CALL 0x0012e210
MOV ESI,0x4
MOV RDI,RBX
CALL 0x001319c0
TEST EAX,EAX
JZ 0x00162383
MOV RDI,RBX
CALL 0x0012eca0
CMP EAX,0x1
JZ 0x00162479
MOV EDI,0x1
CALL 0x00130570
MOV EDX,0x3fff
MOV RSI,R12
MOV RDI,RBX
CALL 0x0012fab0
MOV EBP,EAX
TEST EAX,EAX
JS 0x00162334
JZ 0x001624fa
CDQE
LEA RAX,[R12 + RAX*0x1 + -0x1]
MOVZX EDX,byte ptr [RAX]
CMP DL,0xa
JZ 0x001623bd
CMP DL,0xd
JNZ 0x001623d3
SUB RAX,0x1
SUB EBP,0x1
JZ 0x00162400
MOVZX EDX,byte ptr [RAX]
CMP DL,0xa
JZ 0x001623bd
CMP DL,0xd
JZ 0x001623bd
CMP dword ptr [0x001b80cc],0x0
JNZ 0x00162400
CMP EBP,0x5
JNZ 0x00162400
MOV ECX,0x5
MOV RSI,R12
MOV RDI,R14
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x00162517
MOV EBP,0x5
MOVSXD R15,EBP
MOV RDX,R15
MOV ESI,0x0
MOV RDI,R12
CALL 0x0012f1f0
MOV byte ptr [R12 + R15*0x1],0xa
LEA EDX,[RBP + 0x1]
MOV RSI,R12
MOV RDI,RBX
CALL 0x00131560
MOV ECX,0x0
MOV EDX,0x0
MOV ESI,0xb
MOV RDI,RBX
CALL 0x00132780
TEST EAX,EAX
JG 0x0016238d
MOV ESI,0x8
MOV RDI,RBX
CALL 0x001319c0
TEST EAX,EAX
JNZ 0x00162426
JMP 0x001622dc
CMP dword ptr [0x001b80d0],0x0
JNZ 0x00162069
MOV RDI,qword ptr [0x001b76b0]
CALL 0x00133090
JMP 0x00162069
LEA RSI,[0x194452]
MOV RDI,qword ptr [0x001b80e8]
MOV EAX,0x0
CALL 0x0012e210
MOV RDI,qword ptr [0x001b8080]
CALL 0x0012e6f0
MOV RSI,qword ptr [0x001b8070]
MOV RDI,qword ptr [0x001b8078]
CALL 0x0012eee0
MOV qword ptr [0x001b8080],RAX
TEST RAX,RAX
JZ 0x001624dd
MOV RDX,qword ptr [RAX + 0x28]
LEA RSI,[0x19446d]
MOV RDI,qword ptr [0x001b80e8]
MOV EAX,0x0
CALL 0x0012e210
JMP 0x0016238d
LEA RSI,[0x19447d]
MOV RDI,qword ptr [0x001b80e8]
MOV EAX,0x0
CALL 0x0012e210
JMP 0x0016238d
LEA RSI,[0x1945fe]
MOV RDI,qword ptr [0x001b76b0]
MOV EAX,0x0
CALL 0x0012e210
JMP 0x001622dc
LEA RSI,[0x1945fe]
MOV RDI,qword ptr [0x001b76b0]
CALL 0x0012e210
JMP 0x001622dc
(translation_unit "undefined8 FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)\n\n{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}\n\n" (function_definition "undefined8 FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)\n\n{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" type_identifier (function_declarator "FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)" identifier (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "uchar *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *out;" type_identifier (pointer_declarator "*out" * identifier) ;) (declaration "BIO_METHOD *pBVar5;" type_identifier (pointer_declarator "*pBVar5" * identifier) ;) (declaration "BIO *bp;" type_identifier (pointer_declarator "*bp" * identifier) ;) (declaration "BIO *pBVar6;" type_identifier (pointer_declarator "*pBVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "SSL *ssl;" type_identifier (pointer_declarator "*ssl" * identifier) ;) (declaration "BIO *pBVar8;" type_identifier (pointer_declarator "*pBVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "out = (byte *)FUN_0017b399(0x4000,"server rev buffer");" (assignment_expression "out = (byte *)FUN_0017b399(0x4000,"server rev buffer")" identifier = (cast_expression "(byte *)FUN_0017b399(0x4000,"server rev buffer")" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b399(0x4000,"server rev buffer")" identifier (argument_list "(0x4000,"server rev buffer")" ( number_literal , (string_literal ""server rev buffer"" " string_content ") ))))) ;) (expression_statement "pBVar5 = BIO_f_buffer();" (assignment_expression "pBVar5 = BIO_f_buffer()" identifier = (call_expression "BIO_f_buffer()" identifier (argument_list "()" ( )))) ;) (expression_statement "bp = BIO_new(pBVar5);" (assignment_expression "bp = BIO_new(pBVar5)" identifier = (call_expression "BIO_new(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (expression_statement "pBVar5 = BIO_f_ssl();" (assignment_expression "pBVar5 = BIO_f_ssl()" identifier = (call_expression "BIO_f_ssl()" identifier (argument_list "()" ( )))) ;) (expression_statement "pBVar6 = BIO_new(pBVar5);" (assignment_expression "pBVar6 = BIO_new(pBVar5)" identifier = (call_expression "BIO_new(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (if_statement "if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" if (parenthesized_expression "((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0))" ( (binary_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)" (parenthesized_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0))" ( (binary_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" (parenthesized_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0))" ( (binary_expression "(bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)" (parenthesized_expression "(bp != (BIO *)0x0)" ( (binary_expression "bp != (BIO *)0x0" identifier != (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pBVar6 != (BIO *)0x0)" ( (binary_expression "pBVar6 != (BIO *)0x0" identifier != (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" ( (comma_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0" (assignment_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1)" identifier = (call_expression "BIO_int_ctrl(bp,0x75,0x4000,1)" identifier (argument_list "(bp,0x75,0x4000,1)" ( identifier , number_literal , number_literal , number_literal )))) , (binary_expression "lVar7 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)" ( (comma_expression "ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0" (assignment_expression "ssl = SSL_new(DAT_001b8100)" identifier = (call_expression "SSL_new(DAT_001b8100)" identifier (argument_list "(DAT_001b8100)" ( identifier )))) , (binary_expression "ssl != (SSL *)0x0" identifier != (cast_expression "(SSL *)0x0" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" { (if_statement "if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }" if (parenthesized_expression "(DAT_001b80d8 != 0)" ( (binary_expression "DAT_001b80d8 != 0" identifier != number_literal) )) (compound_statement "{\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }" { (expression_statement "SSL_callback_ctrl(ssl,0x38,FUN_0018259e);" (call_expression "SSL_callback_ctrl(ssl,0x38,FUN_0018259e)" identifier (argument_list "(ssl,0x38,FUN_0018259e)" ( identifier , number_literal , identifier ))) ;) (expression_statement "SSL_ctrl(ssl,0x39,0,DAT_001b80e8);" (call_expression "SSL_ctrl(ssl,0x39,0,DAT_001b80e8)" identifier (argument_list "(ssl,0x39,0,DAT_001b80e8)" ( identifier , number_literal , number_literal , identifier ))) ;) })) (if_statement "if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }" if (parenthesized_expression "(param_4 != (uchar *)0x0)" ( (binary_expression "param_4 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }" { (expression_statement "lVar7 = -1;" (assignment_expression "lVar7 = -1" identifier = number_literal) ;) (expression_statement "puVar10 = param_4;" (assignment_expression "puVar10 = param_4" identifier = identifier) ;) (do_statement "do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');" do (compound_statement "{\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar1 = *puVar10;" (assignment_expression "uVar1 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "puVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "puVar10 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != '\0')" ( (binary_expression "uVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);" (assignment_expression "iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1)" identifier = (call_expression "SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1)" identifier (argument_list "(ssl,param_4,~(uint)lVar7 - 1)" ( identifier , identifier , (binary_expression "~(uint)lVar7 - 1" (unary_expression "~(uint)lVar7" ~ (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )))) ;) (if_statement "if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }" { (expression_statement "SSL_free(ssl);" (call_expression "SSL_free(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) (goto_statement "goto LAB_00162069;" goto statement_identifier ;) })) })) (expression_statement "pBVar8 = BIO_new_socket(param_1,0);" (assignment_expression "pBVar8 = BIO_new_socket(param_1,0)" identifier = (call_expression "BIO_new_socket(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (expression_statement "SSL_set_bio(ssl,pBVar8,pBVar8);" (call_expression "SSL_set_bio(ssl,pBVar8,pBVar8)" identifier (argument_list "(ssl,pBVar8,pBVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "SSL_set_accept_state(ssl);" (call_expression "SSL_set_accept_state(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (expression_statement "BIO_ctrl(pBVar6,0x6d,1,ssl);" (call_expression "BIO_ctrl(pBVar6,0x6d,1,ssl)" identifier (argument_list "(pBVar6,0x6d,1,ssl)" ( identifier , number_literal , number_literal , identifier ))) ;) (expression_statement "BIO_push(bp,pBVar6);" (call_expression "BIO_push(bp,pBVar6)" identifier (argument_list "(bp,pBVar6)" ( identifier , identifier ))) ;) (if_statement "if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }" if (parenthesized_expression "(DAT_001b80dc != 0)" ( (binary_expression "DAT_001b80dc != 0" identifier != number_literal) )) (compound_statement "{\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }" { (expression_statement "pBVar6 = SSL_get_rbio(ssl);" (assignment_expression "pBVar6 = SSL_get_rbio(ssl)" identifier = (call_expression "SSL_get_rbio(ssl)" identifier (argument_list "(ssl)" ( identifier )))) ;) (expression_statement "BIO_set_callback(pBVar6,FUN_00182141);" (call_expression "BIO_set_callback(pBVar6,FUN_00182141)" identifier (argument_list "(pBVar6,FUN_00182141)" ( identifier , identifier ))) ;) (expression_statement "pBVar6 = DAT_001b80e8;" (assignment_expression "pBVar6 = DAT_001b80e8" identifier = identifier) ;) (expression_statement "pBVar8 = SSL_get_rbio(ssl);" (assignment_expression "pBVar8 = SSL_get_rbio(ssl)" identifier = (call_expression "SSL_get_rbio(ssl)" identifier (argument_list "(ssl)" ( identifier )))) ;) (expression_statement "BIO_set_callback_arg(pBVar8,(char *)pBVar6);" (call_expression "BIO_set_callback_arg(pBVar8,(char *)pBVar6)" identifier (argument_list "(pBVar8,(char *)pBVar6)" ( identifier , (cast_expression "(char *)pBVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (if_statement "if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }" if (parenthesized_expression "(DAT_001b80d4 != 0)" ( (binary_expression "DAT_001b80d4 != 0" identifier != number_literal) )) (compound_statement "{\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }" { (expression_statement "SSL_set_msg_callback(ssl,FUN_00182311);" (call_expression "SSL_set_msg_callback(ssl,FUN_00182311)" identifier (argument_list "(ssl,FUN_00182311)" ( identifier , identifier ))) ;) (expression_statement "pBVar6 = DAT_001b80e0;" (assignment_expression "pBVar6 = DAT_001b80e0" identifier = identifier) ;) (if_statement "if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }" if (parenthesized_expression "(DAT_001b80e0 == (BIO *)0x0)" ( (binary_expression "DAT_001b80e0 == (BIO *)0x0" identifier == (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pBVar6 = DAT_001b80e8;\n      }" { (expression_statement "pBVar6 = DAT_001b80e8;" (assignment_expression "pBVar6 = DAT_001b80e8" identifier = identifier) ;) })) (expression_statement "SSL_ctrl(ssl,0x10,0,pBVar6);" (call_expression "SSL_ctrl(ssl,0x10,0,pBVar6)" identifier (argument_list "(ssl,0x10,0,pBVar6)" ( identifier , number_literal , number_literal , identifier ))) ;) })) (while_statement "while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" while (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1)" ( (comma_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0)" identifier = (call_expression "BIO_ctrl(bp,0x65,0,(void *)0x0)" identifier (argument_list "(bp,0x65,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (compound_statement "{\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" { (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }" { (expression_statement "BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");" (call_expression "BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION FAILURE\n")" ( identifier , (string_literal ""CONNECTION FAILURE\n"" " string_content escape_sequence ") ))) ;) (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;) })) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" identifier = (call_expression "BIO_test_flags(bp,4)" identifier (argument_list "(bp,4)" ( identifier , number_literal )))) ;) (if_statement "if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" if (parenthesized_expression "((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1))" ( (binary_expression "(iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" ( (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 == 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" identifier = (call_expression "BIO_get_retry_reason(bp)" identifier (argument_list "(bp)" ( identifier )))) , (binary_expression "iVar3 == 1" identifier == number_literal)) ))) )) (compound_statement "{\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP renego during accept\n")" ( identifier , (string_literal ""LOOKUP renego during accept\n"" " string_content escape_sequence ") ))) ;) (expression_statement "SRP_user_pwd_free(DAT_001b8080);" (call_expression "SRP_user_pwd_free(DAT_001b8080)" identifier (argument_list "(DAT_001b8080)" ( identifier ))) ;) (expression_statement "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);" (assignment_expression "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier = (call_expression "SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier (argument_list "(DAT_001b8078,DAT_001b8070)" ( identifier , identifier )))) ;) (if_statement "if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" if (parenthesized_expression "(DAT_001b8080 == 0)" ( (binary_expression "DAT_001b8080 == 0" identifier == number_literal) )) (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP not successful\n")" ( identifier , (string_literal ""LOOKUP not successful\n"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" else (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" identifier (argument_list "(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" ( identifier , (string_literal ""LOOKUP done %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(DAT_001b8080 + 0x28)" * (cast_expression "(undefined8 *)(DAT_001b8080 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001b8080 + 0x28)" ( (binary_expression "DAT_001b8080 + 0x28" identifier + number_literal) )))) ))) ;) }))) })) })) (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION ESTABLISHED\n")" ( identifier , (string_literal ""CONNECTION ESTABLISHED\n"" " string_content escape_sequence ") ))) ;) (expression_statement "FUN_00182e5b(ssl);" (call_expression "FUN_00182e5b(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (labeled_statement "LAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" statement_identifier : (while_statement "while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" { (expression_statement "uVar4 = BIO_gets(bp,(char *)out,0x3fff);" (assignment_expression "uVar4 = BIO_gets(bp,(char *)out,0x3fff)" identifier = (call_expression "BIO_gets(bp,(char *)out,0x3fff)" identifier (argument_list "(bp,(char *)out,0x3fff)" ( identifier , (cast_expression "(char *)out" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (if_statement "if (-1 < (int)uVar4) break;" if (parenthesized_expression "(-1 < (int)uVar4)" ( (binary_expression "-1 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }" { (if_statement "if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }" if (parenthesized_expression "(DAT_001b80d0 == 0)" ( (binary_expression "DAT_001b80d0 == 0" identifier == number_literal) )) (compound_statement "{\n          ERR_print_errors(DAT_001b76b0);\n        }" { (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) })) (goto_statement "goto LAB_00162069;" goto statement_identifier ;) })) (expression_statement "BIO_printf(DAT_001b80e8,"read R BLOCK\n");" (call_expression "BIO_printf(DAT_001b80e8,"read R BLOCK\n")" identifier (argument_list "(DAT_001b80e8,"read R BLOCK\n")" ( identifier , (string_literal ""read R BLOCK\n"" " string_content escape_sequence ") ))) ;) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" identifier = (call_expression "BIO_test_flags(bp,4)" identifier (argument_list "(bp,4)" ( identifier , number_literal )))) ;) (if_statement "if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" if (parenthesized_expression "((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1))" ( (binary_expression "(iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" ( (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 != 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" identifier = (call_expression "BIO_get_retry_reason(bp)" identifier (argument_list "(bp)" ( identifier )))) , (binary_expression "iVar3 != 1" identifier != number_literal)) ))) )) (compound_statement "{\n        sleep(1);\n      }" { (expression_statement "sleep(1);" (call_expression "sleep(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }) (else_clause "else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" else (compound_statement "{\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP renego during read\n")" ( identifier , (string_literal ""LOOKUP renego during read\n"" " string_content escape_sequence ") ))) ;) (expression_statement "SRP_user_pwd_free(DAT_001b8080);" (call_expression "SRP_user_pwd_free(DAT_001b8080)" identifier (argument_list "(DAT_001b8080)" ( identifier ))) ;) (expression_statement "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);" (assignment_expression "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier = (call_expression "SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier (argument_list "(DAT_001b8078,DAT_001b8070)" ( identifier , identifier )))) ;) (if_statement "if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" if (parenthesized_expression "(DAT_001b8080 == 0)" ( (binary_expression "DAT_001b8080 == 0" identifier == number_literal) )) (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP not successful\n")" ( identifier , (string_literal ""LOOKUP not successful\n"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" else (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" identifier (argument_list "(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" ( identifier , (string_literal ""LOOKUP done %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(DAT_001b8080 + 0x28)" * (cast_expression "(undefined8 *)(DAT_001b8080 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001b8080 + 0x28)" ( (binary_expression "DAT_001b8080 + 0x28" identifier + number_literal) )))) ))) ;) }))) }))) }))) (if_statement "if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" { (expression_statement "pbVar9 = out + (long)(int)uVar4 + -1;" (assignment_expression "pbVar9 = out + (long)(int)uVar4 + -1" identifier = (binary_expression "out + (long)(int)uVar4 + -1" (binary_expression "out + (long)(int)uVar4" identifier + (cast_expression "(long)(int)uVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal)) ;) (expression_statement "bVar2 = *pbVar9;" (assignment_expression "bVar2 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (while_statement "while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }" while (parenthesized_expression "((bVar2 == 10 || (bVar2 == 0xd)))" ( (parenthesized_expression "(bVar2 == 10 || (bVar2 == 0xd))" ( (binary_expression "bVar2 == 10 || (bVar2 == 0xd)" (binary_expression "bVar2 == 10" identifier == number_literal) || (parenthesized_expression "(bVar2 == 0xd)" ( (binary_expression "bVar2 == 0xd" identifier == number_literal) ))) )) )) (compound_statement "{\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }" { (expression_statement "pbVar9 = pbVar9 + -1;" (assignment_expression "pbVar9 = pbVar9 + -1" identifier = (binary_expression "pbVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (if_statement "if (uVar4 == 0) goto LAB_00162400;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00162400;" goto statement_identifier ;)) (expression_statement "bVar2 = *pbVar9;" (assignment_expression "bVar2 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) })) (if_statement "if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" if (parenthesized_expression "(DAT_001b80cc == 0)" ( (binary_expression "DAT_001b80cc == 0" identifier == number_literal) )) (compound_statement "{\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" { (expression_statement "bVar12 = uVar4 < 5;" (assignment_expression "bVar12 = uVar4 < 5" identifier = (binary_expression "uVar4 < 5" identifier < number_literal)) ;) (expression_statement "bVar13 = uVar4 == 5;" (assignment_expression "bVar13 = uVar4 == 5" identifier = (binary_expression "uVar4 == 5" identifier == number_literal)) ;) (if_statement "if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" { (expression_statement "lVar7 = 5;" (assignment_expression "lVar7 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = out;" (assignment_expression "pbVar9 = out" identifier = identifier) ;) (expression_statement "pbVar11 = (byte *)"CLOSE";" (assignment_expression "pbVar11 = (byte *)"CLOSE"" identifier = (cast_expression "(byte *)"CLOSE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""CLOSE"" " string_content "))) ;) (goto_statement "goto code_r0x001623ec;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00162400;" goto statement_identifier ;) })) (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION CLOSED\n")" ( identifier , (string_literal ""CONNECTION CLOSED\n"" " string_content escape_sequence ") ))) ;) (labeled_statement "LAB_001622dc:\n    SSL_set_shutdown(ssl,3);" statement_identifier : (expression_statement "SSL_set_shutdown(ssl,3);" (call_expression "SSL_set_shutdown(ssl,3)" identifier (argument_list "(ssl,3)" ( identifier , number_literal ))) ;)) })) (labeled_statement "LAB_00162069:\n  CRYPTO_free(out);" statement_identifier : (expression_statement "CRYPTO_free(out);" (call_expression "CRYPTO_free(out)" identifier (argument_list "(out)" ( identifier ))) ;)) (expression_statement "BIO_free_all(bp);" (call_expression "BIO_free_all(bp)" identifier (argument_list "(bp)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) (while_statement "while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" { (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar11;" (assignment_expression "bVar12 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar9 == *pbVar11;" (assignment_expression "bVar13 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (!bVar13) break;" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x001623ec:\n    if (lVar7 == 0) break;" statement_identifier : (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" { (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION CLOSED\n")" ( identifier , (string_literal ""CONNECTION CLOSED\n"" " string_content escape_sequence ") ))) ;) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;) })) (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (labeled_statement "LAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" statement_identifier : (expression_statement "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" (call_expression "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4)" identifier (argument_list "(out,(uchar *)0x0,(long)(int)uVar4)" ( identifier , (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(long)(int)uVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;)) (expression_statement "out[(int)uVar4] = 10;" (assignment_expression "out[(int)uVar4] = 10" (subscript_expression "out[(int)uVar4]" identifier [ (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;) (expression_statement "BIO_write(bp,out,uVar4 + 1);" (call_expression "BIO_write(bp,out,uVar4 + 1)" identifier (argument_list "(bp,out,uVar4 + 1)" ( identifier , identifier , (binary_expression "uVar4 + 1" identifier + number_literal) ))) ;) (while_statement "while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" while (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1)" ( (comma_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0)" identifier = (call_expression "BIO_ctrl(bp,0xb,0,(void *)0x0)" identifier (argument_list "(bp,0xb,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (compound_statement "{\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" { (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) goto LAB_001622dc;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0016238d;" goto statement_identifier ;) })))
(translation_unit "int rev_body(int s,int stype,int prot,uchar *context)\n\n{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *rbio;\n  byte *pbVar8;\n  BIO *pBVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)app_malloc(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0)) {\n    if (s_tlsextdebug != 0) {\n      SSL_callback_ctrl(ssl,0x38,tlsext_cb);\n      SSL_ctrl(ssl,0x39,0,bio_s_out);\n    }\n    if (context != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = context;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }\n    }\n    rbio = BIO_new_socket(s,0);\n    SSL_set_bio(ssl,rbio,rbio);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (s_debug != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,bio_dump_callback);\n      pBVar9 = bio_s_out;\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar6,(char *)pBVar9);\n    }\n    if (s_msg != 0) {\n      SSL_set_msg_callback(ssl,msg_cb);\n      pBVar9 = bio_s_msg;\n      if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar9);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n");\n    print_ssl_summary((SSL *)ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar8 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar8;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }\n      if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar8 < *pbVar11;\n    bVar13 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}\n\n" (function_definition "int rev_body(int s,int stype,int prot,uchar *context)\n\n{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *rbio;\n  byte *pbVar8;\n  BIO *pBVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)app_malloc(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0)) {\n    if (s_tlsextdebug != 0) {\n      SSL_callback_ctrl(ssl,0x38,tlsext_cb);\n      SSL_ctrl(ssl,0x39,0,bio_s_out);\n    }\n    if (context != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = context;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }\n    }\n    rbio = BIO_new_socket(s,0);\n    SSL_set_bio(ssl,rbio,rbio);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (s_debug != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,bio_dump_callback);\n      pBVar9 = bio_s_out;\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar6,(char *)pBVar9);\n    }\n    if (s_msg != 0) {\n      SSL_set_msg_callback(ssl,msg_cb);\n      pBVar9 = bio_s_msg;\n      if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar9);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n");\n    print_ssl_summary((SSL *)ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar8 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar8;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }\n      if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar8 < *pbVar11;\n    bVar13 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" primitive_type (function_declarator "rev_body(int s,int stype,int prot,uchar *context)" identifier (parameter_list "(int s,int stype,int prot,uchar *context)" ( (parameter_declaration "int s" primitive_type identifier) , (parameter_declaration "int stype" primitive_type identifier) , (parameter_declaration "int prot" primitive_type identifier) , (parameter_declaration "uchar *context" type_identifier (pointer_declarator "*context" * identifier)) ))) (compound_statement "{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *rbio;\n  byte *pbVar8;\n  BIO *pBVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)app_malloc(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0)) {\n    if (s_tlsextdebug != 0) {\n      SSL_callback_ctrl(ssl,0x38,tlsext_cb);\n      SSL_ctrl(ssl,0x39,0,bio_s_out);\n    }\n    if (context != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = context;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }\n    }\n    rbio = BIO_new_socket(s,0);\n    SSL_set_bio(ssl,rbio,rbio);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (s_debug != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,bio_dump_callback);\n      pBVar9 = bio_s_out;\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar6,(char *)pBVar9);\n    }\n    if (s_msg != 0) {\n      SSL_set_msg_callback(ssl,msg_cb);\n      pBVar9 = bio_s_msg;\n      if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar9);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n");\n    print_ssl_summary((SSL *)ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar8 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar8;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }\n      if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar8 < *pbVar11;\n    bVar13 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *out;" type_identifier (pointer_declarator "*out" * identifier) ;) (declaration "BIO_METHOD *pBVar5;" type_identifier (pointer_declarator "*pBVar5" * identifier) ;) (declaration "BIO *bp;" type_identifier (pointer_declarator "*bp" * identifier) ;) (declaration "BIO *pBVar6;" type_identifier (pointer_declarator "*pBVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "SSL *ssl;" type_identifier (pointer_declarator "*ssl" * identifier) ;) (declaration "BIO *rbio;" type_identifier (pointer_declarator "*rbio" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "BIO *pBVar9;" type_identifier (pointer_declarator "*pBVar9" * identifier) ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "out = (byte *)app_malloc(0x4000,"server rev buffer");" (assignment_expression "out = (byte *)app_malloc(0x4000,"server rev buffer")" identifier = (cast_expression "(byte *)app_malloc(0x4000,"server rev buffer")" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "app_malloc(0x4000,"server rev buffer")" identifier (argument_list "(0x4000,"server rev buffer")" ( number_literal , (string_literal ""server rev buffer"" " string_content ") ))))) ;) (expression_statement "pBVar5 = BIO_f_buffer();" (assignment_expression "pBVar5 = BIO_f_buffer()" identifier = (call_expression "BIO_f_buffer()" identifier (argument_list "()" ( )))) ;) (expression_statement "bp = BIO_new(pBVar5);" (assignment_expression "bp = BIO_new(pBVar5)" identifier = (call_expression "BIO_new(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (expression_statement "pBVar5 = BIO_f_ssl();" (assignment_expression "pBVar5 = BIO_f_ssl()" identifier = (call_expression "BIO_f_ssl()" identifier (argument_list "()" ( )))) ;) (expression_statement "pBVar6 = BIO_new(pBVar5);" (assignment_expression "pBVar6 = BIO_new(pBVar5)" identifier = (call_expression "BIO_new(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (if_statement "if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0)) {\n    if (s_tlsextdebug != 0) {\n      SSL_callback_ctrl(ssl,0x38,tlsext_cb);\n      SSL_ctrl(ssl,0x39,0,bio_s_out);\n    }\n    if (context != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = context;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }\n    }\n    rbio = BIO_new_socket(s,0);\n    SSL_set_bio(ssl,rbio,rbio);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (s_debug != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,bio_dump_callback);\n      pBVar9 = bio_s_out;\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar6,(char *)pBVar9);\n    }\n    if (s_msg != 0) {\n      SSL_set_msg_callback(ssl,msg_cb);\n      pBVar9 = bio_s_msg;\n      if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar9);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n");\n    print_ssl_summary((SSL *)ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar8 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar8;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }\n      if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" if (parenthesized_expression "((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0))" ( (binary_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0)" (parenthesized_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0))" ( (binary_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" (parenthesized_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0))" ( (binary_expression "(bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)" (parenthesized_expression "(bp != (BIO *)0x0)" ( (binary_expression "bp != (BIO *)0x0" identifier != (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pBVar6 != (BIO *)0x0)" ( (binary_expression "pBVar6 != (BIO *)0x0" identifier != (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" ( (comma_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0" (assignment_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1)" identifier = (call_expression "BIO_int_ctrl(bp,0x75,0x4000,1)" identifier (argument_list "(bp,0x75,0x4000,1)" ( identifier , number_literal , number_literal , number_literal )))) , (binary_expression "lVar7 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0)" ( (comma_expression "ssl = SSL_new((SSL_CTX *)ctx), ssl != (SSL *)0x0" (assignment_expression "ssl = SSL_new((SSL_CTX *)ctx)" identifier = (call_expression "SSL_new((SSL_CTX *)ctx)" identifier (argument_list "((SSL_CTX *)ctx)" ( (cast_expression "(SSL_CTX *)ctx" ( (type_descriptor "SSL_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "ssl != (SSL *)0x0" identifier != (cast_expression "(SSL *)0x0" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (s_tlsextdebug != 0) {\n      SSL_callback_ctrl(ssl,0x38,tlsext_cb);\n      SSL_ctrl(ssl,0x39,0,bio_s_out);\n    }\n    if (context != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = context;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }\n    }\n    rbio = BIO_new_socket(s,0);\n    SSL_set_bio(ssl,rbio,rbio);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (s_debug != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,bio_dump_callback);\n      pBVar9 = bio_s_out;\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar6,(char *)pBVar9);\n    }\n    if (s_msg != 0) {\n      SSL_set_msg_callback(ssl,msg_cb);\n      pBVar9 = bio_s_msg;\n      if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar9);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n");\n    print_ssl_summary((SSL *)ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar8 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar8;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }\n      if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" { (if_statement "if (s_tlsextdebug != 0) {\n      SSL_callback_ctrl(ssl,0x38,tlsext_cb);\n      SSL_ctrl(ssl,0x39,0,bio_s_out);\n    }" if (parenthesized_expression "(s_tlsextdebug != 0)" ( (binary_expression "s_tlsextdebug != 0" identifier != number_literal) )) (compound_statement "{\n      SSL_callback_ctrl(ssl,0x38,tlsext_cb);\n      SSL_ctrl(ssl,0x39,0,bio_s_out);\n    }" { (expression_statement "SSL_callback_ctrl(ssl,0x38,tlsext_cb);" (call_expression "SSL_callback_ctrl(ssl,0x38,tlsext_cb)" identifier (argument_list "(ssl,0x38,tlsext_cb)" ( identifier , number_literal , identifier ))) ;) (expression_statement "SSL_ctrl(ssl,0x39,0,bio_s_out);" (call_expression "SSL_ctrl(ssl,0x39,0,bio_s_out)" identifier (argument_list "(ssl,0x39,0,bio_s_out)" ( identifier , number_literal , number_literal , identifier ))) ;) })) (if_statement "if (context != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = context;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }\n    }" if (parenthesized_expression "(context != (uchar *)0x0)" ( (binary_expression "context != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar7 = -1;\n      puVar10 = context;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }\n    }" { (expression_statement "lVar7 = -1;" (assignment_expression "lVar7 = -1" identifier = number_literal) ;) (expression_statement "puVar10 = context;" (assignment_expression "puVar10 = context" identifier = identifier) ;) (do_statement "do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');" do (compound_statement "{\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar1 = *puVar10;" (assignment_expression "uVar1 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "puVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "puVar10 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != '\0')" ( (binary_expression "uVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1);" (assignment_expression "iVar3 = SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1)" identifier = (call_expression "SSL_set_session_id_context(ssl,context,~(uint)lVar7 - 1)" identifier (argument_list "(ssl,context,~(uint)lVar7 - 1)" ( identifier , identifier , (binary_expression "~(uint)lVar7 - 1" (unary_expression "~(uint)lVar7" ~ (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )))) ;) (if_statement "if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        SSL_free(ssl);\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_00162069;\n      }" { (expression_statement "SSL_free(ssl);" (call_expression "SSL_free(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (expression_statement "ERR_print_errors((BIO *)bio_err);" (call_expression "ERR_print_errors((BIO *)bio_err)" identifier (argument_list "((BIO *)bio_err)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (goto_statement "goto LAB_00162069;" goto statement_identifier ;) })) })) (expression_statement "rbio = BIO_new_socket(s,0);" (assignment_expression "rbio = BIO_new_socket(s,0)" identifier = (call_expression "BIO_new_socket(s,0)" identifier (argument_list "(s,0)" ( identifier , number_literal )))) ;) (expression_statement "SSL_set_bio(ssl,rbio,rbio);" (call_expression "SSL_set_bio(ssl,rbio,rbio)" identifier (argument_list "(ssl,rbio,rbio)" ( identifier , identifier , identifier ))) ;) (expression_statement "SSL_set_accept_state(ssl);" (call_expression "SSL_set_accept_state(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (expression_statement "BIO_ctrl(pBVar6,0x6d,1,ssl);" (call_expression "BIO_ctrl(pBVar6,0x6d,1,ssl)" identifier (argument_list "(pBVar6,0x6d,1,ssl)" ( identifier , number_literal , number_literal , identifier ))) ;) (expression_statement "BIO_push(bp,pBVar6);" (call_expression "BIO_push(bp,pBVar6)" identifier (argument_list "(bp,pBVar6)" ( identifier , identifier ))) ;) (if_statement "if (s_debug != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,bio_dump_callback);\n      pBVar9 = bio_s_out;\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar6,(char *)pBVar9);\n    }" if (parenthesized_expression "(s_debug != 0)" ( (binary_expression "s_debug != 0" identifier != number_literal) )) (compound_statement "{\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,bio_dump_callback);\n      pBVar9 = bio_s_out;\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar6,(char *)pBVar9);\n    }" { (expression_statement "pBVar6 = SSL_get_rbio(ssl);" (assignment_expression "pBVar6 = SSL_get_rbio(ssl)" identifier = (call_expression "SSL_get_rbio(ssl)" identifier (argument_list "(ssl)" ( identifier )))) ;) (expression_statement "BIO_set_callback(pBVar6,bio_dump_callback);" (call_expression "BIO_set_callback(pBVar6,bio_dump_callback)" identifier (argument_list "(pBVar6,bio_dump_callback)" ( identifier , identifier ))) ;) (expression_statement "pBVar9 = bio_s_out;" (assignment_expression "pBVar9 = bio_s_out" identifier = identifier) ;) (expression_statement "pBVar6 = SSL_get_rbio(ssl);" (assignment_expression "pBVar6 = SSL_get_rbio(ssl)" identifier = (call_expression "SSL_get_rbio(ssl)" identifier (argument_list "(ssl)" ( identifier )))) ;) (expression_statement "BIO_set_callback_arg(pBVar6,(char *)pBVar9);" (call_expression "BIO_set_callback_arg(pBVar6,(char *)pBVar9)" identifier (argument_list "(pBVar6,(char *)pBVar9)" ( identifier , (cast_expression "(char *)pBVar9" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (if_statement "if (s_msg != 0) {\n      SSL_set_msg_callback(ssl,msg_cb);\n      pBVar9 = bio_s_msg;\n      if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar9);\n    }" if (parenthesized_expression "(s_msg != 0)" ( (binary_expression "s_msg != 0" identifier != number_literal) )) (compound_statement "{\n      SSL_set_msg_callback(ssl,msg_cb);\n      pBVar9 = bio_s_msg;\n      if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar9);\n    }" { (expression_statement "SSL_set_msg_callback(ssl,msg_cb);" (call_expression "SSL_set_msg_callback(ssl,msg_cb)" identifier (argument_list "(ssl,msg_cb)" ( identifier , identifier ))) ;) (expression_statement "pBVar9 = bio_s_msg;" (assignment_expression "pBVar9 = bio_s_msg" identifier = identifier) ;) (if_statement "if (bio_s_msg == (BIO *)0x0) {\n        pBVar9 = bio_s_out;\n      }" if (parenthesized_expression "(bio_s_msg == (BIO *)0x0)" ( (binary_expression "bio_s_msg == (BIO *)0x0" identifier == (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pBVar9 = bio_s_out;\n      }" { (expression_statement "pBVar9 = bio_s_out;" (assignment_expression "pBVar9 = bio_s_out" identifier = identifier) ;) })) (expression_statement "SSL_ctrl(ssl,0x10,0,pBVar9);" (call_expression "SSL_ctrl(ssl,0x10,0,pBVar9)" identifier (argument_list "(ssl,0x10,0,pBVar9)" ( identifier , number_literal , number_literal , identifier ))) ;) })) (while_statement "while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }" while (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1)" ( (comma_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0)" identifier = (call_expression "BIO_ctrl(bp,0x65,0,(void *)0x0)" identifier (argument_list "(bp,0x65,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (compound_statement "{\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }" { (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");\n        ERR_print_errors((BIO *)bio_err);\n        goto LAB_001622dc;\n      }" { (expression_statement "BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n");" (call_expression "BIO_puts((BIO *)bio_err,"CONNECTION FAILURE\n")" identifier (argument_list "((BIO *)bio_err,"CONNECTION FAILURE\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""CONNECTION FAILURE\n"" " string_content escape_sequence ") ))) ;) (expression_statement "ERR_print_errors((BIO *)bio_err);" (call_expression "ERR_print_errors((BIO *)bio_err)" identifier (argument_list "((BIO *)bio_err)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;) })) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" identifier = (call_expression "BIO_test_flags(bp,4)" identifier (argument_list "(bp,4)" ( identifier , number_literal )))) ;) (if_statement "if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }" if (parenthesized_expression "((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1))" ( (binary_expression "(iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" ( (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 == 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" identifier = (call_expression "BIO_get_retry_reason(bp)" identifier (argument_list "(bp)" ( identifier )))) , (binary_expression "iVar3 == 1" identifier == number_literal)) ))) )) (compound_statement "{\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }" { (expression_statement "BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n");" (call_expression "BIO_printf((BIO *)bio_s_out,"LOOKUP renego during accept\n")" identifier (argument_list "((BIO *)bio_s_out,"LOOKUP renego during accept\n")" ( (cast_expression "(BIO *)bio_s_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""LOOKUP renego during accept\n"" " string_content escape_sequence ") ))) ;) (expression_statement "SRP_user_pwd_free(srp_callback_parm.user);" (call_expression "SRP_user_pwd_free(srp_callback_parm.user)" identifier (argument_list "(srp_callback_parm.user)" ( (field_expression "srp_callback_parm.user" identifier . field_identifier) ))) ;) (expression_statement "srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);" (assignment_expression "srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login)" (field_expression "srp_callback_parm.user" identifier . field_identifier) = (cast_expression "(SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login)" ( (type_descriptor "SRP_user_pwd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login)" identifier (argument_list "(srp_callback_parm.vb,srp_callback_parm.login)" ( (field_expression "srp_callback_parm.vb" identifier . field_identifier) , (field_expression "srp_callback_parm.login" identifier . field_identifier) ))))) ;) (if_statement "if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }" if (parenthesized_expression "(srp_callback_parm.user == (SRP_user_pwd *)0x0)" ( (binary_expression "srp_callback_parm.user == (SRP_user_pwd *)0x0" (field_expression "srp_callback_parm.user" identifier . field_identifier) == (cast_expression "(SRP_user_pwd *)0x0" ( (type_descriptor "SRP_user_pwd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }" { (expression_statement "BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");" (call_expression "BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n")" identifier (argument_list "((BIO *)bio_s_out,"LOOKUP not successful\n")" ( (cast_expression "(BIO *)bio_s_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""LOOKUP not successful\n"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }" else (compound_statement "{\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }" { (expression_statement "BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);" (call_expression "BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info)" identifier (argument_list "((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info)" ( (cast_expression "(BIO *)bio_s_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""LOOKUP done %s\n"" " string_content escape_sequence ") , (field_expression "(srp_callback_parm.user)->info" (parenthesized_expression "(srp_callback_parm.user)" ( (field_expression "srp_callback_parm.user" identifier . field_identifier) )) -> field_identifier) ))) ;) }))) })) })) (expression_statement "BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n");" (call_expression "BIO_printf((BIO *)bio_err,"CONNECTION ESTABLISHED\n")" identifier (argument_list "((BIO *)bio_err,"CONNECTION ESTABLISHED\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""CONNECTION ESTABLISHED\n"" " string_content escape_sequence ") ))) ;) (expression_statement "print_ssl_summary((SSL *)ssl);" (call_expression "print_ssl_summary((SSL *)ssl)" identifier (argument_list "((SSL *)ssl)" ( (cast_expression "(SSL *)ssl" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (labeled_statement "LAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }" statement_identifier : (while_statement "while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }\n    }" { (expression_statement "uVar4 = BIO_gets(bp,(char *)out,0x3fff);" (assignment_expression "uVar4 = BIO_gets(bp,(char *)out,0x3fff)" identifier = (call_expression "BIO_gets(bp,(char *)out,0x3fff)" identifier (argument_list "(bp,(char *)out,0x3fff)" ( identifier , (cast_expression "(char *)out" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (if_statement "if (-1 < (int)uVar4) break;" if (parenthesized_expression "(-1 < (int)uVar4)" ( (binary_expression "-1 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }\n        goto LAB_00162069;\n      }" { (if_statement "if (s_quiet == 0) {\n          ERR_print_errors((BIO *)bio_err);\n        }" if (parenthesized_expression "(s_quiet == 0)" ( (binary_expression "s_quiet == 0" identifier == number_literal) )) (compound_statement "{\n          ERR_print_errors((BIO *)bio_err);\n        }" { (expression_statement "ERR_print_errors((BIO *)bio_err);" (call_expression "ERR_print_errors((BIO *)bio_err)" identifier (argument_list "((BIO *)bio_err)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (goto_statement "goto LAB_00162069;" goto statement_identifier ;) })) (expression_statement "BIO_printf((BIO *)bio_s_out,"read R BLOCK\n");" (call_expression "BIO_printf((BIO *)bio_s_out,"read R BLOCK\n")" identifier (argument_list "((BIO *)bio_s_out,"read R BLOCK\n")" ( (cast_expression "(BIO *)bio_s_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""read R BLOCK\n"" " string_content escape_sequence ") ))) ;) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" identifier = (call_expression "BIO_test_flags(bp,4)" identifier (argument_list "(bp,4)" ( identifier , number_literal )))) ;) (if_statement "if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }" if (parenthesized_expression "((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1))" ( (binary_expression "(iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" ( (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 != 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" identifier = (call_expression "BIO_get_retry_reason(bp)" identifier (argument_list "(bp)" ( identifier )))) , (binary_expression "iVar3 != 1" identifier != number_literal)) ))) )) (compound_statement "{\n        sleep(1);\n      }" { (expression_statement "sleep(1);" (call_expression "sleep(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }) (else_clause "else {\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }" else (compound_statement "{\n        BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(srp_callback_parm.user);\n        srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);\n        if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }\n      }" { (expression_statement "BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n");" (call_expression "BIO_printf((BIO *)bio_s_out,"LOOKUP renego during read\n")" identifier (argument_list "((BIO *)bio_s_out,"LOOKUP renego during read\n")" ( (cast_expression "(BIO *)bio_s_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""LOOKUP renego during read\n"" " string_content escape_sequence ") ))) ;) (expression_statement "SRP_user_pwd_free(srp_callback_parm.user);" (call_expression "SRP_user_pwd_free(srp_callback_parm.user)" identifier (argument_list "(srp_callback_parm.user)" ( (field_expression "srp_callback_parm.user" identifier . field_identifier) ))) ;) (expression_statement "srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login);" (assignment_expression "srp_callback_parm.user =\n             (SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login)" (field_expression "srp_callback_parm.user" identifier . field_identifier) = (cast_expression "(SRP_user_pwd *)SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login)" ( (type_descriptor "SRP_user_pwd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "SRP_VBASE_get1_by_user(srp_callback_parm.vb,srp_callback_parm.login)" identifier (argument_list "(srp_callback_parm.vb,srp_callback_parm.login)" ( (field_expression "srp_callback_parm.vb" identifier . field_identifier) , (field_expression "srp_callback_parm.login" identifier . field_identifier) ))))) ;) (if_statement "if (srp_callback_parm.user == (SRP_user_pwd *)0x0) {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }" if (parenthesized_expression "(srp_callback_parm.user == (SRP_user_pwd *)0x0)" ( (binary_expression "srp_callback_parm.user == (SRP_user_pwd *)0x0" (field_expression "srp_callback_parm.user" identifier . field_identifier) == (cast_expression "(SRP_user_pwd *)0x0" ( (type_descriptor "SRP_user_pwd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");\n        }" { (expression_statement "BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n");" (call_expression "BIO_printf((BIO *)bio_s_out,"LOOKUP not successful\n")" identifier (argument_list "((BIO *)bio_s_out,"LOOKUP not successful\n")" ( (cast_expression "(BIO *)bio_s_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""LOOKUP not successful\n"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }" else (compound_statement "{\n          BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);\n        }" { (expression_statement "BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);" (call_expression "BIO_printf((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info)" identifier (argument_list "((BIO *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info)" ( (cast_expression "(BIO *)bio_s_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""LOOKUP done %s\n"" " string_content escape_sequence ") , (field_expression "(srp_callback_parm.user)->info" (parenthesized_expression "(srp_callback_parm.user)" ( (field_expression "srp_callback_parm.user" identifier . field_identifier) )) -> field_identifier) ))) ;) }))) }))) }))) (if_statement "if (uVar4 != 0) {\n      pbVar8 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar8;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }\n      if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      pbVar8 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar8;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }\n      if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" { (expression_statement "pbVar8 = out + (long)(int)uVar4 + -1;" (assignment_expression "pbVar8 = out + (long)(int)uVar4 + -1" identifier = (binary_expression "out + (long)(int)uVar4 + -1" (binary_expression "out + (long)(int)uVar4" identifier + (cast_expression "(long)(int)uVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal)) ;) (expression_statement "bVar2 = *pbVar8;" (assignment_expression "bVar2 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (while_statement "while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }" while (parenthesized_expression "((bVar2 == 10 || (bVar2 == 0xd)))" ( (parenthesized_expression "(bVar2 == 10 || (bVar2 == 0xd))" ( (binary_expression "bVar2 == 10 || (bVar2 == 0xd)" (binary_expression "bVar2 == 10" identifier == number_literal) || (parenthesized_expression "(bVar2 == 0xd)" ( (binary_expression "bVar2 == 0xd" identifier == number_literal) ))) )) )) (compound_statement "{\n        pbVar8 = pbVar8 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar8;\n      }" { (expression_statement "pbVar8 = pbVar8 + -1;" (assignment_expression "pbVar8 = pbVar8 + -1" identifier = (binary_expression "pbVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (if_statement "if (uVar4 == 0) goto LAB_00162400;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00162400;" goto statement_identifier ;)) (expression_statement "bVar2 = *pbVar8;" (assignment_expression "bVar2 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) })) (if_statement "if (s_ign_eof == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" if (parenthesized_expression "(s_ign_eof == 0)" ( (binary_expression "s_ign_eof == 0" identifier == number_literal) )) (compound_statement "{\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" { (expression_statement "bVar12 = uVar4 < 5;" (assignment_expression "bVar12 = uVar4 < 5" identifier = (binary_expression "uVar4 < 5" identifier < number_literal)) ;) (expression_statement "bVar13 = uVar4 == 5;" (assignment_expression "bVar13 = uVar4 == 5" identifier = (binary_expression "uVar4 == 5" identifier == number_literal)) ;) (if_statement "if (bVar13) {\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          lVar7 = 5;\n          pbVar8 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" { (expression_statement "lVar7 = 5;" (assignment_expression "lVar7 = 5" identifier = number_literal) ;) (expression_statement "pbVar8 = out;" (assignment_expression "pbVar8 = out" identifier = identifier) ;) (expression_statement "pbVar11 = (byte *)"CLOSE";" (assignment_expression "pbVar11 = (byte *)"CLOSE"" identifier = (cast_expression "(byte *)"CLOSE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""CLOSE"" " string_content "))) ;) (goto_statement "goto code_r0x001623ec;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00162400;" goto statement_identifier ;) })) (expression_statement "BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");" (call_expression "BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n")" identifier (argument_list "((BIO *)bio_err,"CONNECTION CLOSED\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""CONNECTION CLOSED\n"" " string_content escape_sequence ") ))) ;) (labeled_statement "LAB_001622dc:\n    SSL_set_shutdown(ssl,3);" statement_identifier : (expression_statement "SSL_set_shutdown(ssl,3);" (call_expression "SSL_set_shutdown(ssl,3)" identifier (argument_list "(ssl,3)" ( identifier , number_literal ))) ;)) })) (labeled_statement "LAB_00162069:\n  CRYPTO_free(out);" statement_identifier : (expression_statement "CRYPTO_free(out);" (call_expression "CRYPTO_free(out)" identifier (argument_list "(out)" ( identifier ))) ;)) (expression_statement "BIO_free_all(bp);" (call_expression "BIO_free_all(bp)" identifier (argument_list "(bp)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) (while_statement "while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar8 < *pbVar11;\n    bVar13 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar8 < *pbVar11;\n    bVar13 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" { (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar8 < *pbVar11;" (assignment_expression "bVar12 = *pbVar8 < *pbVar11" identifier = (binary_expression "*pbVar8 < *pbVar11" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar8 == *pbVar11;" (assignment_expression "bVar13 = *pbVar8 == *pbVar11" identifier = (binary_expression "*pbVar8 == *pbVar11" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (!bVar13) break;" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x001623ec:\n    if (lVar7 == 0) break;" statement_identifier : (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n    BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" { (expression_statement "BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n");" (call_expression "BIO_printf((BIO *)bio_err,"CONNECTION CLOSED\n")" identifier (argument_list "((BIO *)bio_err,"CONNECTION CLOSED\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""CONNECTION CLOSED\n"" " string_content escape_sequence ") ))) ;) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;) })) (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (labeled_statement "LAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" statement_identifier : (expression_statement "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" (call_expression "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4)" identifier (argument_list "(out,(uchar *)0x0,(long)(int)uVar4)" ( identifier , (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(long)(int)uVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;)) (expression_statement "out[(int)uVar4] = 10;" (assignment_expression "out[(int)uVar4] = 10" (subscript_expression "out[(int)uVar4]" identifier [ (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;) (expression_statement "BIO_write(bp,out,uVar4 + 1);" (call_expression "BIO_write(bp,out,uVar4 + 1)" identifier (argument_list "(bp,out,uVar4 + 1)" ( identifier , identifier , (binary_expression "uVar4 + 1" identifier + number_literal) ))) ;) (while_statement "while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" while (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1)" ( (comma_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0)" identifier = (call_expression "BIO_ctrl(bp,0xb,0,(void *)0x0)" identifier (argument_list "(bp,0xb,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (compound_statement "{\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" { (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) goto LAB_001622dc;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0016238d;" goto statement_identifier ;) })))
(translation_unit "undefined8 FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)\n\n{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}\n\n" (function_definition "undefined8 FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)\n\n{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" type_identifier (function_declarator "FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)" identifier (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "uchar *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *out;" type_identifier (pointer_declarator "*out" * identifier) ;) (declaration "BIO_METHOD *pBVar5;" type_identifier (pointer_declarator "*pBVar5" * identifier) ;) (declaration "BIO *bp;" type_identifier (pointer_declarator "*bp" * identifier) ;) (declaration "BIO *pBVar6;" type_identifier (pointer_declarator "*pBVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "SSL *ssl;" type_identifier (pointer_declarator "*ssl" * identifier) ;) (declaration "BIO *pBVar8;" type_identifier (pointer_declarator "*pBVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "out = (byte *)FUN_0017b399(0x4000,"server rev buffer");" (assignment_expression "out = (byte *)FUN_0017b399(0x4000,"server rev buffer")" identifier = (cast_expression "(byte *)FUN_0017b399(0x4000,"server rev buffer")" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b399(0x4000,"server rev buffer")" identifier (argument_list "(0x4000,"server rev buffer")" ( number_literal , (string_literal ""server rev buffer"" " string_content ") ))))) ;) (expression_statement "pBVar5 = BIO_f_buffer();" (assignment_expression "pBVar5 = BIO_f_buffer()" identifier = (call_expression "BIO_f_buffer()" identifier (argument_list "()" ( )))) ;) (expression_statement "bp = BIO_new(pBVar5);" (assignment_expression "bp = BIO_new(pBVar5)" identifier = (call_expression "BIO_new(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (expression_statement "pBVar5 = BIO_f_ssl();" (assignment_expression "pBVar5 = BIO_f_ssl()" identifier = (call_expression "BIO_f_ssl()" identifier (argument_list "()" ( )))) ;) (expression_statement "pBVar6 = BIO_new(pBVar5);" (assignment_expression "pBVar6 = BIO_new(pBVar5)" identifier = (call_expression "BIO_new(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (if_statement "if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" if (parenthesized_expression "((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0))" ( (binary_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)" (parenthesized_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0))" ( (binary_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" (parenthesized_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0))" ( (binary_expression "(bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)" (parenthesized_expression "(bp != (BIO *)0x0)" ( (binary_expression "bp != (BIO *)0x0" identifier != (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pBVar6 != (BIO *)0x0)" ( (binary_expression "pBVar6 != (BIO *)0x0" identifier != (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" ( (comma_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0" (assignment_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1)" identifier = (call_expression "BIO_int_ctrl(bp,0x75,0x4000,1)" identifier (argument_list "(bp,0x75,0x4000,1)" ( identifier , number_literal , number_literal , number_literal )))) , (binary_expression "lVar7 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)" ( (comma_expression "ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0" (assignment_expression "ssl = SSL_new(DAT_001b8100)" identifier = (call_expression "SSL_new(DAT_001b8100)" identifier (argument_list "(DAT_001b8100)" ( identifier )))) , (binary_expression "ssl != (SSL *)0x0" identifier != (cast_expression "(SSL *)0x0" ( (type_descriptor "SSL *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" { (if_statement "if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }" if (parenthesized_expression "(DAT_001b80d8 != 0)" ( (binary_expression "DAT_001b80d8 != 0" identifier != number_literal) )) (compound_statement "{\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }" { (expression_statement "SSL_callback_ctrl(ssl,0x38,FUN_0018259e);" (call_expression "SSL_callback_ctrl(ssl,0x38,FUN_0018259e)" identifier (argument_list "(ssl,0x38,FUN_0018259e)" ( identifier , number_literal , identifier ))) ;) (expression_statement "SSL_ctrl(ssl,0x39,0,DAT_001b80e8);" (call_expression "SSL_ctrl(ssl,0x39,0,DAT_001b80e8)" identifier (argument_list "(ssl,0x39,0,DAT_001b80e8)" ( identifier , number_literal , number_literal , identifier ))) ;) })) (if_statement "if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }" if (parenthesized_expression "(param_4 != (uchar *)0x0)" ( (binary_expression "param_4 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }" { (expression_statement "lVar7 = -1;" (assignment_expression "lVar7 = -1" identifier = number_literal) ;) (expression_statement "puVar10 = param_4;" (assignment_expression "puVar10 = param_4" identifier = identifier) ;) (do_statement "do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');" do (compound_statement "{\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar1 = *puVar10;" (assignment_expression "uVar1 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "puVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "puVar10 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != '\0')" ( (binary_expression "uVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);" (assignment_expression "iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1)" identifier = (call_expression "SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1)" identifier (argument_list "(ssl,param_4,~(uint)lVar7 - 1)" ( identifier , identifier , (binary_expression "~(uint)lVar7 - 1" (unary_expression "~(uint)lVar7" ~ (cast_expression "(uint)lVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )))) ;) (if_statement "if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }" { (expression_statement "SSL_free(ssl);" (call_expression "SSL_free(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) (goto_statement "goto LAB_00162069;" goto statement_identifier ;) })) })) (expression_statement "pBVar8 = BIO_new_socket(param_1,0);" (assignment_expression "pBVar8 = BIO_new_socket(param_1,0)" identifier = (call_expression "BIO_new_socket(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (expression_statement "SSL_set_bio(ssl,pBVar8,pBVar8);" (call_expression "SSL_set_bio(ssl,pBVar8,pBVar8)" identifier (argument_list "(ssl,pBVar8,pBVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "SSL_set_accept_state(ssl);" (call_expression "SSL_set_accept_state(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (expression_statement "BIO_ctrl(pBVar6,0x6d,1,ssl);" (call_expression "BIO_ctrl(pBVar6,0x6d,1,ssl)" identifier (argument_list "(pBVar6,0x6d,1,ssl)" ( identifier , number_literal , number_literal , identifier ))) ;) (expression_statement "BIO_push(bp,pBVar6);" (call_expression "BIO_push(bp,pBVar6)" identifier (argument_list "(bp,pBVar6)" ( identifier , identifier ))) ;) (if_statement "if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }" if (parenthesized_expression "(DAT_001b80dc != 0)" ( (binary_expression "DAT_001b80dc != 0" identifier != number_literal) )) (compound_statement "{\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }" { (expression_statement "pBVar6 = SSL_get_rbio(ssl);" (assignment_expression "pBVar6 = SSL_get_rbio(ssl)" identifier = (call_expression "SSL_get_rbio(ssl)" identifier (argument_list "(ssl)" ( identifier )))) ;) (expression_statement "BIO_set_callback(pBVar6,FUN_00182141);" (call_expression "BIO_set_callback(pBVar6,FUN_00182141)" identifier (argument_list "(pBVar6,FUN_00182141)" ( identifier , identifier ))) ;) (expression_statement "pBVar6 = DAT_001b80e8;" (assignment_expression "pBVar6 = DAT_001b80e8" identifier = identifier) ;) (expression_statement "pBVar8 = SSL_get_rbio(ssl);" (assignment_expression "pBVar8 = SSL_get_rbio(ssl)" identifier = (call_expression "SSL_get_rbio(ssl)" identifier (argument_list "(ssl)" ( identifier )))) ;) (expression_statement "BIO_set_callback_arg(pBVar8,(char *)pBVar6);" (call_expression "BIO_set_callback_arg(pBVar8,(char *)pBVar6)" identifier (argument_list "(pBVar8,(char *)pBVar6)" ( identifier , (cast_expression "(char *)pBVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (if_statement "if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }" if (parenthesized_expression "(DAT_001b80d4 != 0)" ( (binary_expression "DAT_001b80d4 != 0" identifier != number_literal) )) (compound_statement "{\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }" { (expression_statement "SSL_set_msg_callback(ssl,FUN_00182311);" (call_expression "SSL_set_msg_callback(ssl,FUN_00182311)" identifier (argument_list "(ssl,FUN_00182311)" ( identifier , identifier ))) ;) (expression_statement "pBVar6 = DAT_001b80e0;" (assignment_expression "pBVar6 = DAT_001b80e0" identifier = identifier) ;) (if_statement "if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }" if (parenthesized_expression "(DAT_001b80e0 == (BIO *)0x0)" ( (binary_expression "DAT_001b80e0 == (BIO *)0x0" identifier == (cast_expression "(BIO *)0x0" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pBVar6 = DAT_001b80e8;\n      }" { (expression_statement "pBVar6 = DAT_001b80e8;" (assignment_expression "pBVar6 = DAT_001b80e8" identifier = identifier) ;) })) (expression_statement "SSL_ctrl(ssl,0x10,0,pBVar6);" (call_expression "SSL_ctrl(ssl,0x10,0,pBVar6)" identifier (argument_list "(ssl,0x10,0,pBVar6)" ( identifier , number_literal , number_literal , identifier ))) ;) })) (while_statement "while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" while (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1)" ( (comma_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0)" identifier = (call_expression "BIO_ctrl(bp,0x65,0,(void *)0x0)" identifier (argument_list "(bp,0x65,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (compound_statement "{\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" { (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }" { (expression_statement "BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");" (call_expression "BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION FAILURE\n")" ( identifier , (string_literal ""CONNECTION FAILURE\n"" " string_content escape_sequence ") ))) ;) (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;) })) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" identifier = (call_expression "BIO_test_flags(bp,4)" identifier (argument_list "(bp,4)" ( identifier , number_literal )))) ;) (if_statement "if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" if (parenthesized_expression "((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1))" ( (binary_expression "(iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" ( (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 == 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" identifier = (call_expression "BIO_get_retry_reason(bp)" identifier (argument_list "(bp)" ( identifier )))) , (binary_expression "iVar3 == 1" identifier == number_literal)) ))) )) (compound_statement "{\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP renego during accept\n")" ( identifier , (string_literal ""LOOKUP renego during accept\n"" " string_content escape_sequence ") ))) ;) (expression_statement "SRP_user_pwd_free(DAT_001b8080);" (call_expression "SRP_user_pwd_free(DAT_001b8080)" identifier (argument_list "(DAT_001b8080)" ( identifier ))) ;) (expression_statement "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);" (assignment_expression "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier = (call_expression "SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier (argument_list "(DAT_001b8078,DAT_001b8070)" ( identifier , identifier )))) ;) (if_statement "if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" if (parenthesized_expression "(DAT_001b8080 == 0)" ( (binary_expression "DAT_001b8080 == 0" identifier == number_literal) )) (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP not successful\n")" ( identifier , (string_literal ""LOOKUP not successful\n"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" else (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" identifier (argument_list "(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" ( identifier , (string_literal ""LOOKUP done %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(DAT_001b8080 + 0x28)" * (cast_expression "(undefined8 *)(DAT_001b8080 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001b8080 + 0x28)" ( (binary_expression "DAT_001b8080 + 0x28" identifier + number_literal) )))) ))) ;) }))) })) })) (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION ESTABLISHED\n")" ( identifier , (string_literal ""CONNECTION ESTABLISHED\n"" " string_content escape_sequence ") ))) ;) (expression_statement "FUN_00182e5b(ssl);" (call_expression "FUN_00182e5b(ssl)" identifier (argument_list "(ssl)" ( identifier ))) ;) (labeled_statement "LAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" statement_identifier : (while_statement "while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" { (expression_statement "uVar4 = BIO_gets(bp,(char *)out,0x3fff);" (assignment_expression "uVar4 = BIO_gets(bp,(char *)out,0x3fff)" identifier = (call_expression "BIO_gets(bp,(char *)out,0x3fff)" identifier (argument_list "(bp,(char *)out,0x3fff)" ( identifier , (cast_expression "(char *)out" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (if_statement "if (-1 < (int)uVar4) break;" if (parenthesized_expression "(-1 < (int)uVar4)" ( (binary_expression "-1 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }" { (if_statement "if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }" if (parenthesized_expression "(DAT_001b80d0 == 0)" ( (binary_expression "DAT_001b80d0 == 0" identifier == number_literal) )) (compound_statement "{\n          ERR_print_errors(DAT_001b76b0);\n        }" { (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) })) (goto_statement "goto LAB_00162069;" goto statement_identifier ;) })) (expression_statement "BIO_printf(DAT_001b80e8,"read R BLOCK\n");" (call_expression "BIO_printf(DAT_001b80e8,"read R BLOCK\n")" identifier (argument_list "(DAT_001b80e8,"read R BLOCK\n")" ( identifier , (string_literal ""read R BLOCK\n"" " string_content escape_sequence ") ))) ;) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" identifier = (call_expression "BIO_test_flags(bp,4)" identifier (argument_list "(bp,4)" ( identifier , number_literal )))) ;) (if_statement "if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" if (parenthesized_expression "((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1))" ( (binary_expression "(iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" ( (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 != 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" identifier = (call_expression "BIO_get_retry_reason(bp)" identifier (argument_list "(bp)" ( identifier )))) , (binary_expression "iVar3 != 1" identifier != number_literal)) ))) )) (compound_statement "{\n        sleep(1);\n      }" { (expression_statement "sleep(1);" (call_expression "sleep(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }) (else_clause "else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" else (compound_statement "{\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP renego during read\n")" ( identifier , (string_literal ""LOOKUP renego during read\n"" " string_content escape_sequence ") ))) ;) (expression_statement "SRP_user_pwd_free(DAT_001b8080);" (call_expression "SRP_user_pwd_free(DAT_001b8080)" identifier (argument_list "(DAT_001b8080)" ( identifier ))) ;) (expression_statement "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);" (assignment_expression "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier = (call_expression "SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" identifier (argument_list "(DAT_001b8078,DAT_001b8070)" ( identifier , identifier )))) ;) (if_statement "if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" if (parenthesized_expression "(DAT_001b8080 == 0)" ( (binary_expression "DAT_001b8080 == 0" identifier == number_literal) )) (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n")" identifier (argument_list "(DAT_001b80e8,"LOOKUP not successful\n")" ( identifier , (string_literal ""LOOKUP not successful\n"" " string_content escape_sequence ") ))) ;) }) (else_clause "else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" else (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" { (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" identifier (argument_list "(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" ( identifier , (string_literal ""LOOKUP done %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(DAT_001b8080 + 0x28)" * (cast_expression "(undefined8 *)(DAT_001b8080 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_001b8080 + 0x28)" ( (binary_expression "DAT_001b8080 + 0x28" identifier + number_literal) )))) ))) ;) }))) }))) }))) (if_statement "if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" { (expression_statement "pbVar9 = out + (long)(int)uVar4 + -1;" (assignment_expression "pbVar9 = out + (long)(int)uVar4 + -1" identifier = (binary_expression "out + (long)(int)uVar4 + -1" (binary_expression "out + (long)(int)uVar4" identifier + (cast_expression "(long)(int)uVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal)) ;) (expression_statement "bVar2 = *pbVar9;" (assignment_expression "bVar2 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (while_statement "while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }" while (parenthesized_expression "((bVar2 == 10 || (bVar2 == 0xd)))" ( (parenthesized_expression "(bVar2 == 10 || (bVar2 == 0xd))" ( (binary_expression "bVar2 == 10 || (bVar2 == 0xd)" (binary_expression "bVar2 == 10" identifier == number_literal) || (parenthesized_expression "(bVar2 == 0xd)" ( (binary_expression "bVar2 == 0xd" identifier == number_literal) ))) )) )) (compound_statement "{\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }" { (expression_statement "pbVar9 = pbVar9 + -1;" (assignment_expression "pbVar9 = pbVar9 + -1" identifier = (binary_expression "pbVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (if_statement "if (uVar4 == 0) goto LAB_00162400;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00162400;" goto statement_identifier ;)) (expression_statement "bVar2 = *pbVar9;" (assignment_expression "bVar2 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) })) (if_statement "if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" if (parenthesized_expression "(DAT_001b80cc == 0)" ( (binary_expression "DAT_001b80cc == 0" identifier == number_literal) )) (compound_statement "{\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" { (expression_statement "bVar12 = uVar4 < 5;" (assignment_expression "bVar12 = uVar4 < 5" identifier = (binary_expression "uVar4 < 5" identifier < number_literal)) ;) (expression_statement "bVar13 = uVar4 == 5;" (assignment_expression "bVar13 = uVar4 == 5" identifier = (binary_expression "uVar4 == 5" identifier == number_literal)) ;) (if_statement "if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" { (expression_statement "lVar7 = 5;" (assignment_expression "lVar7 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = out;" (assignment_expression "pbVar9 = out" identifier = identifier) ;) (expression_statement "pbVar11 = (byte *)"CLOSE";" (assignment_expression "pbVar11 = (byte *)"CLOSE"" identifier = (cast_expression "(byte *)"CLOSE"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""CLOSE"" " string_content "))) ;) (goto_statement "goto code_r0x001623ec;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00162400;" goto statement_identifier ;) })) (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION CLOSED\n")" ( identifier , (string_literal ""CONNECTION CLOSED\n"" " string_content escape_sequence ") ))) ;) (labeled_statement "LAB_001622dc:\n    SSL_set_shutdown(ssl,3);" statement_identifier : (expression_statement "SSL_set_shutdown(ssl,3);" (call_expression "SSL_set_shutdown(ssl,3)" identifier (argument_list "(ssl,3)" ( identifier , number_literal ))) ;)) })) (labeled_statement "LAB_00162069:\n  CRYPTO_free(out);" statement_identifier : (expression_statement "CRYPTO_free(out);" (call_expression "CRYPTO_free(out)" identifier (argument_list "(out)" ( identifier ))) ;)) (expression_statement "BIO_free_all(bp);" (call_expression "BIO_free_all(bp)" identifier (argument_list "(bp)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) (while_statement "while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" { (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar11;" (assignment_expression "bVar12 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar9 == *pbVar11;" (assignment_expression "bVar13 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (!bVar13) break;" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x001623ec:\n    if (lVar7 == 0) break;" statement_identifier : (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" { (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n")" identifier (argument_list "(DAT_001b76b0,"CONNECTION CLOSED\n")" ( identifier , (string_literal ""CONNECTION CLOSED\n"" " string_content escape_sequence ") ))) ;) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;) })) (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (labeled_statement "LAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" statement_identifier : (expression_statement "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" (call_expression "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4)" identifier (argument_list "(out,(uchar *)0x0,(long)(int)uVar4)" ( identifier , (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(long)(int)uVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;)) (expression_statement "out[(int)uVar4] = 10;" (assignment_expression "out[(int)uVar4] = 10" (subscript_expression "out[(int)uVar4]" identifier [ (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;) (expression_statement "BIO_write(bp,out,uVar4 + 1);" (call_expression "BIO_write(bp,out,uVar4 + 1)" identifier (argument_list "(bp,out,uVar4 + 1)" ( identifier , identifier , (binary_expression "uVar4 + 1" identifier + number_literal) ))) ;) (while_statement "while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" while (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1)" ( (comma_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0)" identifier = (call_expression "BIO_ctrl(bp,0xb,0,(void *)0x0)" identifier (argument_list "(bp,0xb,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (compound_statement "{\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" { (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" identifier = (call_expression "BIO_test_flags(bp,8)" identifier (argument_list "(bp,8)" ( identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) goto LAB_001622dc;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001622dc;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0016238d;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT ))) ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (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)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }))) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (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)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , (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 (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (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 = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (goto_statement goto statement_identifier ;) })) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;)) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined8 FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)\n\n{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" (type_identifier "undefined8") (function_declarator "FUN_00161ffb(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)" (identifier "FUN_00161ffb") (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "uchar *param_4" (type_identifier "uchar") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  uchar uVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  byte *out;\n  BIO_METHOD *pBVar5;\n  BIO *bp;\n  BIO *pBVar6;\n  long lVar7;\n  SSL *ssl;\n  BIO *pBVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");\n  pBVar5 = BIO_f_buffer();\n  bp = BIO_new(pBVar5);\n  pBVar5 = BIO_f_ssl();\n  pBVar6 = BIO_new(pBVar5);\n  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }\nLAB_00162069:\n  CRYPTO_free(out);\n  BIO_free_all(bp);\n  return 1;\n  while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }\n  if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }\n  uVar4 = 5;\nLAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);\n  out[(int)uVar4] = 10;\n  BIO_write(bp,out,uVar4 + 1);\n  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }\n  goto LAB_0016238d;\n}" ({ "{") (declaration "uchar uVar1;" (type_identifier "uchar") (identifier "uVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte *out;" (type_identifier "byte") (pointer_declarator "*out" (* "*") (identifier "out")) (; ";")) (declaration "BIO_METHOD *pBVar5;" (type_identifier "BIO_METHOD") (pointer_declarator "*pBVar5" (* "*") (identifier "pBVar5")) (; ";")) (declaration "BIO *bp;" (type_identifier "BIO") (pointer_declarator "*bp" (* "*") (identifier "bp")) (; ";")) (declaration "BIO *pBVar6;" (type_identifier "BIO") (pointer_declarator "*pBVar6" (* "*") (identifier "pBVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "SSL *ssl;" (type_identifier "SSL") (pointer_declarator "*ssl" (* "*") (identifier "ssl")) (; ";")) (declaration "BIO *pBVar8;" (type_identifier "BIO") (pointer_declarator "*pBVar8" (* "*") (identifier "pBVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "uchar *puVar10;" (type_identifier "uchar") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" (identifier "bVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "out = (byte *)FUN_0017b399(0x4000,"server rev buffer");" (assignment_expression "out = (byte *)FUN_0017b399(0x4000,"server rev buffer")" (identifier "out") (= "=") (cast_expression "(byte *)FUN_0017b399(0x4000,"server rev buffer")" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b399(0x4000,"server rev buffer")" (identifier "FUN_0017b399") (argument_list "(0x4000,"server rev buffer")" (( "(") (number_literal "0x4000") (, ",") (string_literal ""server rev buffer"" (" """) (string_content "server rev buffer") (" """)) () ")"))))) (; ";")) (expression_statement "pBVar5 = BIO_f_buffer();" (assignment_expression "pBVar5 = BIO_f_buffer()" (identifier "pBVar5") (= "=") (call_expression "BIO_f_buffer()" (identifier "BIO_f_buffer") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bp = BIO_new(pBVar5);" (assignment_expression "bp = BIO_new(pBVar5)" (identifier "bp") (= "=") (call_expression "BIO_new(pBVar5)" (identifier "BIO_new") (argument_list "(pBVar5)" (( "(") (identifier "pBVar5") () ")")))) (; ";")) (expression_statement "pBVar5 = BIO_f_ssl();" (assignment_expression "pBVar5 = BIO_f_ssl()" (identifier "pBVar5") (= "=") (call_expression "BIO_f_ssl()" (identifier "BIO_f_ssl") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pBVar6 = BIO_new(pBVar5);" (assignment_expression "pBVar6 = BIO_new(pBVar5)" (identifier "pBVar6") (= "=") (call_expression "BIO_new(pBVar5)" (identifier "BIO_new") (argument_list "(pBVar5)" (( "(") (identifier "pBVar5") () ")")))) (; ";")) (if_statement "if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" (if "if") (parenthesized_expression "((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0))" (( "(") (binary_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&\n     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)" (parenthesized_expression "(((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0))" (( "(") (binary_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&\n      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" (parenthesized_expression "((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0))" (( "(") (binary_expression "(bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)" (parenthesized_expression "(bp != (BIO *)0x0)" (( "(") (binary_expression "bp != (BIO *)0x0" (identifier "bp") (!= "!=") (cast_expression "(BIO *)0x0" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pBVar6 != (BIO *)0x0)" (( "(") (binary_expression "pBVar6 != (BIO *)0x0" (identifier "pBVar6") (!= "!=") (cast_expression "(BIO *)0x0" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)" (( "(") (comma_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0" (assignment_expression "lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1)" (identifier "lVar7") (= "=") (call_expression "BIO_int_ctrl(bp,0x75,0x4000,1)" (identifier "BIO_int_ctrl") (argument_list "(bp,0x75,0x4000,1)" (( "(") (identifier "bp") (, ",") (number_literal "0x75") (, ",") (number_literal "0x4000") (, ",") (number_literal "1") () ")")))) (, ",") (binary_expression "lVar7 != 0" (identifier "lVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)" (( "(") (comma_expression "ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0" (assignment_expression "ssl = SSL_new(DAT_001b8100)" (identifier "ssl") (= "=") (call_expression "SSL_new(DAT_001b8100)" (identifier "SSL_new") (argument_list "(DAT_001b8100)" (( "(") (identifier "DAT_001b8100") () ")")))) (, ",") (binary_expression "ssl != (SSL *)0x0" (identifier "ssl") (!= "!=") (cast_expression "(SSL *)0x0" (( "(") (type_descriptor "SSL *" (type_identifier "SSL") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }\n    if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }\n    pBVar8 = BIO_new_socket(param_1,0);\n    SSL_set_bio(ssl,pBVar8,pBVar8);\n    SSL_set_accept_state(ssl);\n    BIO_ctrl(pBVar6,0x6d,1,ssl);\n    BIO_push(bp,pBVar6);\n    if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }\n    if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }\n    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");\n    FUN_00182e5b(ssl);\nLAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }\n    if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\nLAB_001622dc:\n    SSL_set_shutdown(ssl,3);\n  }" ({ "{") (if_statement "if (DAT_001b80d8 != 0) {\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }" (if "if") (parenthesized_expression "(DAT_001b80d8 != 0)" (( "(") (binary_expression "DAT_001b80d8 != 0" (identifier "DAT_001b80d8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);\n      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);\n    }" ({ "{") (expression_statement "SSL_callback_ctrl(ssl,0x38,FUN_0018259e);" (call_expression "SSL_callback_ctrl(ssl,0x38,FUN_0018259e)" (identifier "SSL_callback_ctrl") (argument_list "(ssl,0x38,FUN_0018259e)" (( "(") (identifier "ssl") (, ",") (number_literal "0x38") (, ",") (identifier "FUN_0018259e") () ")"))) (; ";")) (expression_statement "SSL_ctrl(ssl,0x39,0,DAT_001b80e8);" (call_expression "SSL_ctrl(ssl,0x39,0,DAT_001b80e8)" (identifier "SSL_ctrl") (argument_list "(ssl,0x39,0,DAT_001b80e8)" (( "(") (identifier "ssl") (, ",") (number_literal "0x39") (, ",") (number_literal "0") (, ",") (identifier "DAT_001b80e8") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 != (uchar *)0x0) {\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }" (if "if") (parenthesized_expression "(param_4 != (uchar *)0x0)" (( "(") (binary_expression "param_4 != (uchar *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(uchar *)0x0" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      lVar7 = -1;\n      puVar10 = param_4;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');\n      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);\n      if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }\n    }" ({ "{") (expression_statement "lVar7 = -1;" (assignment_expression "lVar7 = -1" (identifier "lVar7") (= "=") (number_literal "-1")) (; ";")) (expression_statement "puVar10 = param_4;" (assignment_expression "puVar10 = param_4" (identifier "puVar10") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      } while (uVar1 != '\0');" (do "do") (compound_statement "{\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        uVar1 = *puVar10;\n        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar1 = *puVar10;" (assignment_expression "uVar1 = *puVar10" (identifier "uVar1") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (ulong)bVar14 * -2 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + (ulong)bVar14 * -2 + 1" (binary_expression "puVar10 + (ulong)bVar14 * -2" (identifier "puVar10") (+ "+") (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 != '\0')" (( "(") (binary_expression "uVar1 != '\0'" (identifier "uVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);" (assignment_expression "iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1)" (identifier "iVar3") (= "=") (call_expression "SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1)" (identifier "SSL_set_session_id_context") (argument_list "(ssl,param_4,~(uint)lVar7 - 1)" (( "(") (identifier "ssl") (, ",") (identifier "param_4") (, ",") (binary_expression "~(uint)lVar7 - 1" (unary_expression "~(uint)lVar7" (~ "~") (cast_expression "(uint)lVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar7"))) (- "-") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        SSL_free(ssl);\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_00162069;\n      }" ({ "{") (expression_statement "SSL_free(ssl);" (call_expression "SSL_free(ssl)" (identifier "SSL_free") (argument_list "(ssl)" (( "(") (identifier "ssl") () ")"))) (; ";")) (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" (identifier "ERR_print_errors") (argument_list "(DAT_001b76b0)" (( "(") (identifier "DAT_001b76b0") () ")"))) (; ";")) (goto_statement "goto LAB_00162069;" (goto "goto") (statement_identifier "LAB_00162069") (; ";")) (} "}"))) (} "}"))) (expression_statement "pBVar8 = BIO_new_socket(param_1,0);" (assignment_expression "pBVar8 = BIO_new_socket(param_1,0)" (identifier "pBVar8") (= "=") (call_expression "BIO_new_socket(param_1,0)" (identifier "BIO_new_socket") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "SSL_set_bio(ssl,pBVar8,pBVar8);" (call_expression "SSL_set_bio(ssl,pBVar8,pBVar8)" (identifier "SSL_set_bio") (argument_list "(ssl,pBVar8,pBVar8)" (( "(") (identifier "ssl") (, ",") (identifier "pBVar8") (, ",") (identifier "pBVar8") () ")"))) (; ";")) (expression_statement "SSL_set_accept_state(ssl);" (call_expression "SSL_set_accept_state(ssl)" (identifier "SSL_set_accept_state") (argument_list "(ssl)" (( "(") (identifier "ssl") () ")"))) (; ";")) (expression_statement "BIO_ctrl(pBVar6,0x6d,1,ssl);" (call_expression "BIO_ctrl(pBVar6,0x6d,1,ssl)" (identifier "BIO_ctrl") (argument_list "(pBVar6,0x6d,1,ssl)" (( "(") (identifier "pBVar6") (, ",") (number_literal "0x6d") (, ",") (number_literal "1") (, ",") (identifier "ssl") () ")"))) (; ";")) (expression_statement "BIO_push(bp,pBVar6);" (call_expression "BIO_push(bp,pBVar6)" (identifier "BIO_push") (argument_list "(bp,pBVar6)" (( "(") (identifier "bp") (, ",") (identifier "pBVar6") () ")"))) (; ";")) (if_statement "if (DAT_001b80dc != 0) {\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }" (if "if") (parenthesized_expression "(DAT_001b80dc != 0)" (( "(") (binary_expression "DAT_001b80dc != 0" (identifier "DAT_001b80dc") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pBVar6 = SSL_get_rbio(ssl);\n      BIO_set_callback(pBVar6,FUN_00182141);\n      pBVar6 = DAT_001b80e8;\n      pBVar8 = SSL_get_rbio(ssl);\n      BIO_set_callback_arg(pBVar8,(char *)pBVar6);\n    }" ({ "{") (expression_statement "pBVar6 = SSL_get_rbio(ssl);" (assignment_expression "pBVar6 = SSL_get_rbio(ssl)" (identifier "pBVar6") (= "=") (call_expression "SSL_get_rbio(ssl)" (identifier "SSL_get_rbio") (argument_list "(ssl)" (( "(") (identifier "ssl") () ")")))) (; ";")) (expression_statement "BIO_set_callback(pBVar6,FUN_00182141);" (call_expression "BIO_set_callback(pBVar6,FUN_00182141)" (identifier "BIO_set_callback") (argument_list "(pBVar6,FUN_00182141)" (( "(") (identifier "pBVar6") (, ",") (identifier "FUN_00182141") () ")"))) (; ";")) (expression_statement "pBVar6 = DAT_001b80e8;" (assignment_expression "pBVar6 = DAT_001b80e8" (identifier "pBVar6") (= "=") (identifier "DAT_001b80e8")) (; ";")) (expression_statement "pBVar8 = SSL_get_rbio(ssl);" (assignment_expression "pBVar8 = SSL_get_rbio(ssl)" (identifier "pBVar8") (= "=") (call_expression "SSL_get_rbio(ssl)" (identifier "SSL_get_rbio") (argument_list "(ssl)" (( "(") (identifier "ssl") () ")")))) (; ";")) (expression_statement "BIO_set_callback_arg(pBVar8,(char *)pBVar6);" (call_expression "BIO_set_callback_arg(pBVar8,(char *)pBVar6)" (identifier "BIO_set_callback_arg") (argument_list "(pBVar8,(char *)pBVar6)" (( "(") (identifier "pBVar8") (, ",") (cast_expression "(char *)pBVar6" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pBVar6")) () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_001b80d4 != 0) {\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }" (if "if") (parenthesized_expression "(DAT_001b80d4 != 0)" (( "(") (binary_expression "DAT_001b80d4 != 0" (identifier "DAT_001b80d4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      SSL_set_msg_callback(ssl,FUN_00182311);\n      pBVar6 = DAT_001b80e0;\n      if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }\n      SSL_ctrl(ssl,0x10,0,pBVar6);\n    }" ({ "{") (expression_statement "SSL_set_msg_callback(ssl,FUN_00182311);" (call_expression "SSL_set_msg_callback(ssl,FUN_00182311)" (identifier "SSL_set_msg_callback") (argument_list "(ssl,FUN_00182311)" (( "(") (identifier "ssl") (, ",") (identifier "FUN_00182311") () ")"))) (; ";")) (expression_statement "pBVar6 = DAT_001b80e0;" (assignment_expression "pBVar6 = DAT_001b80e0" (identifier "pBVar6") (= "=") (identifier "DAT_001b80e0")) (; ";")) (if_statement "if (DAT_001b80e0 == (BIO *)0x0) {\n        pBVar6 = DAT_001b80e8;\n      }" (if "if") (parenthesized_expression "(DAT_001b80e0 == (BIO *)0x0)" (( "(") (binary_expression "DAT_001b80e0 == (BIO *)0x0" (identifier "DAT_001b80e0") (== "==") (cast_expression "(BIO *)0x0" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pBVar6 = DAT_001b80e8;\n      }" ({ "{") (expression_statement "pBVar6 = DAT_001b80e8;" (assignment_expression "pBVar6 = DAT_001b80e8" (identifier "pBVar6") (= "=") (identifier "DAT_001b80e8")) (; ";")) (} "}"))) (expression_statement "SSL_ctrl(ssl,0x10,0,pBVar6);" (call_expression "SSL_ctrl(ssl,0x10,0,pBVar6)" (identifier "SSL_ctrl") (argument_list "(ssl,0x10,0,pBVar6)" (( "(") (identifier "ssl") (, ",") (number_literal "0x10") (, ",") (number_literal "0") (, ",") (identifier "pBVar6") () ")"))) (; ";")) (} "}"))) (while_statement "while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" (while "while") (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1)" (( "(") (comma_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0)" (identifier "lVar7") (= "=") (call_expression "BIO_ctrl(bp,0x65,0,(void *)0x0)" (identifier "BIO_ctrl") (argument_list "(bp,0x65,0,(void *)0x0)" (( "(") (identifier "bp") (, ",") (number_literal "0x65") (, ",") (number_literal "0") (, ",") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")")))) (, ",") (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")) (< "<") (number_literal "1"))) () ")")) (compound_statement "{\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" ({ "{") (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" (identifier "iVar3") (= "=") (call_expression "BIO_test_flags(bp,8)" (identifier "BIO_test_flags") (argument_list "(bp,8)" (( "(") (identifier "bp") (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");\n        ERR_print_errors(DAT_001b76b0);\n        goto LAB_001622dc;\n      }" ({ "{") (expression_statement "BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");" (call_expression "BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n")" (identifier "BIO_puts") (argument_list "(DAT_001b76b0,"CONNECTION FAILURE\n")" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""CONNECTION FAILURE\n"" (" """) (string_content "CONNECTION FAILURE") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" (identifier "ERR_print_errors") (argument_list "(DAT_001b76b0)" (( "(") (identifier "DAT_001b76b0") () ")"))) (; ";")) (goto_statement "goto LAB_001622dc;" (goto "goto") (statement_identifier "LAB_001622dc") (; ";")) (} "}"))) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" (identifier "iVar3") (= "=") (call_expression "BIO_test_flags(bp,4)" (identifier "BIO_test_flags") (argument_list "(bp,4)" (( "(") (identifier "bp") (, ",") (number_literal "4") () ")")))) (; ";")) (if_statement "if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" (if "if") (parenthesized_expression "((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1))" (( "(") (binary_expression "(iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)" (( "(") (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 == 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" (identifier "iVar3") (= "=") (call_expression "BIO_get_retry_reason(bp)" (identifier "BIO_get_retry_reason") (argument_list "(bp)" (( "(") (identifier "bp") () ")")))) (, ",") (binary_expression "iVar3 == 1" (identifier "iVar3") (== "==") (number_literal "1"))) () ")"))) () ")")) (compound_statement "{\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" ({ "{") (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n")" (identifier "BIO_printf") (argument_list "(DAT_001b80e8,"LOOKUP renego during accept\n")" (( "(") (identifier "DAT_001b80e8") (, ",") (string_literal ""LOOKUP renego during accept\n"" (" """) (string_content "LOOKUP renego during accept") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (expression_statement "SRP_user_pwd_free(DAT_001b8080);" (call_expression "SRP_user_pwd_free(DAT_001b8080)" (identifier "SRP_user_pwd_free") (argument_list "(DAT_001b8080)" (( "(") (identifier "DAT_001b8080") () ")"))) (; ";")) (expression_statement "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);" (assignment_expression "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" (identifier "DAT_001b8080") (= "=") (call_expression "SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" (identifier "SRP_VBASE_get1_by_user") (argument_list "(DAT_001b8078,DAT_001b8070)" (( "(") (identifier "DAT_001b8078") (, ",") (identifier "DAT_001b8070") () ")")))) (; ";")) (if_statement "if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" (if "if") (parenthesized_expression "(DAT_001b8080 == 0)" (( "(") (binary_expression "DAT_001b8080 == 0" (identifier "DAT_001b8080") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }" ({ "{") (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n")" (identifier "BIO_printf") (argument_list "(DAT_001b80e8,"LOOKUP not successful\n")" (( "(") (identifier "DAT_001b80e8") (, ",") (string_literal ""LOOKUP not successful\n"" (" """) (string_content "LOOKUP not successful") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" (else "else") (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" ({ "{") (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" (identifier "BIO_printf") (argument_list "(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" (( "(") (identifier "DAT_001b80e8") (, ",") (string_literal ""LOOKUP done %s\n"" (" """) (string_content "LOOKUP done %s") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined8 *)(DAT_001b8080 + 0x28)" (* "*") (cast_expression "(undefined8 *)(DAT_001b8080 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001b8080 + 0x28)" (( "(") (binary_expression "DAT_001b8080 + 0x28" (identifier "DAT_001b8080") (+ "+") (number_literal "0x28")) () ")")))) () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n")" (identifier "BIO_printf") (argument_list "(DAT_001b76b0,"CONNECTION ESTABLISHED\n")" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""CONNECTION ESTABLISHED\n"" (" """) (string_content "CONNECTION ESTABLISHED") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (expression_statement "FUN_00182e5b(ssl);" (call_expression "FUN_00182e5b(ssl)" (identifier "FUN_00182e5b") (argument_list "(ssl)" (( "(") (identifier "ssl") () ")"))) (; ";")) (labeled_statement "LAB_0016238d:\n    while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" (statement_identifier "LAB_0016238d") (: ":") (while_statement "while( true ) {\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar4 = BIO_gets(bp,(char *)out,0x3fff);\n      if (-1 < (int)uVar4) break;\n      iVar3 = BIO_test_flags(bp,8);\n      if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }\n      BIO_printf(DAT_001b80e8,"read R BLOCK\n");\n      iVar3 = BIO_test_flags(bp,4);\n      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }\n    }" ({ "{") (expression_statement "uVar4 = BIO_gets(bp,(char *)out,0x3fff);" (assignment_expression "uVar4 = BIO_gets(bp,(char *)out,0x3fff)" (identifier "uVar4") (= "=") (call_expression "BIO_gets(bp,(char *)out,0x3fff)" (identifier "BIO_gets") (argument_list "(bp,(char *)out,0x3fff)" (( "(") (identifier "bp") (, ",") (cast_expression "(char *)out" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "out")) (, ",") (number_literal "0x3fff") () ")")))) (; ";")) (if_statement "if (-1 < (int)uVar4) break;" (if "if") (parenthesized_expression "(-1 < (int)uVar4)" (( "(") (binary_expression "-1 < (int)uVar4" (number_literal "-1") (< "<") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" (identifier "iVar3") (= "=") (call_expression "BIO_test_flags(bp,8)" (identifier "BIO_test_flags") (argument_list "(bp,8)" (( "(") (identifier "bp") (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }\n        goto LAB_00162069;\n      }" ({ "{") (if_statement "if (DAT_001b80d0 == 0) {\n          ERR_print_errors(DAT_001b76b0);\n        }" (if "if") (parenthesized_expression "(DAT_001b80d0 == 0)" (( "(") (binary_expression "DAT_001b80d0 == 0" (identifier "DAT_001b80d0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          ERR_print_errors(DAT_001b76b0);\n        }" ({ "{") (expression_statement "ERR_print_errors(DAT_001b76b0);" (call_expression "ERR_print_errors(DAT_001b76b0)" (identifier "ERR_print_errors") (argument_list "(DAT_001b76b0)" (( "(") (identifier "DAT_001b76b0") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00162069;" (goto "goto") (statement_identifier "LAB_00162069") (; ";")) (} "}"))) (expression_statement "BIO_printf(DAT_001b80e8,"read R BLOCK\n");" (call_expression "BIO_printf(DAT_001b80e8,"read R BLOCK\n")" (identifier "BIO_printf") (argument_list "(DAT_001b80e8,"read R BLOCK\n")" (( "(") (identifier "DAT_001b80e8") (, ",") (string_literal ""read R BLOCK\n"" (" """) (string_content "read R BLOCK") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (expression_statement "iVar3 = BIO_test_flags(bp,4);" (assignment_expression "iVar3 = BIO_test_flags(bp,4)" (identifier "iVar3") (= "=") (call_expression "BIO_test_flags(bp,4)" (identifier "BIO_test_flags") (argument_list "(bp,4)" (( "(") (identifier "bp") (, ",") (number_literal "4") () ")")))) (; ";")) (if_statement "if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {\n        sleep(1);\n      }\n      else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" (if "if") (parenthesized_expression "((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1))" (( "(") (binary_expression "(iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)" (( "(") (comma_expression "iVar3 = BIO_get_retry_reason(bp), iVar3 != 1" (assignment_expression "iVar3 = BIO_get_retry_reason(bp)" (identifier "iVar3") (= "=") (call_expression "BIO_get_retry_reason(bp)" (identifier "BIO_get_retry_reason") (argument_list "(bp)" (( "(") (identifier "bp") () ")")))) (, ",") (binary_expression "iVar3 != 1" (identifier "iVar3") (!= "!=") (number_literal "1"))) () ")"))) () ")")) (compound_statement "{\n        sleep(1);\n      }" ({ "{") (expression_statement "sleep(1);" (call_expression "sleep(1)" (identifier "sleep") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" (else "else") (compound_statement "{\n        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");\n        SRP_user_pwd_free(DAT_001b8080);\n        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);\n        if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }\n      }" ({ "{") (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n")" (identifier "BIO_printf") (argument_list "(DAT_001b80e8,"LOOKUP renego during read\n")" (( "(") (identifier "DAT_001b80e8") (, ",") (string_literal ""LOOKUP renego during read\n"" (" """) (string_content "LOOKUP renego during read") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (expression_statement "SRP_user_pwd_free(DAT_001b8080);" (call_expression "SRP_user_pwd_free(DAT_001b8080)" (identifier "SRP_user_pwd_free") (argument_list "(DAT_001b8080)" (( "(") (identifier "DAT_001b8080") () ")"))) (; ";")) (expression_statement "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);" (assignment_expression "DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" (identifier "DAT_001b8080") (= "=") (call_expression "SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070)" (identifier "SRP_VBASE_get1_by_user") (argument_list "(DAT_001b8078,DAT_001b8070)" (( "(") (identifier "DAT_001b8078") (, ",") (identifier "DAT_001b8070") () ")")))) (; ";")) (if_statement "if (DAT_001b8080 == 0) {\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }\n        else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" (if "if") (parenthesized_expression "(DAT_001b8080 == 0)" (( "(") (binary_expression "DAT_001b8080 == 0" (identifier "DAT_001b8080") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");\n        }" ({ "{") (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP not successful\n")" (identifier "BIO_printf") (argument_list "(DAT_001b80e8,"LOOKUP not successful\n")" (( "(") (identifier "DAT_001b80e8") (, ",") (string_literal ""LOOKUP not successful\n"" (" """) (string_content "LOOKUP not successful") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" (else "else") (compound_statement "{\n          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));\n        }" ({ "{") (expression_statement "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));" (call_expression "BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" (identifier "BIO_printf") (argument_list "(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28))" (( "(") (identifier "DAT_001b80e8") (, ",") (string_literal ""LOOKUP done %s\n"" (" """) (string_content "LOOKUP done %s") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined8 *)(DAT_001b8080 + 0x28)" (* "*") (cast_expression "(undefined8 *)(DAT_001b8080 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_001b8080 + 0x28)" (( "(") (binary_expression "DAT_001b8080 + 0x28" (identifier "DAT_001b8080") (+ "+") (number_literal "0x28")) () ")")))) () ")"))) (; ";")) (} "}")))) (} "}")))) (} "}")))) (if_statement "if (uVar4 != 0) {\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pbVar9 = out + (long)(int)uVar4 + -1;\n      bVar2 = *pbVar9;\n      while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }\n      if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }\n      goto LAB_00162400;\n    }" ({ "{") (expression_statement "pbVar9 = out + (long)(int)uVar4 + -1;" (assignment_expression "pbVar9 = out + (long)(int)uVar4 + -1" (identifier "pbVar9") (= "=") (binary_expression "out + (long)(int)uVar4 + -1" (binary_expression "out + (long)(int)uVar4" (identifier "out") (+ "+") (cast_expression "(long)(int)uVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar2 = *pbVar9;" (assignment_expression "bVar2 = *pbVar9" (identifier "bVar2") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";")) (while_statement "while ((bVar2 == 10 || (bVar2 == 0xd))) {\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }" (while "while") (parenthesized_expression "((bVar2 == 10 || (bVar2 == 0xd)))" (( "(") (parenthesized_expression "(bVar2 == 10 || (bVar2 == 0xd))" (( "(") (binary_expression "bVar2 == 10 || (bVar2 == 0xd)" (binary_expression "bVar2 == 10" (identifier "bVar2") (== "==") (number_literal "10")) (|| "||") (parenthesized_expression "(bVar2 == 0xd)" (( "(") (binary_expression "bVar2 == 0xd" (identifier "bVar2") (== "==") (number_literal "0xd")) () ")"))) () ")")) () ")")) (compound_statement "{\n        pbVar9 = pbVar9 + -1;\n        uVar4 = uVar4 - 1;\n        if (uVar4 == 0) goto LAB_00162400;\n        bVar2 = *pbVar9;\n      }" ({ "{") (expression_statement "pbVar9 = pbVar9 + -1;" (assignment_expression "pbVar9 = pbVar9 + -1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + -1" (identifier "pbVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar4 == 0) goto LAB_00162400;" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00162400;" (goto "goto") (statement_identifier "LAB_00162400") (; ";"))) (expression_statement "bVar2 = *pbVar9;" (assignment_expression "bVar2 = *pbVar9" (identifier "bVar2") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";")) (} "}"))) (if_statement "if (DAT_001b80cc == 0) {\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" (if "if") (parenthesized_expression "(DAT_001b80cc == 0)" (( "(") (binary_expression "DAT_001b80cc == 0" (identifier "DAT_001b80cc") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        bVar12 = uVar4 < 5;\n        bVar13 = uVar4 == 5;\n        if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }\n      }" ({ "{") (expression_statement "bVar12 = uVar4 < 5;" (assignment_expression "bVar12 = uVar4 < 5" (identifier "bVar12") (= "=") (binary_expression "uVar4 < 5" (identifier "uVar4") (< "<") (number_literal "5"))) (; ";")) (expression_statement "bVar13 = uVar4 == 5;" (assignment_expression "bVar13 = uVar4 == 5" (identifier "bVar13") (= "=") (binary_expression "uVar4 == 5" (identifier "uVar4") (== "==") (number_literal "5"))) (; ";")) (if_statement "if (bVar13) {\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n          lVar7 = 5;\n          pbVar9 = out;\n          pbVar11 = (byte *)"CLOSE";\n          goto code_r0x001623ec;\n        }" ({ "{") (expression_statement "lVar7 = 5;" (assignment_expression "lVar7 = 5" (identifier "lVar7") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar9 = out;" (assignment_expression "pbVar9 = out" (identifier "pbVar9") (= "=") (identifier "out")) (; ";")) (expression_statement "pbVar11 = (byte *)"CLOSE";" (assignment_expression "pbVar11 = (byte *)"CLOSE"" (identifier "pbVar11") (= "=") (cast_expression "(byte *)"CLOSE"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""CLOSE"" (" """) (string_content "CLOSE") (" """)))) (; ";")) (goto_statement "goto code_r0x001623ec;" (goto "goto") (statement_identifier "code_r0x001623ec") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00162400;" (goto "goto") (statement_identifier "LAB_00162400") (; ";")) (} "}"))) (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n")" (identifier "BIO_printf") (argument_list "(DAT_001b76b0,"CONNECTION CLOSED\n")" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""CONNECTION CLOSED\n"" (" """) (string_content "CONNECTION CLOSED") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (labeled_statement "LAB_001622dc:\n    SSL_set_shutdown(ssl,3);" (statement_identifier "LAB_001622dc") (: ":") (expression_statement "SSL_set_shutdown(ssl,3);" (call_expression "SSL_set_shutdown(ssl,3)" (identifier "SSL_set_shutdown") (argument_list "(ssl,3)" (( "(") (identifier "ssl") (, ",") (number_literal "3") () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_00162069:\n  CRYPTO_free(out);" (statement_identifier "LAB_00162069") (: ":") (expression_statement "CRYPTO_free(out);" (call_expression "CRYPTO_free(out)" (identifier "CRYPTO_free") (argument_list "(out)" (( "(") (identifier "out") () ")"))) (; ";"))) (expression_statement "BIO_free_all(bp);" (call_expression "BIO_free_all(bp)" (identifier "BIO_free_all") (argument_list "(bp)" (( "(") (identifier "bp") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (while_statement "while( true ) {\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    lVar7 = lVar7 + -1;\n    bVar12 = *pbVar9 < *pbVar11;\n    bVar13 = *pbVar9 == *pbVar11;\n    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    if (!bVar13) break;\ncode_r0x001623ec:\n    if (lVar7 == 0) break;\n  }" ({ "{") (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar12 = *pbVar9 < *pbVar11;" (assignment_expression "bVar12 = *pbVar9 < *pbVar11" (identifier "bVar12") (= "=") (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar13 = *pbVar9 == *pbVar11;" (assignment_expression "bVar13 = *pbVar9 == *pbVar11" (identifier "bVar13") (= "=") (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar14 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (!bVar13) break;" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "code_r0x001623ec:\n    if (lVar7 == 0) break;" (statement_identifier "code_r0x001623ec") (: ":") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}"))) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" (if "if") (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" (( "(") (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" (( "(") (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" (! "!") (identifier "bVar12")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar12")) () ")")) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");\n    goto LAB_001622dc;\n  }" ({ "{") (expression_statement "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");" (call_expression "BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n")" (identifier "BIO_printf") (argument_list "(DAT_001b76b0,"CONNECTION CLOSED\n")" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""CONNECTION CLOSED\n"" (" """) (string_content "CONNECTION CLOSED") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (goto_statement "goto LAB_001622dc;" (goto "goto") (statement_identifier "LAB_001622dc") (; ";")) (} "}"))) (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" (identifier "uVar4") (= "=") (number_literal "5")) (; ";")) (labeled_statement "LAB_00162400:\n  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" (statement_identifier "LAB_00162400") (: ":") (expression_statement "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);" (call_expression "BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4)" (identifier "BUF_reverse") (argument_list "(out,(uchar *)0x0,(long)(int)uVar4)" (( "(") (identifier "out") (, ",") (cast_expression "(uchar *)0x0" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(long)(int)uVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")"))) (; ";"))) (expression_statement "out[(int)uVar4] = 10;" (assignment_expression "out[(int)uVar4] = 10" (subscript_expression "out[(int)uVar4]" (identifier "out") ([ "[") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (] "]")) (= "=") (number_literal "10")) (; ";")) (expression_statement "BIO_write(bp,out,uVar4 + 1);" (call_expression "BIO_write(bp,out,uVar4 + 1)" (identifier "BIO_write") (argument_list "(bp,out,uVar4 + 1)" (( "(") (identifier "bp") (, ",") (identifier "out") (, ",") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")"))) (; ";")) (while_statement "while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" (while "while") (parenthesized_expression "(lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1)" (( "(") (comma_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1" (assignment_expression "lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0)" (identifier "lVar7") (= "=") (call_expression "BIO_ctrl(bp,0xb,0,(void *)0x0)" (identifier "BIO_ctrl") (argument_list "(bp,0xb,0,(void *)0x0)" (( "(") (identifier "bp") (, ",") (number_literal "0xb") (, ",") (number_literal "0") (, ",") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")")))) (, ",") (binary_expression "(int)lVar7 < 1" (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")) (< "<") (number_literal "1"))) () ")")) (compound_statement "{\n    iVar3 = BIO_test_flags(bp,8);\n    if (iVar3 == 0) goto LAB_001622dc;\n  }" ({ "{") (expression_statement "iVar3 = BIO_test_flags(bp,8);" (assignment_expression "iVar3 = BIO_test_flags(bp,8)" (identifier "iVar3") (= "=") (call_expression "BIO_test_flags(bp,8)" (identifier "BIO_test_flags") (argument_list "(bp,8)" (( "(") (identifier "bp") (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) goto LAB_001622dc;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001622dc;" (goto "goto") (statement_identifier "LAB_001622dc") (; ";"))) (} "}"))) (goto_statement "goto LAB_0016238d;" (goto "goto") (statement_identifier "LAB_0016238d") (; ";")) (} "}")))

int function_1(int s,int stype,int prot,type_1 *var_14)

{
  type_1 var_16;
  type_2 var_45;
  int var_18;
  type_3 var_43;
  type_2 *var_44;
  type_4 *pBVar5;
  type_5 *var_5;
  type_5 *var_6;
  long var_8;
  type_6 *var_10;
  type_5 *rbio;
  type_2 *var_46;
  type_5 *pBVar9;
  type_1 *var_15;
  type_2 *var_51;
  bool var_52;
  bool bVar13;
  type_2 bVar14;
  
  bVar14 = 0;
  var_44 = (type_2 *)var_1(0x4000,"server rev buffer");
  pBVar5 = var_2();
  var_5 = var_3(pBVar5);
  pBVar5 = var_4();
  var_6 = var_3(pBVar5);
  if ((((var_5 != (type_5 *)0x0) && (var_6 != (type_5 *)0x0)) &&
      (var_8 = var_7(var_5,0x75,0x4000,1), var_8 != 0)) &&
     (var_10 = var_9((type_7 *)ctx), var_10 != (type_6 *)0x0)) {
    if (var_11 != 0) {
      var_12(var_10,0x38,tlsext_cb);
      var_13(var_10,0x39,0,bio_s_out);
    }
    if (var_14 != (type_1 *)0x0) {
      var_8 = -1;
      var_15 = var_14;
      do {
        if (var_8 == 0) break;
        var_8 = var_8 + -1;
        var_16 = *var_15;
        var_15 = var_15 + (type_8)bVar14 * -2 + 1;
      } while (var_16 != '\0');
      var_18 = var_17(var_10,var_14,~(type_3)var_8 - 1);
      if (var_18 == 0) {
        var_19(var_10);
        var_20((type_5 *)bio_err);
        goto LAB_00162069;
      }
    }
    rbio = var_21(s,0);
    var_22(var_10,rbio,rbio);
    var_23(var_10);
    var_24(var_6,0x6d,1,var_10);
    var_25(var_5,var_6);
    if (var_26 != 0) {
      var_6 = var_27(var_10);
      var_28(var_6,bio_dump_callback);
      pBVar9 = bio_s_out;
      var_6 = var_27(var_10);
      var_29(var_6,(char *)pBVar9);
    }
    if (var_30 != 0) {
      var_31(var_10,msg_cb);
      pBVar9 = var_32;
      if (var_32 == (type_5 *)0x0) {
        pBVar9 = bio_s_out;
      }
      var_13(var_10,0x10,0,pBVar9);
    }
    while (var_8 = var_24(var_5,0x65,0,(void *)0x0), (int)var_8 < 1) {
      var_18 = var_33(var_5,8);
      if (var_18 == 0) {
        var_34((type_5 *)bio_err,"CONNECTION FAILURE\n");
        var_20((type_5 *)bio_err);
        goto LAB_001622dc;
      }
      var_18 = var_33(var_5,4);
      if ((var_18 != 0) && (var_18 = var_35(var_5), var_18 == 1)) {
        var_36((type_5 *)bio_s_out,"LOOKUP renego during accept\n");
        var_37(srp_callback_parm.user);
        srp_callback_parm.user =
             (type_9 *)var_38(srp_callback_parm.vb,srp_callback_parm.login);
        if (srp_callback_parm.user == (type_9 *)0x0) {
          var_36((type_5 *)bio_s_out,"LOOKUP not successful\n");
        }
        else {
          var_36((type_5 *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);
        }
      }
    }
    var_36((type_5 *)bio_err,"CONNECTION ESTABLISHED\n");
    var_39((type_6 *)var_10);
LAB_0016238d:
    while( true ) {
      var_43 = var_40(var_5,(char *)var_44,0x3fff);
      if (-1 < (int)var_43) break;
      var_18 = var_33(var_5,8);
      if (var_18 == 0) {
        if (var_41 == 0) {
          var_20((type_5 *)bio_err);
        }
        goto LAB_00162069;
      }
      var_36((type_5 *)bio_s_out,"read R BLOCK\n");
      var_18 = var_33(var_5,4);
      if ((var_18 == 0) || (var_18 = var_35(var_5), var_18 != 1)) {
        var_42(1);
      }
      else {
        var_36((type_5 *)bio_s_out,"LOOKUP renego during read\n");
        var_37(srp_callback_parm.user);
        srp_callback_parm.user =
             (type_9 *)var_38(srp_callback_parm.vb,srp_callback_parm.login);
        if (srp_callback_parm.user == (type_9 *)0x0) {
          var_36((type_5 *)bio_s_out,"LOOKUP not successful\n");
        }
        else {
          var_36((type_5 *)bio_s_out,"LOOKUP done %s\n",(srp_callback_parm.user)->info);
        }
      }
    }
    if (var_43 != 0) {
      var_46 = var_44 + (long)(int)var_43 + -1;
      var_45 = *var_46;
      while ((var_45 == 10 || (var_45 == 0xd))) {
        var_46 = var_46 + -1;
        var_43 = var_43 - 1;
        if (var_43 == 0) goto LAB_00162400;
        var_45 = *var_46;
      }
      if (var_47 == 0) {
        var_52 = var_43 < 5;
        bVar13 = var_43 == 5;
        if (bVar13) {
          var_8 = 5;
          var_46 = var_44;
          var_51 = (type_2 *)"CLOSE";
          goto code_r0x001623ec;
        }
      }
      goto LAB_00162400;
    }
    var_36((type_5 *)bio_err,"CONNECTION CLOSED\n");
LAB_001622dc:
    var_48(var_10,3);
  }
LAB_00162069:
  var_49(var_44);
  var_50(var_5);
  return 1;
  while( true ) {
    var_8 = var_8 + -1;
    var_52 = *var_46 < *var_51;
    bVar13 = *var_46 == *var_51;
    var_46 = var_46 + (type_8)bVar14 * -2 + 1;
    var_51 = var_51 + (type_8)bVar14 * -2 + 1;
    if (!bVar13) break;
code_r0x001623ec:
    if (var_8 == 0) break;
  }
  if ((!var_52 && !bVar13) == var_52) {
    var_36((type_5 *)bio_err,"CONNECTION CLOSED\n");
    goto LAB_001622dc;
  }
  var_43 = 5;
LAB_00162400:
  var_53(var_44,(type_1 *)0x0,(long)(int)var_43);
  var_44[(int)var_43] = 10;
  var_54(var_5,var_44,var_43 + 1);
  while (var_8 = var_24(var_5,0xb,0,(void *)0x0), (int)var_8 < 1) {
    var_18 = var_33(var_5,8);
    if (var_18 == 0) goto LAB_001622dc;
  }
  goto LAB_0016238d;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (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 (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (identifier)))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (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: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (labeled_statement label: (statement_identifier) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (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 (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (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: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (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: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (string_literal (string_content))))) (goto_statement label: (statement_identifier)))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (goto_statement label: (statement_identifier)))))

undefined8 MASKED(int param_1,undefined8 param_2,undefined8 param_3,uchar *param_4)

{
  uchar uVar1;
  byte bVar2;
  int iVar3;
  uint uVar4;
  byte *out;
  BIO_METHOD *pBVar5;
  BIO *bp;
  BIO *pBVar6;
  long lVar7;
  SSL *ssl;
  BIO *pBVar8;
  byte *pbVar9;
  uchar *puVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  
  bVar14 = 0;
  out = (byte *)FUN_0017b399(0x4000,"server rev buffer");
  pBVar5 = BIO_f_buffer();
  bp = BIO_new(pBVar5);
  pBVar5 = BIO_f_ssl();
  pBVar6 = BIO_new(pBVar5);
  if ((((bp != (BIO *)0x0) && (pBVar6 != (BIO *)0x0)) &&
      (lVar7 = BIO_int_ctrl(bp,0x75,0x4000,1), lVar7 != 0)) &&
     (ssl = SSL_new(DAT_001b8100), ssl != (SSL *)0x0)) {
    if (DAT_001b80d8 != 0) {
      SSL_callback_ctrl(ssl,0x38,FUN_0018259e);
      SSL_ctrl(ssl,0x39,0,DAT_001b80e8);
    }
    if (param_4 != (uchar *)0x0) {
      lVar7 = -1;
      puVar10 = param_4;
      do {
        if (lVar7 == 0) break;
        lVar7 = lVar7 + -1;
        uVar1 = *puVar10;
        puVar10 = puVar10 + (ulong)bVar14 * -2 + 1;
      } while (uVar1 != '\0');
      iVar3 = SSL_set_session_id_context(ssl,param_4,~(uint)lVar7 - 1);
      if (iVar3 == 0) {
        SSL_free(ssl);
        ERR_print_errors(DAT_001b76b0);
        goto LAB_00162069;
      }
    }
    pBVar8 = BIO_new_socket(param_1,0);
    SSL_set_bio(ssl,pBVar8,pBVar8);
    SSL_set_accept_state(ssl);
    BIO_ctrl(pBVar6,0x6d,1,ssl);
    BIO_push(bp,pBVar6);
    if (DAT_001b80dc != 0) {
      pBVar6 = SSL_get_rbio(ssl);
      BIO_set_callback(pBVar6,FUN_00182141);
      pBVar6 = DAT_001b80e8;
      pBVar8 = SSL_get_rbio(ssl);
      BIO_set_callback_arg(pBVar8,(char *)pBVar6);
    }
    if (DAT_001b80d4 != 0) {
      SSL_set_msg_callback(ssl,FUN_00182311);
      pBVar6 = DAT_001b80e0;
      if (DAT_001b80e0 == (BIO *)0x0) {
        pBVar6 = DAT_001b80e8;
      }
      SSL_ctrl(ssl,0x10,0,pBVar6);
    }
    while (lVar7 = BIO_ctrl(bp,0x65,0,(void *)0x0), (int)lVar7 < 1) {
      iVar3 = BIO_test_flags(bp,8);
      if (iVar3 == 0) {
        BIO_puts(DAT_001b76b0,"CONNECTION FAILURE\n");
        ERR_print_errors(DAT_001b76b0);
        goto LAB_001622dc;
      }
      iVar3 = BIO_test_flags(bp,4);
      if ((iVar3 != 0) && (iVar3 = BIO_get_retry_reason(bp), iVar3 == 1)) {
        BIO_printf(DAT_001b80e8,"LOOKUP renego during accept\n");
        SRP_user_pwd_free(DAT_001b8080);
        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);
        if (DAT_001b8080 == 0) {
          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");
        }
        else {
          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));
        }
      }
    }
    BIO_printf(DAT_001b76b0,"CONNECTION ESTABLISHED\n");
    FUN_00182e5b(ssl);
LAB_0016238d:
    while( true ) {
      uVar4 = BIO_gets(bp,(char *)out,0x3fff);
      if (-1 < (int)uVar4) break;
      iVar3 = BIO_test_flags(bp,8);
      if (iVar3 == 0) {
        if (DAT_001b80d0 == 0) {
          ERR_print_errors(DAT_001b76b0);
        }
        goto LAB_00162069;
      }
      BIO_printf(DAT_001b80e8,"read R BLOCK\n");
      iVar3 = BIO_test_flags(bp,4);
      if ((iVar3 == 0) || (iVar3 = BIO_get_retry_reason(bp), iVar3 != 1)) {
        sleep(1);
      }
      else {
        BIO_printf(DAT_001b80e8,"LOOKUP renego during read\n");
        SRP_user_pwd_free(DAT_001b8080);
        DAT_001b8080 = SRP_VBASE_get1_by_user(DAT_001b8078,DAT_001b8070);
        if (DAT_001b8080 == 0) {
          BIO_printf(DAT_001b80e8,"LOOKUP not successful\n");
        }
        else {
          BIO_printf(DAT_001b80e8,"LOOKUP done %s\n",*(undefined8 *)(DAT_001b8080 + 0x28));
        }
      }
    }
    if (uVar4 != 0) {
      pbVar9 = out + (long)(int)uVar4 + -1;
      bVar2 = *pbVar9;
      while ((bVar2 == 10 || (bVar2 == 0xd))) {
        pbVar9 = pbVar9 + -1;
        uVar4 = uVar4 - 1;
        if (uVar4 == 0) goto LAB_00162400;
        bVar2 = *pbVar9;
      }
      if (DAT_001b80cc == 0) {
        bVar12 = uVar4 < 5;
        bVar13 = uVar4 == 5;
        if (bVar13) {
          lVar7 = 5;
          pbVar9 = out;
          pbVar11 = (byte *)"CLOSE";
          goto code_r0x001623ec;
        }
      }
      goto LAB_00162400;
    }
    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");
LAB_001622dc:
    SSL_set_shutdown(ssl,3);
  }
LAB_00162069:
  CRYPTO_free(out);
  BIO_free_all(bp);
  return 1;
  while( true ) {
    lVar7 = lVar7 + -1;
    bVar12 = *pbVar9 < *pbVar11;
    bVar13 = *pbVar9 == *pbVar11;
    pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
    pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;
    if (!bVar13) break;
code_r0x001623ec:
    if (lVar7 == 0) break;
  }
  if ((!bVar12 && !bVar13) == bVar12) {
    BIO_printf(DAT_001b76b0,"CONNECTION CLOSED\n");
    goto LAB_001622dc;
  }
  uVar4 = 5;
LAB_00162400:
  BUF_reverse(out,(uchar *)0x0,(long)(int)uVar4);
  out[(int)uVar4] = 10;
  BIO_write(bp,out,uVar4 + 1);
  while (lVar7 = BIO_ctrl(bp,0xb,0,(void *)0x0), (int)lVar7 < 1) {
    iVar3 = BIO_test_flags(bp,8);
    if (iVar3 == 0) goto LAB_001622dc;
  }
  goto LAB_0016238d;
}

