
int main(int argc,char **argv)

{
  char cVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  byte *pbVar5;
  lhash_st_FUNCTION *prog;
  long lVar6;
  char *pcVar7;
  long lVar8;
  byte *pbVar9;
  long in_FS_OFFSET;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  ARGS arg;
  FUNCTION f;
  char buf [1024];
  
  bVar12 = 0;
  lVar6 = *(long *)(in_FS_OFFSET + 0x28);
  arg.argv = (char **)0x0;
  arg.size = 0;
  pcVar4 = getenv("OPENSSL_CONF");
  if (pcVar4 == (char *)0x0) {
    pcVar7 = X509_get_default_cert_area();
    lVar8 = -1;
    pcVar4 = pcVar7;
    do {
      if (lVar8 == 0) break;
      lVar8 = lVar8 + -1;
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;
    } while (cVar1 != '\0');
    pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer");
    strcpy(pcVar4,pcVar7);
    strcat(pcVar4,"/");
    strcat(pcVar4,"openssl.cnf");
  }
  else {
    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);
  }
  default_config_file = pcVar4;
  bio_in = dup_bio_in(0x8001);
  bio_out = dup_bio_out(0x8001);
  bio_err = dup_bio_err(0x8001);
  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");
  bVar10 = false;
  bVar11 = pbVar5 == (byte *)0x0;
  if (!bVar11) {
    lVar8 = 3;
    pbVar9 = (byte *)0x18bcf7;
    do {
      if (lVar8 == 0) break;
      lVar8 = lVar8 + -1;
      bVar10 = *pbVar5 < *pbVar9;
      bVar11 = *pbVar5 == *pbVar9;
      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
    } while (bVar11);
    if ((!bVar10 && !bVar11) == bVar10) {
      CRYPTO_set_mem_debug(1);
    }
  }
  CRYPTO_mem_ctrl(1);
  pcVar4 = getenv("OPENSSL_FIPS");
  if (pcVar4 != (char *)0x0) {
    BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n");
    if (lVar6 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
    return 1;
  }
  signal(0xd,(__sighandler_t)0x1);
  iVar2 = OPENSSL_init_ssl(0x7640,0);
  if (iVar2 == 0) {
    BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");
    ERR_print_errors((BIO *)bio_err);
    iVar2 = 1;
    prog = (lhash_st_FUNCTION *)0x0;
  }
  else {
    setup_ui_method();
    prog = prog_init();
    pcVar4 = opt_progname(*argv);
    f.name = pcVar4;
    lVar6 = OPENSSL_LH_retrieve(prog,&f);
    if (lVar6 == 0) {
      if (argc == 1) {
        do {
          iVar2 = 0x400;
          pcVar4 = buf;
          pcVar7 = "OpenSSL> ";
          do {
            *pcVar4 = '\0';
            fputs(pcVar7,stdout);
            fflush(stdout);
            pcVar7 = fgets(pcVar4,iVar2,stdin);
            if (pcVar7 == (char *)0x0) {
              iVar2 = 0;
              goto LAB_0014c954;
            }
            if (*pcVar4 == '\0') {
              iVar2 = 0;
              goto LAB_0014c954;
            }
            lVar6 = -1;
            pcVar7 = pcVar4;
            do {
              if (lVar6 == 0) break;
              lVar6 = lVar6 + -1;
              cVar1 = *pcVar7;
              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;
            } while (cVar1 != '\0');
            iVar3 = ~(uint)lVar6 - 1;
            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;
            iVar3 = ~(uint)lVar6 - 3;
            pcVar4 = pcVar4 + iVar3;
            iVar2 = iVar2 - iVar3;
            pcVar7 = "> ";
          } while (0 < iVar2);
          iVar2 = chopup_args(&arg,buf);
          if (iVar2 == 0) {
            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");
            iVar2 = 1;
            goto LAB_0014c954;
          }
          iVar2 = do_cmd(prog,arg.argc,arg.argv);
          if (iVar2 == -1) goto LAB_0014cb75;
          if (iVar2 != 0) {
            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);
          }
          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);
          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);
        } while( true );
      }
      iVar2 = do_cmd(prog,argc + -1,argv + 1);
      if (iVar2 < 0) {
        iVar2 = 0;
      }
    }
    else {
      *argv = pcVar4;
      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);
    }
  }
LAB_0014c954:
  CRYPTO_free((void *)0x0);
  CRYPTO_free(default_config_file);
  OPENSSL_LH_free(prog);
  CRYPTO_free(arg.argv);
  app_RAND_write();
  BIO_free((BIO *)bio_in);
  BIO_free_all((BIO *)bio_out);
  destroy_ui_method();
  destroy_prefix_method();
  BIO_free((BIO *)bio_err);
                    /* WARNING: Subroutine does not return */
  exit(iVar2);
LAB_0014cb75:
  iVar2 = 0;
  goto LAB_0014c954;
}



undefined8 FUN_0014c720(int param_1,undefined8 *param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  byte *pbVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  char *pcVar8;
  long lVar9;
  ulong uVar10;
  byte *pbVar11;
  long in_FS_OFFSET;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  undefined4 local_478;
  undefined4 local_474;
  undefined8 *local_470;
  undefined1 local_468 [8];
  undefined8 local_460;
  char local_448 [1032];
  long local_40;
  
  bVar14 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  local_470 = (undefined8 *)0x0;
  local_478 = 0;
  pcVar4 = getenv("OPENSSL_CONF");
  if (pcVar4 == (char *)0x0) {
    pcVar8 = X509_get_default_cert_area();
    uVar10 = 0xffffffffffffffff;
    pcVar4 = pcVar8;
    do {
      if (uVar10 == 0) break;
      uVar10 = uVar10 - 1;
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;
    } while (cVar1 != '\0');
    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");
    strcpy(pcVar4,pcVar8);
    strcat(pcVar4,"/");
    strcat(pcVar4,"openssl.cnf");
  }
  else {
    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);
  }
  DAT_001b76c8 = pcVar4;
  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);
  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);
  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);
  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");
  bVar12 = false;
  bVar13 = pbVar5 == (byte *)0x0;
  if (!bVar13) {
    lVar9 = 3;
    pbVar11 = (byte *)0x18bcf7;
    do {
      if (lVar9 == 0) break;
      lVar9 = lVar9 + -1;
      bVar12 = *pbVar5 < *pbVar11;
      bVar13 = *pbVar5 == *pbVar11;
      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;
      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;
    } while (bVar13);
    if ((!bVar12 && !bVar13) == bVar12) {
      CRYPTO_set_mem_debug(1);
    }
  }
  CRYPTO_mem_ctrl(1);
  pcVar4 = getenv("OPENSSL_FIPS");
  if (pcVar4 != (char *)0x0) {
    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");
    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
    return 1;
  }
  signal(0xd,(__sighandler_t)0x1);
  iVar2 = OPENSSL_init_ssl(0x7640,0);
  if (iVar2 == 0) {
    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");
    ERR_print_errors(DAT_001b76b0);
    iVar2 = 1;
    uVar6 = 0;
  }
  else {
    FUN_0017b0f7();
    uVar6 = FUN_0014bbff();
    uVar7 = FUN_0017f4f3(*param_2);
    local_460 = uVar7;
    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);
    if (lVar9 == 0) {
      if (param_1 == 1) {
        do {
          iVar2 = 0x400;
          pcVar4 = local_448;
          pcVar8 = "OpenSSL> ";
          do {
            *pcVar4 = '\0';
            fputs(pcVar8,stdout);
            fflush(stdout);
            pcVar8 = fgets(pcVar4,iVar2,stdin);
            if (pcVar8 == (char *)0x0) {
              iVar2 = 0;
              goto LAB_0014c954;
            }
            if (*pcVar4 == '\0') {
              iVar2 = 0;
              goto LAB_0014c954;
            }
            lVar9 = -1;
            pcVar8 = pcVar4;
            do {
              if (lVar9 == 0) break;
              lVar9 = lVar9 + -1;
              cVar1 = *pcVar8;
              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;
            } while (cVar1 != '\0');
            iVar3 = ~(uint)lVar9 - 1;
            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;
            iVar3 = ~(uint)lVar9 - 3;
            pcVar4 = pcVar4 + iVar3;
            iVar2 = iVar2 - iVar3;
            pcVar8 = "> ";
          } while (0 < iVar2);
          iVar2 = FUN_0017b3fc(&local_478,local_448);
          if (iVar2 == 0) {
            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");
            iVar2 = 1;
            goto LAB_0014c954;
          }
          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);
          if (iVar2 == -1) goto LAB_0014cb75;
          if (iVar2 != 0) {
            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);
          }
          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);
          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);
        } while( true );
      }
      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);
      if (iVar2 < 0) {
        iVar2 = 0;
      }
    }
    else {
      *param_2 = uVar7;
      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);
    }
  }
LAB_0014c954:
  CRYPTO_free((void *)0x0);
  CRYPTO_free(DAT_001b76c8);
  OPENSSL_LH_free(uVar6);
  CRYPTO_free(local_470);
  FUN_0017a6a1();
  BIO_free(DAT_001b76c0);
  BIO_free_all(DAT_001b76b8);
  FUN_0017b178();
  FUN_0017da6f();
  BIO_free(DAT_001b76b0);
                    /* WARNING: Subroutine does not return */
  exit(iVar2);
LAB_0014cb75:
  iVar2 = 0;
  goto LAB_0014c954;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x448
MOV EBP,EDI
MOV R12,RSI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x438],RAX
XOR EAX,EAX
MOV qword ptr [RSP + 0x8],0x0
MOV dword ptr [RSP],0x0
LEA RDI,[0x18cab4]
CALL 0x00131240
TEST RAX,RAX
JZ 0x0014c856
MOV EDX,0x69
LEA RSI,[0x18cac1]
MOV RDI,RAX
CALL 0x0012f960
MOV R13,RAX
MOV qword ptr [0x001b76c8],R13
MOV EDI,0x8001
CALL 0x0017d433
MOV qword ptr [0x001b76c0],RAX
MOV EDI,0x8001
CALL 0x0017d84a
MOV qword ptr [0x001b76b8],RAX
MOV EDI,0x8001
CALL 0x0017da47
MOV qword ptr [0x001b76b0],RAX
LEA RDI,[0x18caf6]
CALL 0x00131240
TEST RAX,RAX
JZ 0x0014c7ee
MOV ECX,0x3
LEA RDI,[0x18bcf7]
MOV RSI,RAX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0014c8b6
MOV EDI,0x1
CALL 0x001330a0
LEA RDI,[0x18cb0b]
CALL 0x00131240
MOV RBX,RAX
TEST RAX,RAX
JZ 0x0014c8c5
LEA RSI,[0x18cb18]
MOV RDI,qword ptr [0x001b76b0]
MOV EAX,0x0
CALL 0x0012e210
MOV EAX,0x1
MOV RDX,qword ptr [RSP + 0x438]
XOR RDX,qword ptr FS:[0x28]
JNZ 0x0014cb7f
ADD RSP,0x448
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00130e40
MOV RBX,RAX
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,RBX
SCASB.REPNE RDI
MOV RDX,RCX
NOT RDX
LEA RDI,[RDX + 0xc]
LEA RSI,[0x18cad3]
CALL 0x0017b399
MOV R13,RAX
MOV RSI,RBX
MOV RDI,RAX
CALL 0x00131b30
LEA RSI,[0x19454b]
MOV RDI,R13
CALL 0x001309a0
LEA RSI,[0x18caea]
MOV RDI,R13
CALL 0x001309a0
JMP 0x0014c785
MOV EDI,0x1
CALL 0x00130470
JMP 0x0014c7ee
MOV ESI,0x1
MOV EDI,0xd
CALL 0x00130fc0
MOV ESI,0x0
MOV EDI,0x7640
CALL 0x00131a60
TEST EAX,EAX
JNZ 0x0014c912
LEA RSI,[0x18d1e0]
MOV RDI,qword ptr [0x001b76b0]
MOV EAX,0x0
CALL 0x0012e210
MOV RDI,qword ptr [0x001b76b0]
CALL 0x00133090
MOV EBP,0x1
JMP 0x0014c954
CALL 0x0017b0f7
CALL 0x0014bbff
MOV RBX,RAX
MOV RDI,qword ptr [R12]
CALL 0x0017f4f3
MOV R13,RAX
MOV qword ptr [RSP + 0x18],RAX
LEA RSI,[RSP + 0x10]
MOV RDI,RBX
CALL 0x00130020
TEST RAX,RAX
JZ 0x0014c9da
MOV qword ptr [R12],R13
MOV RSI,R12
MOV EDI,EBP
CALL qword ptr [RAX + 0x10]
MOV EBP,EAX
MOV EDX,0xfe
LEA RSI,[0x18cac1]
MOV EDI,0x0
CALL 0x0012fb80
MOV EDX,0xff
LEA RSI,[0x18cac1]
MOV RDI,qword ptr [0x001b76c8]
CALL 0x0012fb80
MOV RDI,RBX
CALL 0x0012f940
MOV EDX,0x101
LEA RSI,[0x18cac1]
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x0012fb80
CALL 0x0017a6a1
MOV RDI,qword ptr [0x001b76c0]
CALL 0x001327e0
MOV RDI,qword ptr [0x001b76b8]
CALL 0x00131800
CALL 0x0017b178
CALL 0x0017da6f
MOV RDI,qword ptr [0x001b76b0]
CALL 0x001327e0
MOV EDI,EBP
CALL 0x0012ebe0
CMP EBP,0x1
JNZ 0x0014c9f2
LEA R15,[0x18caaa]
LEA R14,[0x18cab1]
JMP 0x0014ca83
LEA RDX,[R12 + 0x8]
LEA ESI,[RBP + -0x1]
MOV RDI,RBX
CALL 0x0014bcba
MOV EBP,EAX
TEST EAX,EAX
JNS 0x0014c954
MOV EBP,0x0
JMP 0x0014c954
LEA RSI,[RSP + 0x30]
MOV RDI,RSP
CALL 0x0017b3fc
TEST EAX,EAX
JZ 0x0014cb24
MOV RDX,qword ptr [RSP + 0x8]
MOV ESI,dword ptr [RSP + 0x4]
MOV RDI,RBX
CALL 0x0014bcba
CMP EAX,-0x1
JZ 0x0014cb75
TEST EAX,EAX
JNZ 0x0014cb3c
MOV ECX,0x0
MOV EDX,0x0
MOV ESI,0xb
MOV RDI,qword ptr [0x001b76b8]
CALL 0x00132780
MOV ECX,0x0
MOV EDX,0x0
MOV ESI,0xb
MOV RDI,qword ptr [0x001b76b0]
CALL 0x00132780
MOV R13D,0x400
LEA R12,[RSP + 0x30]
MOV RDI,R15
MOV byte ptr [R12],0x0
MOV RSI,qword ptr [0x001b75e8]
CALL 0x00130a90
MOV RDI,qword ptr [0x001b75e8]
CALL 0x00133060
MOV RDX,qword ptr [0x001b75e0]
MOV ESI,R13D
MOV RDI,R12
CALL 0x0012f850
TEST RAX,RAX
JZ 0x0014cb61
CMP byte ptr [R12],0x0
JZ 0x0014cb6b
MOV RCX,-0x1
MOV RDI,R12
MOV EAX,0x0
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
CMP EAX,0x1
JLE 0x0014ca16
MOVSXD RDX,EAX
CMP byte ptr [R12 + RDX*0x1 + -0x2],0x5c
JNZ 0x0014ca16
SUB EAX,0x2
MOVSXD RDX,EAX
ADD R12,RDX
SUB R13D,EAX
MOV RDI,R14
TEST R13D,R13D
JG 0x0014ca91
JMP 0x0014ca16
LEA RSI,[0x18cb32]
MOV RDI,qword ptr [0x001b76b0]
CALL 0x0012e210
JMP 0x0014c954
MOV RAX,qword ptr [RSP + 0x8]
MOV RDX,qword ptr [RAX]
LEA RSI,[0x19a941]
MOV RDI,qword ptr [0x001b76b0]
MOV EAX,0x0
CALL 0x0012e210
JMP 0x0014ca4d
MOV EBP,0x0
JMP 0x0014c954
MOV EBP,0x0
JMP 0x0014c954
MOV EBP,0x0
JMP 0x0014c954
CALL 0x00131690
(translation_unit "undefined8 FUN_0014c720(int param_1,undefined8 *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    /* WARNING: Subroutine does not return */\n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}\n\n" (function_definition "undefined8 FUN_0014c720(int param_1,undefined8 *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    /* WARNING: Subroutine does not return */\n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" type_identifier (function_declarator "FUN_0014c720(int param_1,undefined8 *param_2)" identifier (parameter_list "(int param_1,undefined8 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    /* WARNING: Subroutine does not return */\n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "undefined4 local_478;" type_identifier identifier ;) (declaration "undefined4 local_474;" type_identifier identifier ;) (declaration "undefined8 *local_470;" type_identifier (pointer_declarator "*local_470" * identifier) ;) (declaration "undefined1 local_468 [8];" type_identifier (array_declarator "local_468 [8]" identifier [ number_literal ]) ;) (declaration "undefined8 local_460;" type_identifier identifier ;) (declaration "char local_448 [1032];" primitive_type (array_declarator "local_448 [1032]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_470 = (undefined8 *)0x0;" (assignment_expression "local_470 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_478 = 0;" (assignment_expression "local_478 = 0" identifier = number_literal) ;) (expression_statement "pcVar4 = getenv("OPENSSL_CONF");" (assignment_expression "pcVar4 = getenv("OPENSSL_CONF")" identifier = (call_expression "getenv("OPENSSL_CONF")" identifier (argument_list "("OPENSSL_CONF")" ( (string_literal ""OPENSSL_CONF"" " string_content ") )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }" { (expression_statement "pcVar8 = X509_get_default_cert_area();" (assignment_expression "pcVar8 = X509_get_default_cert_area()" identifier = (call_expression "X509_get_default_cert_area()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = pcVar8;" (assignment_expression "pcVar4 = pcVar8" identifier = identifier) ;) (do_statement "do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar4 + (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 "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");" (assignment_expression "pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" identifier = (cast_expression "(char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" identifier (argument_list "(~uVar10 + 0xc,"config filename buffer")" ( (binary_expression "~uVar10 + 0xc" (unary_expression "~uVar10" ~ identifier) + number_literal) , (string_literal ""config filename buffer"" " string_content ") ))))) ;) (expression_statement "strcpy(pcVar4,pcVar8);" (call_expression "strcpy(pcVar4,pcVar8)" identifier (argument_list "(pcVar4,pcVar8)" ( identifier , identifier ))) ;) (expression_statement "strcat(pcVar4,"/");" (call_expression "strcat(pcVar4,"/")" identifier (argument_list "(pcVar4,"/")" ( identifier , (string_literal ""/"" " string_content ") ))) ;) (expression_statement "strcat(pcVar4,"openssl.cnf");" (call_expression "strcat(pcVar4,"openssl.cnf")" identifier (argument_list "(pcVar4,"openssl.cnf")" ( identifier , (string_literal ""openssl.cnf"" " string_content ") ))) ;) }) (else_clause "else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" else (compound_statement "{\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" { (expression_statement "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);" (assignment_expression "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" identifier = (call_expression "CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" identifier (argument_list "(pcVar4,"../apps/openssl.c",0x69)" ( identifier , (string_literal ""../apps/openssl.c"" " string_content ") , number_literal )))) ;) }))) (expression_statement "DAT_001b76c8 = pcVar4;" (assignment_expression "DAT_001b76c8 = pcVar4" identifier = identifier) ;) (expression_statement "DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);" (assignment_expression "DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001)" identifier = (cast_expression "(BIO *)FUN_0017d433(0x8001)" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d433(0x8001)" identifier (argument_list "(0x8001)" ( number_literal ))))) ;) (expression_statement "DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);" (assignment_expression "DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001)" identifier = (cast_expression "(BIO *)FUN_0017d84a(0x8001)" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d84a(0x8001)" identifier (argument_list "(0x8001)" ( number_literal ))))) ;) (expression_statement "DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);" (assignment_expression "DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001)" identifier = (cast_expression "(BIO *)FUN_0017da47(0x8001)" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017da47(0x8001)" identifier (argument_list "(0x8001)" ( number_literal ))))) ;) (expression_statement "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");" (assignment_expression "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY")" identifier = (cast_expression "(byte *)getenv("OPENSSL_DEBUG_MEMORY")" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "getenv("OPENSSL_DEBUG_MEMORY")" identifier (argument_list "("OPENSSL_DEBUG_MEMORY")" ( (string_literal ""OPENSSL_DEBUG_MEMORY"" " string_content ") ))))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar13 = pbVar5 == (byte *)0x0;" (assignment_expression "bVar13 = pbVar5 == (byte *)0x0" identifier = (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" { (expression_statement "lVar9 = 3;" (assignment_expression "lVar9 = 3" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)0x18bcf7;" (assignment_expression "pbVar11 = (byte *)0x18bcf7" identifier = (cast_expression "(byte *)0x18bcf7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);" do (compound_statement "{\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar5 < *pbVar11;" (assignment_expression "bVar12 = *pbVar5 < *pbVar11" identifier = (binary_expression "*pbVar5 < *pbVar11" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar5 == *pbVar11;" (assignment_expression "bVar13 = *pbVar5 == *pbVar11" identifier = (binary_expression "*pbVar5 == *pbVar11" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar5 + (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)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\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      CRYPTO_set_mem_debug(1);\n    }" { (expression_statement "CRYPTO_set_mem_debug(1);" (call_expression "CRYPTO_set_mem_debug(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) })) (expression_statement "CRYPTO_mem_ctrl(1);" (call_expression "CRYPTO_mem_ctrl(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pcVar4 = getenv("OPENSSL_FIPS");" (assignment_expression "pcVar4 = getenv("OPENSSL_FIPS")" identifier = (call_expression "getenv("OPENSSL_FIPS")" identifier (argument_list "("OPENSSL_FIPS")" ( (string_literal ""OPENSSL_FIPS"" " string_content ") )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }" { (expression_statement "BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");" (call_expression "BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n")" identifier (argument_list "(DAT_001b76b0,"FIPS mode not supported.\n")" ( identifier , (string_literal ""FIPS mode not supported.\n"" " string_content escape_sequence ") ))) ;) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 1;" return number_literal ;) })) (expression_statement "signal(0xd,(__sighandler_t)0x1);" (call_expression "signal(0xd,(__sighandler_t)0x1)" identifier (argument_list "(0xd,(__sighandler_t)0x1)" ( number_literal , (cast_expression "(__sighandler_t)0x1" ( (type_descriptor "__sighandler_t" type_identifier) ) number_literal) ))) ;) (expression_statement "iVar2 = OPENSSL_init_ssl(0x7640,0);" (assignment_expression "iVar2 = OPENSSL_init_ssl(0x7640,0)" identifier = (call_expression "OPENSSL_init_ssl(0x7640,0)" identifier (argument_list "(0x7640,0)" ( number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }" { (expression_statement "BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");" (call_expression "BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" identifier (argument_list "(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" ( identifier , (string_literal ""FATAL: Startup failure (dev note: apps_startup() failed)\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 ))) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" else (compound_statement "{\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" { (expression_statement "FUN_0017b0f7();" (call_expression "FUN_0017b0f7()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar6 = FUN_0014bbff();" (assignment_expression "uVar6 = FUN_0014bbff()" identifier = (call_expression "FUN_0014bbff()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar7 = FUN_0017f4f3(*param_2);" (assignment_expression "uVar7 = FUN_0017f4f3(*param_2)" identifier = (call_expression "FUN_0017f4f3(*param_2)" identifier (argument_list "(*param_2)" ( (pointer_expression "*param_2" * identifier) )))) ;) (expression_statement "local_460 = uVar7;" (assignment_expression "local_460 = uVar7" identifier = identifier) ;) (expression_statement "lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);" (assignment_expression "lVar9 = OPENSSL_LH_retrieve(uVar6,local_468)" identifier = (call_expression "OPENSSL_LH_retrieve(uVar6,local_468)" identifier (argument_list "(uVar6,local_468)" ( identifier , identifier )))) ;) (if_statement "if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }" { (if_statement "if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }" if (parenthesized_expression "(param_1 == 1)" ( (binary_expression "param_1 == 1" identifier == number_literal) )) (compound_statement "{\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }" { (do_statement "do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );" do (compound_statement "{\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        }" { (expression_statement "iVar2 = 0x400;" (assignment_expression "iVar2 = 0x400" identifier = number_literal) ;) (expression_statement "pcVar4 = local_448;" (assignment_expression "pcVar4 = local_448" identifier = identifier) ;) (expression_statement "pcVar8 = "OpenSSL> ";" (assignment_expression "pcVar8 = "OpenSSL> "" identifier = (string_literal ""OpenSSL> "" " string_content ")) ;) (do_statement "do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);" do (compound_statement "{\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          }" { (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "fputs(pcVar8,stdout);" (call_expression "fputs(pcVar8,stdout)" identifier (argument_list "(pcVar8,stdout)" ( identifier , identifier ))) ;) (expression_statement "fflush(stdout);" (call_expression "fflush(stdout)" identifier (argument_list "(stdout)" ( identifier ))) ;) (expression_statement "pcVar8 = fgets(pcVar4,iVar2,stdin);" (assignment_expression "pcVar8 = fgets(pcVar4,iVar2,stdin)" identifier = (call_expression "fgets(pcVar4,iVar2,stdin)" identifier (argument_list "(pcVar4,iVar2,stdin)" ( identifier , identifier , identifier )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (if_statement "if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" if (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (expression_statement "lVar9 = -1;" (assignment_expression "lVar9 = -1" identifier = number_literal) ;) (expression_statement "pcVar8 = pcVar4;" (assignment_expression "pcVar8 = pcVar4" identifier = identifier) ;) (do_statement "do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar8 + (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 "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar3 = ~(uint)lVar9 - 1;" (assignment_expression "iVar3 = ~(uint)lVar9 - 1" identifier = (binary_expression "~(uint)lVar9 - 1" (unary_expression "~(uint)lVar9" ~ (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (if_statement "if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;" if (parenthesized_expression "((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\'))" ( (binary_expression "(iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')" (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) || (parenthesized_expression "(pcVar4[(long)iVar3 + -2] != '\\')" ( (binary_expression "pcVar4[(long)iVar3 + -2] != '\\'" (subscript_expression "pcVar4[(long)iVar3 + -2]" identifier [ (binary_expression "(long)iVar3 + -2" (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) != (char_literal "'\\'" ' escape_sequence ')) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = ~(uint)lVar9 - 3;" (assignment_expression "iVar3 = ~(uint)lVar9 - 3" identifier = (binary_expression "~(uint)lVar9 - 3" (unary_expression "~(uint)lVar9" ~ (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (expression_statement "pcVar4 = pcVar4 + iVar3;" (assignment_expression "pcVar4 = pcVar4 + iVar3" identifier = (binary_expression "pcVar4 + iVar3" identifier + identifier)) ;) (expression_statement "iVar2 = iVar2 - iVar3;" (assignment_expression "iVar2 = iVar2 - iVar3" identifier = (binary_expression "iVar2 - iVar3" identifier - identifier)) ;) (expression_statement "pcVar8 = "> ";" (assignment_expression "pcVar8 = "> "" identifier = (string_literal ""> "" " string_content ")) ;) }) while (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) ;) (expression_statement "iVar2 = FUN_0017b3fc(&local_478,local_448);" (assignment_expression "iVar2 = FUN_0017b3fc(&local_478,local_448)" identifier = (call_expression "FUN_0017b3fc(&local_478,local_448)" identifier (argument_list "(&local_478,local_448)" ( (pointer_expression "&local_478" & identifier) , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" { (expression_statement "BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");" (call_expression "BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n")" identifier (argument_list "(DAT_001b76b0,"Can\'t parse (no memory?)\n")" ( identifier , (string_literal ""Can\'t parse (no memory?)\n"" " string_content escape_sequence string_content escape_sequence ") ))) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (expression_statement "iVar2 = FUN_0014bcba(uVar6,local_474,local_470);" (assignment_expression "iVar2 = FUN_0014bcba(uVar6,local_474,local_470)" identifier = (call_expression "FUN_0014bcba(uVar6,local_474,local_470)" identifier (argument_list "(uVar6,local_474,local_470)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == -1) goto LAB_0014cb75;" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0014cb75;" goto statement_identifier ;)) (if_statement "if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }" { (expression_statement "BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);" (call_expression "BIO_printf(DAT_001b76b0,"error in %s\n",*local_470)" identifier (argument_list "(DAT_001b76b0,"error in %s\n",*local_470)" ( identifier , (string_literal ""error in %s\n"" " string_content escape_sequence ") , (pointer_expression "*local_470" * identifier) ))) ;) })) (expression_statement "BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0)" identifier (argument_list "(DAT_001b76b8,0xb,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0)" identifier (argument_list "(DAT_001b76b0,0xb,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);" (assignment_expression "iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1)" identifier = (call_expression "FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1)" identifier (argument_list "(uVar6,param_1 + -1,param_2 + 1)" ( identifier , (binary_expression "param_1 + -1" identifier + number_literal) , (binary_expression "param_2 + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar2 < 0) {\n        iVar2 = 0;\n      }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" else (compound_statement "{\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" { (expression_statement "*param_2 = uVar7;" (assignment_expression "*param_2 = uVar7" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);" (assignment_expression "iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2)" identifier = (call_expression "(**(code **)(lVar9 + 0x10))(param_1,param_2)" (parenthesized_expression "(**(code **)(lVar9 + 0x10))" ( (pointer_expression "**(code **)(lVar9 + 0x10)" * (pointer_expression "*(code **)(lVar9 + 0x10)" * (cast_expression "(code **)(lVar9 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) }))) }))) (labeled_statement "LAB_0014c954:\n  CRYPTO_free((void *)0x0);" statement_identifier : (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" identifier (argument_list "((void *)0x0)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (expression_statement "CRYPTO_free(DAT_001b76c8);" (call_expression "CRYPTO_free(DAT_001b76c8)" identifier (argument_list "(DAT_001b76c8)" ( identifier ))) ;) (expression_statement "OPENSSL_LH_free(uVar6);" (call_expression "OPENSSL_LH_free(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "CRYPTO_free(local_470);" (call_expression "CRYPTO_free(local_470)" identifier (argument_list "(local_470)" ( identifier ))) ;) (expression_statement "FUN_0017a6a1();" (call_expression "FUN_0017a6a1()" identifier (argument_list "()" ( ))) ;) (expression_statement "BIO_free(DAT_001b76c0);" (call_expression "BIO_free(DAT_001b76c0)" identifier (argument_list "(DAT_001b76c0)" ( identifier ))) ;) (expression_statement "BIO_free_all(DAT_001b76b8);" (call_expression "BIO_free_all(DAT_001b76b8)" identifier (argument_list "(DAT_001b76b8)" ( identifier ))) ;) (expression_statement "FUN_0017b178();" (call_expression "FUN_0017b178()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0017da6f();" (call_expression "FUN_0017da6f()" identifier (argument_list "()" ( ))) ;) (expression_statement "BIO_free(DAT_001b76b0);" (call_expression "BIO_free(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) comment (expression_statement "exit(iVar2);" (call_expression "exit(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (labeled_statement "LAB_0014cb75:\n  iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })))
(translation_unit "int main(int argc,char **argv)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  lhash_st_FUNCTION *prog;\n  long lVar6;\n  char *pcVar7;\n  long lVar8;\n  byte *pbVar9;\n  long in_FS_OFFSET;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  ARGS arg;\n  FUNCTION f;\n  char buf [1024];\n  \n  bVar12 = 0;\n  lVar6 = *(long *)(in_FS_OFFSET + 0x28);\n  arg.argv = (char **)0x0;\n  arg.size = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar7 = X509_get_default_cert_area();\n    lVar8 = -1;\n    pcVar4 = pcVar7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar7);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  default_config_file = pcVar4;\n  bio_in = dup_bio_in(0x8001);\n  bio_out = dup_bio_out(0x8001);\n  bio_err = dup_bio_err(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar10 = false;\n  bVar11 = pbVar5 == (byte *)0x0;\n  if (!bVar11) {\n    lVar8 = 3;\n    pbVar9 = (byte *)0x18bcf7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      bVar10 = *pbVar5 < *pbVar9;\n      bVar11 = *pbVar5 == *pbVar9;\n      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) == bVar10) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n");\n    if (lVar6 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors((BIO *)bio_err);\n    iVar2 = 1;\n    prog = (lhash_st_FUNCTION *)0x0;\n  }\n  else {\n    setup_ui_method();\n    prog = prog_init();\n    pcVar4 = opt_progname(*argv);\n    f.name = pcVar4;\n    lVar6 = OPENSSL_LH_retrieve(prog,&f);\n    if (lVar6 == 0) {\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(default_config_file);\n  OPENSSL_LH_free(prog);\n  CRYPTO_free(arg.argv);\n  app_RAND_write();\n  BIO_free((BIO *)bio_in);\n  BIO_free_all((BIO *)bio_out);\n  destroy_ui_method();\n  destroy_prefix_method();\n  BIO_free((BIO *)bio_err);\n                    /* WARNING: Subroutine does not return */\n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}\n\n" (function_definition "int main(int argc,char **argv)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  lhash_st_FUNCTION *prog;\n  long lVar6;\n  char *pcVar7;\n  long lVar8;\n  byte *pbVar9;\n  long in_FS_OFFSET;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  ARGS arg;\n  FUNCTION f;\n  char buf [1024];\n  \n  bVar12 = 0;\n  lVar6 = *(long *)(in_FS_OFFSET + 0x28);\n  arg.argv = (char **)0x0;\n  arg.size = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar7 = X509_get_default_cert_area();\n    lVar8 = -1;\n    pcVar4 = pcVar7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar7);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  default_config_file = pcVar4;\n  bio_in = dup_bio_in(0x8001);\n  bio_out = dup_bio_out(0x8001);\n  bio_err = dup_bio_err(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar10 = false;\n  bVar11 = pbVar5 == (byte *)0x0;\n  if (!bVar11) {\n    lVar8 = 3;\n    pbVar9 = (byte *)0x18bcf7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      bVar10 = *pbVar5 < *pbVar9;\n      bVar11 = *pbVar5 == *pbVar9;\n      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) == bVar10) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n");\n    if (lVar6 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors((BIO *)bio_err);\n    iVar2 = 1;\n    prog = (lhash_st_FUNCTION *)0x0;\n  }\n  else {\n    setup_ui_method();\n    prog = prog_init();\n    pcVar4 = opt_progname(*argv);\n    f.name = pcVar4;\n    lVar6 = OPENSSL_LH_retrieve(prog,&f);\n    if (lVar6 == 0) {\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(default_config_file);\n  OPENSSL_LH_free(prog);\n  CRYPTO_free(arg.argv);\n  app_RAND_write();\n  BIO_free((BIO *)bio_in);\n  BIO_free_all((BIO *)bio_out);\n  destroy_ui_method();\n  destroy_prefix_method();\n  BIO_free((BIO *)bio_err);\n                    /* WARNING: Subroutine does not return */\n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" primitive_type (function_declarator "main(int argc,char **argv)" identifier (parameter_list "(int argc,char **argv)" ( (parameter_declaration "int argc" primitive_type identifier) , (parameter_declaration "char **argv" primitive_type (pointer_declarator "**argv" * (pointer_declarator "*argv" * identifier))) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  lhash_st_FUNCTION *prog;\n  long lVar6;\n  char *pcVar7;\n  long lVar8;\n  byte *pbVar9;\n  long in_FS_OFFSET;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  ARGS arg;\n  FUNCTION f;\n  char buf [1024];\n  \n  bVar12 = 0;\n  lVar6 = *(long *)(in_FS_OFFSET + 0x28);\n  arg.argv = (char **)0x0;\n  arg.size = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar7 = X509_get_default_cert_area();\n    lVar8 = -1;\n    pcVar4 = pcVar7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar7);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  default_config_file = pcVar4;\n  bio_in = dup_bio_in(0x8001);\n  bio_out = dup_bio_out(0x8001);\n  bio_err = dup_bio_err(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar10 = false;\n  bVar11 = pbVar5 == (byte *)0x0;\n  if (!bVar11) {\n    lVar8 = 3;\n    pbVar9 = (byte *)0x18bcf7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      bVar10 = *pbVar5 < *pbVar9;\n      bVar11 = *pbVar5 == *pbVar9;\n      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) == bVar10) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n");\n    if (lVar6 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors((BIO *)bio_err);\n    iVar2 = 1;\n    prog = (lhash_st_FUNCTION *)0x0;\n  }\n  else {\n    setup_ui_method();\n    prog = prog_init();\n    pcVar4 = opt_progname(*argv);\n    f.name = pcVar4;\n    lVar6 = OPENSSL_LH_retrieve(prog,&f);\n    if (lVar6 == 0) {\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(default_config_file);\n  OPENSSL_LH_free(prog);\n  CRYPTO_free(arg.argv);\n  app_RAND_write();\n  BIO_free((BIO *)bio_in);\n  BIO_free_all((BIO *)bio_out);\n  destroy_ui_method();\n  destroy_prefix_method();\n  BIO_free((BIO *)bio_err);\n                    /* WARNING: Subroutine does not return */\n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "lhash_st_FUNCTION *prog;" type_identifier (pointer_declarator "*prog" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "ARGS arg;" type_identifier identifier ;) (declaration "FUNCTION f;" type_identifier identifier ;) (declaration "char buf [1024];" primitive_type (array_declarator "buf [1024]" identifier [ number_literal ]) ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "lVar6 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar6 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "arg.argv = (char **)0x0;" (assignment_expression "arg.argv = (char **)0x0" (field_expression "arg.argv" identifier . field_identifier) = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "arg.size = 0;" (assignment_expression "arg.size = 0" (field_expression "arg.size" identifier . field_identifier) = number_literal) ;) (expression_statement "pcVar4 = getenv("OPENSSL_CONF");" (assignment_expression "pcVar4 = getenv("OPENSSL_CONF")" identifier = (call_expression "getenv("OPENSSL_CONF")" identifier (argument_list "("OPENSSL_CONF")" ( (string_literal ""OPENSSL_CONF"" " string_content ") )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar7 = X509_get_default_cert_area();\n    lVar8 = -1;\n    pcVar4 = pcVar7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar7);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar7 = X509_get_default_cert_area();\n    lVar8 = -1;\n    pcVar4 = pcVar7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar7);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }" { (expression_statement "pcVar7 = X509_get_default_cert_area();" (assignment_expression "pcVar7 = X509_get_default_cert_area()" identifier = (call_expression "X509_get_default_cert_area()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar8 = -1;" (assignment_expression "lVar8 = -1" identifier = number_literal) ;) (expression_statement "pcVar4 = pcVar7;" (assignment_expression "pcVar4 = pcVar7" identifier = identifier) ;) (do_statement "do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;\n    }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar12 * -2 + 1" (binary_expression "pcVar4 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer");" (assignment_expression "pcVar4 = (char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer")" identifier = (cast_expression "(char *)app_malloc(~(uint)lVar8 + 0xc,"config filename buffer")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "app_malloc(~(uint)lVar8 + 0xc,"config filename buffer")" identifier (argument_list "(~(uint)lVar8 + 0xc,"config filename buffer")" ( (binary_expression "~(uint)lVar8 + 0xc" (unary_expression "~(uint)lVar8" ~ (cast_expression "(uint)lVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) + number_literal) , (string_literal ""config filename buffer"" " string_content ") ))))) ;) (expression_statement "strcpy(pcVar4,pcVar7);" (call_expression "strcpy(pcVar4,pcVar7)" identifier (argument_list "(pcVar4,pcVar7)" ( identifier , identifier ))) ;) (expression_statement "strcat(pcVar4,"/");" (call_expression "strcat(pcVar4,"/")" identifier (argument_list "(pcVar4,"/")" ( identifier , (string_literal ""/"" " string_content ") ))) ;) (expression_statement "strcat(pcVar4,"openssl.cnf");" (call_expression "strcat(pcVar4,"openssl.cnf")" identifier (argument_list "(pcVar4,"openssl.cnf")" ( identifier , (string_literal ""openssl.cnf"" " string_content ") ))) ;) }) (else_clause "else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" else (compound_statement "{\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" { (expression_statement "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);" (assignment_expression "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" identifier = (call_expression "CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" identifier (argument_list "(pcVar4,"../apps/openssl.c",0x69)" ( identifier , (string_literal ""../apps/openssl.c"" " string_content ") , number_literal )))) ;) }))) (expression_statement "default_config_file = pcVar4;" (assignment_expression "default_config_file = pcVar4" identifier = identifier) ;) (expression_statement "bio_in = dup_bio_in(0x8001);" (assignment_expression "bio_in = dup_bio_in(0x8001)" identifier = (call_expression "dup_bio_in(0x8001)" identifier (argument_list "(0x8001)" ( number_literal )))) ;) (expression_statement "bio_out = dup_bio_out(0x8001);" (assignment_expression "bio_out = dup_bio_out(0x8001)" identifier = (call_expression "dup_bio_out(0x8001)" identifier (argument_list "(0x8001)" ( number_literal )))) ;) (expression_statement "bio_err = dup_bio_err(0x8001);" (assignment_expression "bio_err = dup_bio_err(0x8001)" identifier = (call_expression "dup_bio_err(0x8001)" identifier (argument_list "(0x8001)" ( number_literal )))) ;) (expression_statement "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");" (assignment_expression "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY")" identifier = (cast_expression "(byte *)getenv("OPENSSL_DEBUG_MEMORY")" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "getenv("OPENSSL_DEBUG_MEMORY")" identifier (argument_list "("OPENSSL_DEBUG_MEMORY")" ( (string_literal ""OPENSSL_DEBUG_MEMORY"" " string_content ") ))))) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar11 = pbVar5 == (byte *)0x0;" (assignment_expression "bVar11 = pbVar5 == (byte *)0x0" identifier = (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar11) {\n    lVar8 = 3;\n    pbVar9 = (byte *)0x18bcf7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      bVar10 = *pbVar5 < *pbVar9;\n      bVar11 = *pbVar5 == *pbVar9;\n      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) == bVar10) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n    lVar8 = 3;\n    pbVar9 = (byte *)0x18bcf7;\n    do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      bVar10 = *pbVar5 < *pbVar9;\n      bVar11 = *pbVar5 == *pbVar9;\n      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) == bVar10) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" { (expression_statement "lVar8 = 3;" (assignment_expression "lVar8 = 3" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)0x18bcf7;" (assignment_expression "pbVar9 = (byte *)0x18bcf7" identifier = (cast_expression "(byte *)0x18bcf7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      bVar10 = *pbVar5 < *pbVar9;\n      bVar11 = *pbVar5 == *pbVar9;\n      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      if (lVar8 == 0) break;\n      lVar8 = lVar8 + -1;\n      bVar10 = *pbVar5 < *pbVar9;\n      bVar11 = *pbVar5 == *pbVar9;\n      pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar5 < *pbVar9;" (assignment_expression "bVar10 = *pbVar5 < *pbVar9" identifier = (binary_expression "*pbVar5 < *pbVar9" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar5 == *pbVar9;" (assignment_expression "bVar11 = *pbVar5 == *pbVar9" identifier = (binary_expression "*pbVar5 == *pbVar9" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) == bVar10) {\n      CRYPTO_set_mem_debug(1);\n    }" if (parenthesized_expression "((!bVar10 && !bVar11) == bVar10)" ( (binary_expression "(!bVar10 && !bVar11) == bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n      CRYPTO_set_mem_debug(1);\n    }" { (expression_statement "CRYPTO_set_mem_debug(1);" (call_expression "CRYPTO_set_mem_debug(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) })) (expression_statement "CRYPTO_mem_ctrl(1);" (call_expression "CRYPTO_mem_ctrl(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pcVar4 = getenv("OPENSSL_FIPS");" (assignment_expression "pcVar4 = getenv("OPENSSL_FIPS")" identifier = (call_expression "getenv("OPENSSL_FIPS")" identifier (argument_list "("OPENSSL_FIPS")" ( (string_literal ""OPENSSL_FIPS"" " string_content ") )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n");\n    if (lVar6 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n");\n    if (lVar6 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    return 1;\n  }" { (expression_statement "BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n");" (call_expression "BIO_printf((BIO *)bio_err,"FIPS mode not supported.\n")" identifier (argument_list "((BIO *)bio_err,"FIPS mode not supported.\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""FIPS mode not supported.\n"" " string_content escape_sequence ") ))) ;) (if_statement "if (lVar6 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" if (parenthesized_expression "(lVar6 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar6 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 1;" return number_literal ;) })) (expression_statement "signal(0xd,(__sighandler_t)0x1);" (call_expression "signal(0xd,(__sighandler_t)0x1)" identifier (argument_list "(0xd,(__sighandler_t)0x1)" ( number_literal , (cast_expression "(__sighandler_t)0x1" ( (type_descriptor "__sighandler_t" type_identifier) ) number_literal) ))) ;) (expression_statement "iVar2 = OPENSSL_init_ssl(0x7640,0);" (assignment_expression "iVar2 = OPENSSL_init_ssl(0x7640,0)" identifier = (call_expression "OPENSSL_init_ssl(0x7640,0)" identifier (argument_list "(0x7640,0)" ( number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors((BIO *)bio_err);\n    iVar2 = 1;\n    prog = (lhash_st_FUNCTION *)0x0;\n  }\n  else {\n    setup_ui_method();\n    prog = prog_init();\n    pcVar4 = opt_progname(*argv);\n    f.name = pcVar4;\n    lVar6 = OPENSSL_LH_retrieve(prog,&f);\n    if (lVar6 == 0) {\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors((BIO *)bio_err);\n    iVar2 = 1;\n    prog = (lhash_st_FUNCTION *)0x0;\n  }" { (expression_statement "BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");" (call_expression "BIO_printf((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" identifier (argument_list "((BIO *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""FATAL: Startup failure (dev note: apps_startup() failed)\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) ))) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "prog = (lhash_st_FUNCTION *)0x0;" (assignment_expression "prog = (lhash_st_FUNCTION *)0x0" identifier = (cast_expression "(lhash_st_FUNCTION *)0x0" ( (type_descriptor "lhash_st_FUNCTION *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    setup_ui_method();\n    prog = prog_init();\n    pcVar4 = opt_progname(*argv);\n    f.name = pcVar4;\n    lVar6 = OPENSSL_LH_retrieve(prog,&f);\n    if (lVar6 == 0) {\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }\n  }" else (compound_statement "{\n    setup_ui_method();\n    prog = prog_init();\n    pcVar4 = opt_progname(*argv);\n    f.name = pcVar4;\n    lVar6 = OPENSSL_LH_retrieve(prog,&f);\n    if (lVar6 == 0) {\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }\n  }" { (expression_statement "setup_ui_method();" (call_expression "setup_ui_method()" identifier (argument_list "()" ( ))) ;) (expression_statement "prog = prog_init();" (assignment_expression "prog = prog_init()" identifier = (call_expression "prog_init()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = opt_progname(*argv);" (assignment_expression "pcVar4 = opt_progname(*argv)" identifier = (call_expression "opt_progname(*argv)" identifier (argument_list "(*argv)" ( (pointer_expression "*argv" * identifier) )))) ;) (expression_statement "f.name = pcVar4;" (assignment_expression "f.name = pcVar4" (field_expression "f.name" identifier . field_identifier) = identifier) ;) (expression_statement "lVar6 = OPENSSL_LH_retrieve(prog,&f);" (assignment_expression "lVar6 = OPENSSL_LH_retrieve(prog,&f)" identifier = (call_expression "OPENSSL_LH_retrieve(prog,&f)" identifier (argument_list "(prog,&f)" ( identifier , (pointer_expression "&f" & identifier) )))) ;) (if_statement "if (lVar6 == 0) {\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = do_cmd(prog,argc + -1,argv + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }" { (if_statement "if (argc == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }" if (parenthesized_expression "(argc == 1)" ( (binary_expression "argc == 1" identifier == number_literal) )) (compound_statement "{\n        do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );\n      }" { (do_statement "do {\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        } while( true );" do (compound_statement "{\n          iVar2 = 0x400;\n          pcVar4 = buf;\n          pcVar7 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);\n          iVar2 = chopup_args(&arg,buf);\n          if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = do_cmd(prog,arg.argc,arg.argv);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }\n          BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);\n          BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);\n        }" { (expression_statement "iVar2 = 0x400;" (assignment_expression "iVar2 = 0x400" identifier = number_literal) ;) (expression_statement "pcVar4 = buf;" (assignment_expression "pcVar4 = buf" identifier = identifier) ;) (expression_statement "pcVar7 = "OpenSSL> ";" (assignment_expression "pcVar7 = "OpenSSL> "" identifier = (string_literal ""OpenSSL> "" " string_content ")) ;) (do_statement "do {\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          } while (0 < iVar2);" do (compound_statement "{\n            *pcVar4 = '\0';\n            fputs(pcVar7,stdout);\n            fflush(stdout);\n            pcVar7 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar6 = -1;\n            pcVar7 = pcVar4;\n            do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar6 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar6 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar7 = "> ";\n          }" { (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "fputs(pcVar7,stdout);" (call_expression "fputs(pcVar7,stdout)" identifier (argument_list "(pcVar7,stdout)" ( identifier , identifier ))) ;) (expression_statement "fflush(stdout);" (call_expression "fflush(stdout)" identifier (argument_list "(stdout)" ( identifier ))) ;) (expression_statement "pcVar7 = fgets(pcVar4,iVar2,stdin);" (assignment_expression "pcVar7 = fgets(pcVar4,iVar2,stdin)" identifier = (call_expression "fgets(pcVar4,iVar2,stdin)" identifier (argument_list "(pcVar4,iVar2,stdin)" ( identifier , identifier , identifier )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (if_statement "if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" if (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (expression_statement "lVar6 = -1;" (assignment_expression "lVar6 = -1" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar4;" (assignment_expression "pcVar7 = pcVar4" identifier = identifier) ;) (do_statement "do {\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (lVar6 == 0) break;\n              lVar6 = lVar6 + -1;\n              cVar1 = *pcVar7;\n              pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;\n            }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar3 = ~(uint)lVar6 - 1;" (assignment_expression "iVar3 = ~(uint)lVar6 - 1" identifier = (binary_expression "~(uint)lVar6 - 1" (unary_expression "~(uint)lVar6" ~ (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (if_statement "if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;" if (parenthesized_expression "((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\'))" ( (binary_expression "(iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')" (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) || (parenthesized_expression "(pcVar4[(long)iVar3 + -2] != '\\')" ( (binary_expression "pcVar4[(long)iVar3 + -2] != '\\'" (subscript_expression "pcVar4[(long)iVar3 + -2]" identifier [ (binary_expression "(long)iVar3 + -2" (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) != (char_literal "'\\'" ' escape_sequence ')) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = ~(uint)lVar6 - 3;" (assignment_expression "iVar3 = ~(uint)lVar6 - 3" identifier = (binary_expression "~(uint)lVar6 - 3" (unary_expression "~(uint)lVar6" ~ (cast_expression "(uint)lVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (expression_statement "pcVar4 = pcVar4 + iVar3;" (assignment_expression "pcVar4 = pcVar4 + iVar3" identifier = (binary_expression "pcVar4 + iVar3" identifier + identifier)) ;) (expression_statement "iVar2 = iVar2 - iVar3;" (assignment_expression "iVar2 = iVar2 - iVar3" identifier = (binary_expression "iVar2 - iVar3" identifier - identifier)) ;) (expression_statement "pcVar7 = "> ";" (assignment_expression "pcVar7 = "> "" identifier = (string_literal ""> "" " string_content ")) ;) }) while (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) ;) (expression_statement "iVar2 = chopup_args(&arg,buf);" (assignment_expression "iVar2 = chopup_args(&arg,buf)" identifier = (call_expression "chopup_args(&arg,buf)" identifier (argument_list "(&arg,buf)" ( (pointer_expression "&arg" & identifier) , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" { (expression_statement "BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n");" (call_expression "BIO_printf((BIO *)bio_err,"Can\'t parse (no memory?)\n")" identifier (argument_list "((BIO *)bio_err,"Can\'t parse (no memory?)\n")" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""Can\'t parse (no memory?)\n"" " string_content escape_sequence string_content escape_sequence ") ))) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (expression_statement "iVar2 = do_cmd(prog,arg.argc,arg.argv);" (assignment_expression "iVar2 = do_cmd(prog,arg.argc,arg.argv)" identifier = (call_expression "do_cmd(prog,arg.argc,arg.argv)" identifier (argument_list "(prog,arg.argc,arg.argv)" ( identifier , (field_expression "arg.argc" identifier . field_identifier) , (field_expression "arg.argv" identifier . field_identifier) )))) ;) (if_statement "if (iVar2 == -1) goto LAB_0014cb75;" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0014cb75;" goto statement_identifier ;)) (if_statement "if (iVar2 != 0) {\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);\n          }" { (expression_statement "BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv);" (call_expression "BIO_printf((BIO *)bio_err,"error in %s\n",*arg.argv)" identifier (argument_list "((BIO *)bio_err,"error in %s\n",*arg.argv)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""error in %s\n"" " string_content escape_sequence ") , (pointer_expression "*arg.argv" * (field_expression "arg.argv" identifier . field_identifier)) ))) ;) })) (expression_statement "BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl((BIO *)bio_out,0xb,0,(void *)0x0)" identifier (argument_list "((BIO *)bio_out,0xb,0,(void *)0x0)" ( (cast_expression "(BIO *)bio_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl((BIO *)bio_err,0xb,0,(void *)0x0)" identifier (argument_list "((BIO *)bio_err,0xb,0,(void *)0x0)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "iVar2 = do_cmd(prog,argc + -1,argv + 1);" (assignment_expression "iVar2 = do_cmd(prog,argc + -1,argv + 1)" identifier = (call_expression "do_cmd(prog,argc + -1,argv + 1)" identifier (argument_list "(prog,argc + -1,argv + 1)" ( identifier , (binary_expression "argc + -1" identifier + number_literal) , (binary_expression "argv + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar2 < 0) {\n        iVar2 = 0;\n      }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }" else (compound_statement "{\n      *argv = pcVar4;\n      iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);\n    }" { (expression_statement "*argv = pcVar4;" (assignment_expression "*argv = pcVar4" (pointer_expression "*argv" * identifier) = identifier) ;) (expression_statement "iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv);" (assignment_expression "iVar2 = (**(code **)(lVar6 + 0x10))(argc,argv)" identifier = (call_expression "(**(code **)(lVar6 + 0x10))(argc,argv)" (parenthesized_expression "(**(code **)(lVar6 + 0x10))" ( (pointer_expression "**(code **)(lVar6 + 0x10)" * (pointer_expression "*(code **)(lVar6 + 0x10)" * (cast_expression "(code **)(lVar6 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) )) (argument_list "(argc,argv)" ( identifier , identifier )))) ;) }))) }))) (labeled_statement "LAB_0014c954:\n  CRYPTO_free((void *)0x0);" statement_identifier : (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" identifier (argument_list "((void *)0x0)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (expression_statement "CRYPTO_free(default_config_file);" (call_expression "CRYPTO_free(default_config_file)" identifier (argument_list "(default_config_file)" ( identifier ))) ;) (expression_statement "OPENSSL_LH_free(prog);" (call_expression "OPENSSL_LH_free(prog)" identifier (argument_list "(prog)" ( identifier ))) ;) (expression_statement "CRYPTO_free(arg.argv);" (call_expression "CRYPTO_free(arg.argv)" identifier (argument_list "(arg.argv)" ( (field_expression "arg.argv" identifier . field_identifier) ))) ;) (expression_statement "app_RAND_write();" (call_expression "app_RAND_write()" identifier (argument_list "()" ( ))) ;) (expression_statement "BIO_free((BIO *)bio_in);" (call_expression "BIO_free((BIO *)bio_in)" identifier (argument_list "((BIO *)bio_in)" ( (cast_expression "(BIO *)bio_in" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "BIO_free_all((BIO *)bio_out);" (call_expression "BIO_free_all((BIO *)bio_out)" identifier (argument_list "((BIO *)bio_out)" ( (cast_expression "(BIO *)bio_out" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "destroy_ui_method();" (call_expression "destroy_ui_method()" identifier (argument_list "()" ( ))) ;) (expression_statement "destroy_prefix_method();" (call_expression "destroy_prefix_method()" identifier (argument_list "()" ( ))) ;) (expression_statement "BIO_free((BIO *)bio_err);" (call_expression "BIO_free((BIO *)bio_err)" identifier (argument_list "((BIO *)bio_err)" ( (cast_expression "(BIO *)bio_err" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) comment (expression_statement "exit(iVar2);" (call_expression "exit(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (labeled_statement "LAB_0014cb75:\n  iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })))
(translation_unit "undefined8 FUN_0014c720(int param_1,undefined8 *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    \n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}\n\n" (function_definition "undefined8 FUN_0014c720(int param_1,undefined8 *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    \n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" type_identifier (function_declarator "FUN_0014c720(int param_1,undefined8 *param_2)" identifier (parameter_list "(int param_1,undefined8 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    \n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "undefined4 local_478;" type_identifier identifier ;) (declaration "undefined4 local_474;" type_identifier identifier ;) (declaration "undefined8 *local_470;" type_identifier (pointer_declarator "*local_470" * identifier) ;) (declaration "undefined1 local_468 [8];" type_identifier (array_declarator "local_468 [8]" identifier [ number_literal ]) ;) (declaration "undefined8 local_460;" type_identifier identifier ;) (declaration "char local_448 [1032];" primitive_type (array_declarator "local_448 [1032]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_470 = (undefined8 *)0x0;" (assignment_expression "local_470 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_478 = 0;" (assignment_expression "local_478 = 0" identifier = number_literal) ;) (expression_statement "pcVar4 = getenv("OPENSSL_CONF");" (assignment_expression "pcVar4 = getenv("OPENSSL_CONF")" identifier = (call_expression "getenv("OPENSSL_CONF")" identifier (argument_list "("OPENSSL_CONF")" ( (string_literal ""OPENSSL_CONF"" " string_content ") )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }" { (expression_statement "pcVar8 = X509_get_default_cert_area();" (assignment_expression "pcVar8 = X509_get_default_cert_area()" identifier = (call_expression "X509_get_default_cert_area()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar4 = pcVar8;" (assignment_expression "pcVar4 = pcVar8" identifier = identifier) ;) (do_statement "do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pcVar4 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar4 + (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 "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");" (assignment_expression "pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" identifier = (cast_expression "(char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" identifier (argument_list "(~uVar10 + 0xc,"config filename buffer")" ( (binary_expression "~uVar10 + 0xc" (unary_expression "~uVar10" ~ identifier) + number_literal) , (string_literal ""config filename buffer"" " string_content ") ))))) ;) (expression_statement "strcpy(pcVar4,pcVar8);" (call_expression "strcpy(pcVar4,pcVar8)" identifier (argument_list "(pcVar4,pcVar8)" ( identifier , identifier ))) ;) (expression_statement "strcat(pcVar4,"/");" (call_expression "strcat(pcVar4,"/")" identifier (argument_list "(pcVar4,"/")" ( identifier , (string_literal ""/"" " string_content ") ))) ;) (expression_statement "strcat(pcVar4,"openssl.cnf");" (call_expression "strcat(pcVar4,"openssl.cnf")" identifier (argument_list "(pcVar4,"openssl.cnf")" ( identifier , (string_literal ""openssl.cnf"" " string_content ") ))) ;) }) (else_clause "else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" else (compound_statement "{\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" { (expression_statement "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);" (assignment_expression "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" identifier = (call_expression "CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" identifier (argument_list "(pcVar4,"../apps/openssl.c",0x69)" ( identifier , (string_literal ""../apps/openssl.c"" " string_content ") , number_literal )))) ;) }))) (expression_statement "DAT_001b76c8 = pcVar4;" (assignment_expression "DAT_001b76c8 = pcVar4" identifier = identifier) ;) (expression_statement "DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);" (assignment_expression "DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001)" identifier = (cast_expression "(BIO *)FUN_0017d433(0x8001)" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d433(0x8001)" identifier (argument_list "(0x8001)" ( number_literal ))))) ;) (expression_statement "DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);" (assignment_expression "DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001)" identifier = (cast_expression "(BIO *)FUN_0017d84a(0x8001)" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017d84a(0x8001)" identifier (argument_list "(0x8001)" ( number_literal ))))) ;) (expression_statement "DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);" (assignment_expression "DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001)" identifier = (cast_expression "(BIO *)FUN_0017da47(0x8001)" ( (type_descriptor "BIO *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017da47(0x8001)" identifier (argument_list "(0x8001)" ( number_literal ))))) ;) (expression_statement "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");" (assignment_expression "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY")" identifier = (cast_expression "(byte *)getenv("OPENSSL_DEBUG_MEMORY")" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "getenv("OPENSSL_DEBUG_MEMORY")" identifier (argument_list "("OPENSSL_DEBUG_MEMORY")" ( (string_literal ""OPENSSL_DEBUG_MEMORY"" " string_content ") ))))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar13 = pbVar5 == (byte *)0x0;" (assignment_expression "bVar13 = pbVar5 == (byte *)0x0" identifier = (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" { (expression_statement "lVar9 = 3;" (assignment_expression "lVar9 = 3" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)0x18bcf7;" (assignment_expression "pbVar11 = (byte *)0x18bcf7" identifier = (cast_expression "(byte *)0x18bcf7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);" do (compound_statement "{\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar5 < *pbVar11;" (assignment_expression "bVar12 = *pbVar5 < *pbVar11" identifier = (binary_expression "*pbVar5 < *pbVar11" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar5 == *pbVar11;" (assignment_expression "bVar13 = *pbVar5 == *pbVar11" identifier = (binary_expression "*pbVar5 == *pbVar11" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar5 + (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)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\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      CRYPTO_set_mem_debug(1);\n    }" { (expression_statement "CRYPTO_set_mem_debug(1);" (call_expression "CRYPTO_set_mem_debug(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) })) (expression_statement "CRYPTO_mem_ctrl(1);" (call_expression "CRYPTO_mem_ctrl(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pcVar4 = getenv("OPENSSL_FIPS");" (assignment_expression "pcVar4 = getenv("OPENSSL_FIPS")" identifier = (call_expression "getenv("OPENSSL_FIPS")" identifier (argument_list "("OPENSSL_FIPS")" ( (string_literal ""OPENSSL_FIPS"" " string_content ") )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }" { (expression_statement "BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");" (call_expression "BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n")" identifier (argument_list "(DAT_001b76b0,"FIPS mode not supported.\n")" ( identifier , (string_literal ""FIPS mode not supported.\n"" " string_content escape_sequence ") ))) ;) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n      __stack_chk_fail();\n    }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 1;" return number_literal ;) })) (expression_statement "signal(0xd,(__sighandler_t)0x1);" (call_expression "signal(0xd,(__sighandler_t)0x1)" identifier (argument_list "(0xd,(__sighandler_t)0x1)" ( number_literal , (cast_expression "(__sighandler_t)0x1" ( (type_descriptor "__sighandler_t" type_identifier) ) number_literal) ))) ;) (expression_statement "iVar2 = OPENSSL_init_ssl(0x7640,0);" (assignment_expression "iVar2 = OPENSSL_init_ssl(0x7640,0)" identifier = (call_expression "OPENSSL_init_ssl(0x7640,0)" identifier (argument_list "(0x7640,0)" ( number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }" { (expression_statement "BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");" (call_expression "BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" identifier (argument_list "(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" ( identifier , (string_literal ""FATAL: Startup failure (dev note: apps_startup() failed)\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 ))) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" else (compound_statement "{\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" { (expression_statement "FUN_0017b0f7();" (call_expression "FUN_0017b0f7()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar6 = FUN_0014bbff();" (assignment_expression "uVar6 = FUN_0014bbff()" identifier = (call_expression "FUN_0014bbff()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar7 = FUN_0017f4f3(*param_2);" (assignment_expression "uVar7 = FUN_0017f4f3(*param_2)" identifier = (call_expression "FUN_0017f4f3(*param_2)" identifier (argument_list "(*param_2)" ( (pointer_expression "*param_2" * identifier) )))) ;) (expression_statement "local_460 = uVar7;" (assignment_expression "local_460 = uVar7" identifier = identifier) ;) (expression_statement "lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);" (assignment_expression "lVar9 = OPENSSL_LH_retrieve(uVar6,local_468)" identifier = (call_expression "OPENSSL_LH_retrieve(uVar6,local_468)" identifier (argument_list "(uVar6,local_468)" ( identifier , identifier )))) ;) (if_statement "if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }" { (if_statement "if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }" if (parenthesized_expression "(param_1 == 1)" ( (binary_expression "param_1 == 1" identifier == number_literal) )) (compound_statement "{\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }" { (do_statement "do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );" do (compound_statement "{\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        }" { (expression_statement "iVar2 = 0x400;" (assignment_expression "iVar2 = 0x400" identifier = number_literal) ;) (expression_statement "pcVar4 = local_448;" (assignment_expression "pcVar4 = local_448" identifier = identifier) ;) (expression_statement "pcVar8 = "OpenSSL> ";" (assignment_expression "pcVar8 = "OpenSSL> "" identifier = (string_literal ""OpenSSL> "" " string_content ")) ;) (do_statement "do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);" do (compound_statement "{\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          }" { (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "fputs(pcVar8,stdout);" (call_expression "fputs(pcVar8,stdout)" identifier (argument_list "(pcVar8,stdout)" ( identifier , identifier ))) ;) (expression_statement "fflush(stdout);" (call_expression "fflush(stdout)" identifier (argument_list "(stdout)" ( identifier ))) ;) (expression_statement "pcVar8 = fgets(pcVar4,iVar2,stdin);" (assignment_expression "pcVar8 = fgets(pcVar4,iVar2,stdin)" identifier = (call_expression "fgets(pcVar4,iVar2,stdin)" identifier (argument_list "(pcVar4,iVar2,stdin)" ( identifier , identifier , identifier )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (if_statement "if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" if (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (expression_statement "lVar9 = -1;" (assignment_expression "lVar9 = -1" identifier = number_literal) ;) (expression_statement "pcVar8 = pcVar4;" (assignment_expression "pcVar8 = pcVar4" identifier = identifier) ;) (do_statement "do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar8 + (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 "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar3 = ~(uint)lVar9 - 1;" (assignment_expression "iVar3 = ~(uint)lVar9 - 1" identifier = (binary_expression "~(uint)lVar9 - 1" (unary_expression "~(uint)lVar9" ~ (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (if_statement "if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;" if (parenthesized_expression "((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\'))" ( (binary_expression "(iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')" (parenthesized_expression "(iVar3 < 2)" ( (binary_expression "iVar3 < 2" identifier < number_literal) )) || (parenthesized_expression "(pcVar4[(long)iVar3 + -2] != '\\')" ( (binary_expression "pcVar4[(long)iVar3 + -2] != '\\'" (subscript_expression "pcVar4[(long)iVar3 + -2]" identifier [ (binary_expression "(long)iVar3 + -2" (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ]) != (char_literal "'\\'" ' escape_sequence ')) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = ~(uint)lVar9 - 3;" (assignment_expression "iVar3 = ~(uint)lVar9 - 3" identifier = (binary_expression "~(uint)lVar9 - 3" (unary_expression "~(uint)lVar9" ~ (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (expression_statement "pcVar4 = pcVar4 + iVar3;" (assignment_expression "pcVar4 = pcVar4 + iVar3" identifier = (binary_expression "pcVar4 + iVar3" identifier + identifier)) ;) (expression_statement "iVar2 = iVar2 - iVar3;" (assignment_expression "iVar2 = iVar2 - iVar3" identifier = (binary_expression "iVar2 - iVar3" identifier - identifier)) ;) (expression_statement "pcVar8 = "> ";" (assignment_expression "pcVar8 = "> "" identifier = (string_literal ""> "" " string_content ")) ;) }) while (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) ;) (expression_statement "iVar2 = FUN_0017b3fc(&local_478,local_448);" (assignment_expression "iVar2 = FUN_0017b3fc(&local_478,local_448)" identifier = (call_expression "FUN_0017b3fc(&local_478,local_448)" identifier (argument_list "(&local_478,local_448)" ( (pointer_expression "&local_478" & identifier) , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" { (expression_statement "BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");" (call_expression "BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n")" identifier (argument_list "(DAT_001b76b0,"Can\'t parse (no memory?)\n")" ( identifier , (string_literal ""Can\'t parse (no memory?)\n"" " string_content escape_sequence string_content escape_sequence ") ))) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })) (expression_statement "iVar2 = FUN_0014bcba(uVar6,local_474,local_470);" (assignment_expression "iVar2 = FUN_0014bcba(uVar6,local_474,local_470)" identifier = (call_expression "FUN_0014bcba(uVar6,local_474,local_470)" identifier (argument_list "(uVar6,local_474,local_470)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == -1) goto LAB_0014cb75;" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0014cb75;" goto statement_identifier ;)) (if_statement "if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }" { (expression_statement "BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);" (call_expression "BIO_printf(DAT_001b76b0,"error in %s\n",*local_470)" identifier (argument_list "(DAT_001b76b0,"error in %s\n",*local_470)" ( identifier , (string_literal ""error in %s\n"" " string_content escape_sequence ") , (pointer_expression "*local_470" * identifier) ))) ;) })) (expression_statement "BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0)" identifier (argument_list "(DAT_001b76b8,0xb,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0)" identifier (argument_list "(DAT_001b76b0,0xb,0,(void *)0x0)" ( identifier , number_literal , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);" (assignment_expression "iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1)" identifier = (call_expression "FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1)" identifier (argument_list "(uVar6,param_1 + -1,param_2 + 1)" ( identifier , (binary_expression "param_1 + -1" identifier + number_literal) , (binary_expression "param_2 + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar2 < 0) {\n        iVar2 = 0;\n      }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" else (compound_statement "{\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" { (expression_statement "*param_2 = uVar7;" (assignment_expression "*param_2 = uVar7" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);" (assignment_expression "iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2)" identifier = (call_expression "(**(code **)(lVar9 + 0x10))(param_1,param_2)" (parenthesized_expression "(**(code **)(lVar9 + 0x10))" ( (pointer_expression "**(code **)(lVar9 + 0x10)" * (pointer_expression "*(code **)(lVar9 + 0x10)" * (cast_expression "(code **)(lVar9 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) }))) }))) (labeled_statement "LAB_0014c954:\n  CRYPTO_free((void *)0x0);" statement_identifier : (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" identifier (argument_list "((void *)0x0)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (expression_statement "CRYPTO_free(DAT_001b76c8);" (call_expression "CRYPTO_free(DAT_001b76c8)" identifier (argument_list "(DAT_001b76c8)" ( identifier ))) ;) (expression_statement "OPENSSL_LH_free(uVar6);" (call_expression "OPENSSL_LH_free(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "CRYPTO_free(local_470);" (call_expression "CRYPTO_free(local_470)" identifier (argument_list "(local_470)" ( identifier ))) ;) (expression_statement "FUN_0017a6a1();" (call_expression "FUN_0017a6a1()" identifier (argument_list "()" ( ))) ;) (expression_statement "BIO_free(DAT_001b76c0);" (call_expression "BIO_free(DAT_001b76c0)" identifier (argument_list "(DAT_001b76c0)" ( identifier ))) ;) (expression_statement "BIO_free_all(DAT_001b76b8);" (call_expression "BIO_free_all(DAT_001b76b8)" identifier (argument_list "(DAT_001b76b8)" ( identifier ))) ;) (expression_statement "FUN_0017b178();" (call_expression "FUN_0017b178()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0017da6f();" (call_expression "FUN_0017da6f()" identifier (argument_list "()" ( ))) ;) (expression_statement "BIO_free(DAT_001b76b0);" (call_expression "BIO_free(DAT_001b76b0)" identifier (argument_list "(DAT_001b76b0)" ( identifier ))) ;) (expression_statement "exit(iVar2);" (call_expression "exit(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (labeled_statement "LAB_0014cb75:\n  iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_0014c954;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (unary_expression ~ IDENT) + LIT) , (string_literal " string_content ") ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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 = (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)) ;) }) while (parenthesized_expression ( IDENT )) ;) (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 ( LIT ))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (cast_expression ( (type_descriptor TYPE) ) LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , 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 ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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 = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (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 = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ]) != (char_literal ' escape_sequence ')) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 string_content escape_sequence ") ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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 ") , (pointer_expression * IDENT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ))) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined8 FUN_0014c720(int param_1,undefined8 *param_2)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    \n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" (type_identifier "undefined8") (function_declarator "FUN_0014c720(int param_1,undefined8 *param_2)" (identifier "FUN_0014c720") (parameter_list "(int param_1,undefined8 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  byte *pbVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  char *pcVar8;\n  long lVar9;\n  ulong uVar10;\n  byte *pbVar11;\n  long in_FS_OFFSET;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  undefined4 local_478;\n  undefined4 local_474;\n  undefined8 *local_470;\n  undefined1 local_468 [8];\n  undefined8 local_460;\n  char local_448 [1032];\n  long local_40;\n  \n  bVar14 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_470 = (undefined8 *)0x0;\n  local_478 = 0;\n  pcVar4 = getenv("OPENSSL_CONF");\n  if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }\n  DAT_001b76c8 = pcVar4;\n  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);\n  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);\n  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);\n  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");\n  bVar12 = false;\n  bVar13 = pbVar5 == (byte *)0x0;\n  if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }\n  CRYPTO_mem_ctrl(1);\n  pcVar4 = getenv("OPENSSL_FIPS");\n  if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }\n  signal(0xd,(__sighandler_t)0x1);\n  iVar2 = OPENSSL_init_ssl(0x7640,0);\n  if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }\nLAB_0014c954:\n  CRYPTO_free((void *)0x0);\n  CRYPTO_free(DAT_001b76c8);\n  OPENSSL_LH_free(uVar6);\n  CRYPTO_free(local_470);\n  FUN_0017a6a1();\n  BIO_free(DAT_001b76c0);\n  BIO_free_all(DAT_001b76b8);\n  FUN_0017b178();\n  FUN_0017da6f();\n  BIO_free(DAT_001b76b0);\n                    \n  exit(iVar2);\nLAB_0014cb75:\n  iVar2 = 0;\n  goto LAB_0014c954;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (declaration "undefined4 local_478;" (type_identifier "undefined4") (identifier "local_478") (; ";")) (declaration "undefined4 local_474;" (type_identifier "undefined4") (identifier "local_474") (; ";")) (declaration "undefined8 *local_470;" (type_identifier "undefined8") (pointer_declarator "*local_470" (* "*") (identifier "local_470")) (; ";")) (declaration "undefined1 local_468 [8];" (type_identifier "undefined1") (array_declarator "local_468 [8]" (identifier "local_468") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined8 local_460;" (type_identifier "undefined8") (identifier "local_460") (; ";")) (declaration "char local_448 [1032];" (primitive_type "char") (array_declarator "local_448 [1032]" (identifier "local_448") ([ "[") (number_literal "1032") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" (identifier "bVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_470 = (undefined8 *)0x0;" (assignment_expression "local_470 = (undefined8 *)0x0" (identifier "local_470") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_478 = 0;" (assignment_expression "local_478 = 0" (identifier "local_478") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar4 = getenv("OPENSSL_CONF");" (assignment_expression "pcVar4 = getenv("OPENSSL_CONF")" (identifier "pcVar4") (= "=") (call_expression "getenv("OPENSSL_CONF")" (identifier "getenv") (argument_list "("OPENSSL_CONF")" (( "(") (string_literal ""OPENSSL_CONF"" (" """) (string_content "OPENSSL_CONF") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }\n  else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" (if "if") (parenthesized_expression "(pcVar4 == (char *)0x0)" (( "(") (binary_expression "pcVar4 == (char *)0x0" (identifier "pcVar4") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar8 = X509_get_default_cert_area();\n    uVar10 = 0xffffffffffffffff;\n    pcVar4 = pcVar8;\n    do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");\n    strcpy(pcVar4,pcVar8);\n    strcat(pcVar4,"/");\n    strcat(pcVar4,"openssl.cnf");\n  }" ({ "{") (expression_statement "pcVar8 = X509_get_default_cert_area();" (assignment_expression "pcVar8 = X509_get_default_cert_area()" (identifier "pcVar8") (= "=") (call_expression "X509_get_default_cert_area()" (identifier "X509_get_default_cert_area") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" (identifier "uVar10") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar4 = pcVar8;" (assignment_expression "pcVar4 = pcVar8" (identifier "pcVar4") (= "=") (identifier "pcVar8")) (; ";")) (do_statement "do {\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (uVar10 == 0) break;\n      uVar10 = uVar10 - 1;\n      cVar1 = *pcVar4;\n      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;\n    }" ({ "{") (if_statement "if (uVar10 == 0) break;" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" (identifier "cVar1") (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar4 + (ulong)bVar14 * -2" (identifier "pcVar4") (+ "+") (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 "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");" (assignment_expression "pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b399(~uVar10 + 0xc,"config filename buffer")" (identifier "FUN_0017b399") (argument_list "(~uVar10 + 0xc,"config filename buffer")" (( "(") (binary_expression "~uVar10 + 0xc" (unary_expression "~uVar10" (~ "~") (identifier "uVar10")) (+ "+") (number_literal "0xc")) (, ",") (string_literal ""config filename buffer"" (" """) (string_content "config filename buffer") (" """)) () ")"))))) (; ";")) (expression_statement "strcpy(pcVar4,pcVar8);" (call_expression "strcpy(pcVar4,pcVar8)" (identifier "strcpy") (argument_list "(pcVar4,pcVar8)" (( "(") (identifier "pcVar4") (, ",") (identifier "pcVar8") () ")"))) (; ";")) (expression_statement "strcat(pcVar4,"/");" (call_expression "strcat(pcVar4,"/")" (identifier "strcat") (argument_list "(pcVar4,"/")" (( "(") (identifier "pcVar4") (, ",") (string_literal ""/"" (" """) (string_content "/") (" """)) () ")"))) (; ";")) (expression_statement "strcat(pcVar4,"openssl.cnf");" (call_expression "strcat(pcVar4,"openssl.cnf")" (identifier "strcat") (argument_list "(pcVar4,"openssl.cnf")" (( "(") (identifier "pcVar4") (, ",") (string_literal ""openssl.cnf"" (" """) (string_content "openssl.cnf") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else {\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" (else "else") (compound_statement "{\n    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);\n  }" ({ "{") (expression_statement "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);" (assignment_expression "pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" (identifier "pcVar4") (= "=") (call_expression "CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69)" (identifier "CRYPTO_strdup") (argument_list "(pcVar4,"../apps/openssl.c",0x69)" (( "(") (identifier "pcVar4") (, ",") (string_literal ""../apps/openssl.c"" (" """) (string_content "../apps/openssl.c") (" """)) (, ",") (number_literal "0x69") () ")")))) (; ";")) (} "}")))) (expression_statement "DAT_001b76c8 = pcVar4;" (assignment_expression "DAT_001b76c8 = pcVar4" (identifier "DAT_001b76c8") (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);" (assignment_expression "DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001)" (identifier "DAT_001b76c0") (= "=") (cast_expression "(BIO *)FUN_0017d433(0x8001)" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017d433(0x8001)" (identifier "FUN_0017d433") (argument_list "(0x8001)" (( "(") (number_literal "0x8001") () ")"))))) (; ";")) (expression_statement "DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);" (assignment_expression "DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001)" (identifier "DAT_001b76b8") (= "=") (cast_expression "(BIO *)FUN_0017d84a(0x8001)" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017d84a(0x8001)" (identifier "FUN_0017d84a") (argument_list "(0x8001)" (( "(") (number_literal "0x8001") () ")"))))) (; ";")) (expression_statement "DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);" (assignment_expression "DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001)" (identifier "DAT_001b76b0") (= "=") (cast_expression "(BIO *)FUN_0017da47(0x8001)" (( "(") (type_descriptor "BIO *" (type_identifier "BIO") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017da47(0x8001)" (identifier "FUN_0017da47") (argument_list "(0x8001)" (( "(") (number_literal "0x8001") () ")"))))) (; ";")) (expression_statement "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");" (assignment_expression "pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY")" (identifier "pbVar5") (= "=") (cast_expression "(byte *)getenv("OPENSSL_DEBUG_MEMORY")" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "getenv("OPENSSL_DEBUG_MEMORY")" (identifier "getenv") (argument_list "("OPENSSL_DEBUG_MEMORY")" (( "(") (string_literal ""OPENSSL_DEBUG_MEMORY"" (" """) (string_content "OPENSSL_DEBUG_MEMORY") (" """)) () ")"))))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = pbVar5 == (byte *)0x0;" (assignment_expression "bVar13 = pbVar5 == (byte *)0x0" (identifier "bVar13") (= "=") (binary_expression "pbVar5 == (byte *)0x0" (identifier "pbVar5") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar13) {\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (compound_statement "{\n    lVar9 = 3;\n    pbVar11 = (byte *)0x18bcf7;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\n    }\n  }" ({ "{") (expression_statement "lVar9 = 3;" (assignment_expression "lVar9 = 3" (identifier "lVar9") (= "=") (number_literal "3")) (; ";")) (expression_statement "pbVar11 = (byte *)0x18bcf7;" (assignment_expression "pbVar11 = (byte *)0x18bcf7" (identifier "pbVar11") (= "=") (cast_expression "(byte *)0x18bcf7" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x18bcf7"))) (; ";")) (do_statement "do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    } while (bVar13);" (do "do") (compound_statement "{\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar12 = *pbVar5 < *pbVar11;\n      bVar13 = *pbVar5 == *pbVar11;\n      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;\n    }" ({ "{") (if_statement "if (lVar9 == 0) break;" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar12 = *pbVar5 < *pbVar11;" (assignment_expression "bVar12 = *pbVar5 < *pbVar11" (identifier "bVar12") (= "=") (binary_expression "*pbVar5 < *pbVar11" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar13 = *pbVar5 == *pbVar11;" (assignment_expression "bVar13 = *pbVar5 == *pbVar11" (identifier "bVar13") (= "=") (binary_expression "*pbVar5 == *pbVar11" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar14 * -2" (identifier "pbVar5") (+ "+") (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"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n      CRYPTO_set_mem_debug(1);\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      CRYPTO_set_mem_debug(1);\n    }" ({ "{") (expression_statement "CRYPTO_set_mem_debug(1);" (call_expression "CRYPTO_set_mem_debug(1)" (identifier "CRYPTO_set_mem_debug") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "CRYPTO_mem_ctrl(1);" (call_expression "CRYPTO_mem_ctrl(1)" (identifier "CRYPTO_mem_ctrl") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "pcVar4 = getenv("OPENSSL_FIPS");" (assignment_expression "pcVar4 = getenv("OPENSSL_FIPS")" (identifier "pcVar4") (= "=") (call_expression "getenv("OPENSSL_FIPS")" (identifier "getenv") (argument_list "("OPENSSL_FIPS")" (( "(") (string_literal ""OPENSSL_FIPS"" (" """) (string_content "OPENSSL_FIPS") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");\n    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }\n    return 1;\n  }" ({ "{") (expression_statement "BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");" (call_expression "BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n")" (identifier "BIO_printf") (argument_list "(DAT_001b76b0,"FIPS mode not supported.\n")" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""FIPS mode not supported.\n"" (" """) (string_content "FIPS mode not supported.") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n      __stack_chk_fail();\n    }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n      __stack_chk_fail();\n    }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "signal(0xd,(__sighandler_t)0x1);" (call_expression "signal(0xd,(__sighandler_t)0x1)" (identifier "signal") (argument_list "(0xd,(__sighandler_t)0x1)" (( "(") (number_literal "0xd") (, ",") (cast_expression "(__sighandler_t)0x1" (( "(") (type_descriptor "__sighandler_t" (type_identifier "__sighandler_t")) () ")") (number_literal "0x1")) () ")"))) (; ";")) (expression_statement "iVar2 = OPENSSL_init_ssl(0x7640,0);" (assignment_expression "iVar2 = OPENSSL_init_ssl(0x7640,0)" (identifier "iVar2") (= "=") (call_expression "OPENSSL_init_ssl(0x7640,0)" (identifier "OPENSSL_init_ssl") (argument_list "(0x7640,0)" (( "(") (number_literal "0x7640") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }\n  else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");\n    ERR_print_errors(DAT_001b76b0);\n    iVar2 = 1;\n    uVar6 = 0;\n  }" ({ "{") (expression_statement "BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");" (call_expression "BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" (identifier "BIO_printf") (argument_list "(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n")" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""FATAL: Startup failure (dev note: apps_startup() failed)\n"" (" """) (string_content "FATAL: Startup failure (dev note: apps_startup() failed)") (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") () ")"))) (; ";")) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" (else "else") (compound_statement "{\n    FUN_0017b0f7();\n    uVar6 = FUN_0014bbff();\n    uVar7 = FUN_0017f4f3(*param_2);\n    local_460 = uVar7;\n    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);\n    if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }\n  }" ({ "{") (expression_statement "FUN_0017b0f7();" (call_expression "FUN_0017b0f7()" (identifier "FUN_0017b0f7") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar6 = FUN_0014bbff();" (assignment_expression "uVar6 = FUN_0014bbff()" (identifier "uVar6") (= "=") (call_expression "FUN_0014bbff()" (identifier "FUN_0014bbff") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_0017f4f3(*param_2);" (assignment_expression "uVar7 = FUN_0017f4f3(*param_2)" (identifier "uVar7") (= "=") (call_expression "FUN_0017f4f3(*param_2)" (identifier "FUN_0017f4f3") (argument_list "(*param_2)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "local_460 = uVar7;" (assignment_expression "local_460 = uVar7" (identifier "local_460") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);" (assignment_expression "lVar9 = OPENSSL_LH_retrieve(uVar6,local_468)" (identifier "lVar9") (= "=") (call_expression "OPENSSL_LH_retrieve(uVar6,local_468)" (identifier "OPENSSL_LH_retrieve") (argument_list "(uVar6,local_468)" (( "(") (identifier "uVar6") (, ",") (identifier "local_468") () ")")))) (; ";")) (if_statement "if (lVar9 == 0) {\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }\n    else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }\n      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);\n      if (iVar2 < 0) {\n        iVar2 = 0;\n      }\n    }" ({ "{") (if_statement "if (param_1 == 1) {\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }" (if "if") (parenthesized_expression "(param_1 == 1)" (( "(") (binary_expression "param_1 == 1" (identifier "param_1") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );\n      }" ({ "{") (do_statement "do {\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        } while( true );" (do "do") (compound_statement "{\n          iVar2 = 0x400;\n          pcVar4 = local_448;\n          pcVar8 = "OpenSSL> ";\n          do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);\n          iVar2 = FUN_0017b3fc(&local_478,local_448);\n          if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }\n          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);\n          if (iVar2 == -1) goto LAB_0014cb75;\n          if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }\n          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);\n          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);\n        }" ({ "{") (expression_statement "iVar2 = 0x400;" (assignment_expression "iVar2 = 0x400" (identifier "iVar2") (= "=") (number_literal "0x400")) (; ";")) (expression_statement "pcVar4 = local_448;" (assignment_expression "pcVar4 = local_448" (identifier "pcVar4") (= "=") (identifier "local_448")) (; ";")) (expression_statement "pcVar8 = "OpenSSL> ";" (assignment_expression "pcVar8 = "OpenSSL> "" (identifier "pcVar8") (= "=") (string_literal ""OpenSSL> "" (" """) (string_content "OpenSSL> ") (" """))) (; ";")) (do_statement "do {\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          } while (0 < iVar2);" (do "do") (compound_statement "{\n            *pcVar4 = '\0';\n            fputs(pcVar8,stdout);\n            fflush(stdout);\n            pcVar8 = fgets(pcVar4,iVar2,stdin);\n            if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }\n            lVar9 = -1;\n            pcVar8 = pcVar4;\n            do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');\n            iVar3 = ~(uint)lVar9 - 1;\n            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;\n            iVar3 = ~(uint)lVar9 - 3;\n            pcVar4 = pcVar4 + iVar3;\n            iVar2 = iVar2 - iVar3;\n            pcVar8 = "> ";\n          }" ({ "{") (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "fputs(pcVar8,stdout);" (call_expression "fputs(pcVar8,stdout)" (identifier "fputs") (argument_list "(pcVar8,stdout)" (( "(") (identifier "pcVar8") (, ",") (identifier "stdout") () ")"))) (; ";")) (expression_statement "fflush(stdout);" (call_expression "fflush(stdout)" (identifier "fflush") (argument_list "(stdout)" (( "(") (identifier "stdout") () ")"))) (; ";")) (expression_statement "pcVar8 = fgets(pcVar4,iVar2,stdin);" (assignment_expression "pcVar8 = fgets(pcVar4,iVar2,stdin)" (identifier "pcVar8") (= "=") (call_expression "fgets(pcVar4,iVar2,stdin)" (identifier "fgets") (argument_list "(pcVar4,iVar2,stdin)" (( "(") (identifier "pcVar4") (, ",") (identifier "iVar2") (, ",") (identifier "stdin") () ")")))) (; ";")) (if_statement "if (pcVar8 == (char *)0x0) {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" (if "if") (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0014c954;" (goto "goto") (statement_identifier "LAB_0014c954") (; ";")) (} "}"))) (if_statement "if (*pcVar4 == '\0') {\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" (if "if") (parenthesized_expression "(*pcVar4 == '\0')" (( "(") (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar2 = 0;\n              goto LAB_0014c954;\n            }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0014c954;" (goto "goto") (statement_identifier "LAB_0014c954") (; ";")) (} "}"))) (expression_statement "lVar9 = -1;" (assignment_expression "lVar9 = -1" (identifier "lVar9") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pcVar8 = pcVar4;" (assignment_expression "pcVar8 = pcVar4" (identifier "pcVar8") (= "=") (identifier "pcVar4")) (; ";")) (do_statement "do {\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            } while (cVar1 != '\0');" (do "do") (compound_statement "{\n              if (lVar9 == 0) break;\n              lVar9 = lVar9 + -1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;\n            }" ({ "{") (if_statement "if (lVar9 == 0) break;" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" (identifier "cVar1") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar14 * -2" (identifier "pcVar8") (+ "+") (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 "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "iVar3 = ~(uint)lVar9 - 1;" (assignment_expression "iVar3 = ~(uint)lVar9 - 1" (identifier "iVar3") (= "=") (binary_expression "~(uint)lVar9 - 1" (unary_expression "~(uint)lVar9" (~ "~") (cast_expression "(uint)lVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar9"))) (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;" (if "if") (parenthesized_expression "((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\'))" (( "(") (binary_expression "(iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')" (parenthesized_expression "(iVar3 < 2)" (( "(") (binary_expression "iVar3 < 2" (identifier "iVar3") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(pcVar4[(long)iVar3 + -2] != '\\')" (( "(") (binary_expression "pcVar4[(long)iVar3 + -2] != '\\'" (subscript_expression "pcVar4[(long)iVar3 + -2]" (identifier "pcVar4") ([ "[") (binary_expression "(long)iVar3 + -2" (cast_expression "(long)iVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar3")) (+ "+") (number_literal "-2")) (] "]")) (!= "!=") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = ~(uint)lVar9 - 3;" (assignment_expression "iVar3 = ~(uint)lVar9 - 3" (identifier "iVar3") (= "=") (binary_expression "~(uint)lVar9 - 3" (unary_expression "~(uint)lVar9" (~ "~") (cast_expression "(uint)lVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar9"))) (- "-") (number_literal "3"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + iVar3;" (assignment_expression "pcVar4 = pcVar4 + iVar3" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + iVar3" (identifier "pcVar4") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "iVar2 = iVar2 - iVar3;" (assignment_expression "iVar2 = iVar2 - iVar3" (identifier "iVar2") (= "=") (binary_expression "iVar2 - iVar3" (identifier "iVar2") (- "-") (identifier "iVar3"))) (; ";")) (expression_statement "pcVar8 = "> ";" (assignment_expression "pcVar8 = "> "" (identifier "pcVar8") (= "=") (string_literal ""> "" (" """) (string_content "> ") (" """))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < iVar2)" (( "(") (binary_expression "0 < iVar2" (number_literal "0") (< "<") (identifier "iVar2")) () ")")) (; ";")) (expression_statement "iVar2 = FUN_0017b3fc(&local_478,local_448);" (assignment_expression "iVar2 = FUN_0017b3fc(&local_478,local_448)" (identifier "iVar2") (= "=") (call_expression "FUN_0017b3fc(&local_478,local_448)" (identifier "FUN_0017b3fc") (argument_list "(&local_478,local_448)" (( "(") (pointer_expression "&local_478" (& "&") (identifier "local_478")) (, ",") (identifier "local_448") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");\n            iVar2 = 1;\n            goto LAB_0014c954;\n          }" ({ "{") (expression_statement "BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");" (call_expression "BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n")" (identifier "BIO_printf") (argument_list "(DAT_001b76b0,"Can\'t parse (no memory?)\n")" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""Can\'t parse (no memory?)\n"" (" """) (string_content "Can") (escape_sequence "\'") (string_content "t parse (no memory?)") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0014c954;" (goto "goto") (statement_identifier "LAB_0014c954") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_0014bcba(uVar6,local_474,local_470);" (assignment_expression "iVar2 = FUN_0014bcba(uVar6,local_474,local_470)" (identifier "iVar2") (= "=") (call_expression "FUN_0014bcba(uVar6,local_474,local_470)" (identifier "FUN_0014bcba") (argument_list "(uVar6,local_474,local_470)" (( "(") (identifier "uVar6") (, ",") (identifier "local_474") (, ",") (identifier "local_470") () ")")))) (; ";")) (if_statement "if (iVar2 == -1) goto LAB_0014cb75;" (if "if") (parenthesized_expression "(iVar2 == -1)" (( "(") (binary_expression "iVar2 == -1" (identifier "iVar2") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0014cb75;" (goto "goto") (statement_identifier "LAB_0014cb75") (; ";"))) (if_statement "if (iVar2 != 0) {\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);\n          }" ({ "{") (expression_statement "BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);" (call_expression "BIO_printf(DAT_001b76b0,"error in %s\n",*local_470)" (identifier "BIO_printf") (argument_list "(DAT_001b76b0,"error in %s\n",*local_470)" (( "(") (identifier "DAT_001b76b0") (, ",") (string_literal ""error in %s\n"" (" """) (string_content "error in %s") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*local_470" (* "*") (identifier "local_470")) () ")"))) (; ";")) (} "}"))) (expression_statement "BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0)" (identifier "BIO_ctrl") (argument_list "(DAT_001b76b8,0xb,0,(void *)0x0)" (( "(") (identifier "DAT_001b76b8") (, ",") (number_literal "0xb") (, ",") (number_literal "0") (, ",") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")"))) (; ";")) (expression_statement "BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);" (call_expression "BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0)" (identifier "BIO_ctrl") (argument_list "(DAT_001b76b0,0xb,0,(void *)0x0)" (( "(") (identifier "DAT_001b76b0") (, ",") (number_literal "0xb") (, ",") (number_literal "0") (, ",") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);" (assignment_expression "iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1)" (identifier "iVar2") (= "=") (call_expression "FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1)" (identifier "FUN_0014bcba") (argument_list "(uVar6,param_1 + -1,param_2 + 1)" (( "(") (identifier "uVar6") (, ",") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar2 < 0) {\n        iVar2 = 0;\n      }" (if "if") (parenthesized_expression "(iVar2 < 0)" (( "(") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = 0;\n      }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" (else "else") (compound_statement "{\n      *param_2 = uVar7;\n      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);\n    }" ({ "{") (expression_statement "*param_2 = uVar7;" (assignment_expression "*param_2 = uVar7" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);" (assignment_expression "iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(lVar9 + 0x10))(param_1,param_2)" (parenthesized_expression "(**(code **)(lVar9 + 0x10))" (( "(") (pointer_expression "**(code **)(lVar9 + 0x10)" (* "*") (pointer_expression "*(code **)(lVar9 + 0x10)" (* "*") (cast_expression "(code **)(lVar9 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar9 + 0x10)" (( "(") (binary_expression "lVar9 + 0x10" (identifier "lVar9") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_0014c954:\n  CRYPTO_free((void *)0x0);" (statement_identifier "LAB_0014c954") (: ":") (expression_statement "CRYPTO_free((void *)0x0);" (call_expression "CRYPTO_free((void *)0x0)" (identifier "CRYPTO_free") (argument_list "((void *)0x0)" (( "(") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")"))) (; ";"))) (expression_statement "CRYPTO_free(DAT_001b76c8);" (call_expression "CRYPTO_free(DAT_001b76c8)" (identifier "CRYPTO_free") (argument_list "(DAT_001b76c8)" (( "(") (identifier "DAT_001b76c8") () ")"))) (; ";")) (expression_statement "OPENSSL_LH_free(uVar6);" (call_expression "OPENSSL_LH_free(uVar6)" (identifier "OPENSSL_LH_free") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "CRYPTO_free(local_470);" (call_expression "CRYPTO_free(local_470)" (identifier "CRYPTO_free") (argument_list "(local_470)" (( "(") (identifier "local_470") () ")"))) (; ";")) (expression_statement "FUN_0017a6a1();" (call_expression "FUN_0017a6a1()" (identifier "FUN_0017a6a1") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "BIO_free(DAT_001b76c0);" (call_expression "BIO_free(DAT_001b76c0)" (identifier "BIO_free") (argument_list "(DAT_001b76c0)" (( "(") (identifier "DAT_001b76c0") () ")"))) (; ";")) (expression_statement "BIO_free_all(DAT_001b76b8);" (call_expression "BIO_free_all(DAT_001b76b8)" (identifier "BIO_free_all") (argument_list "(DAT_001b76b8)" (( "(") (identifier "DAT_001b76b8") () ")"))) (; ";")) (expression_statement "FUN_0017b178();" (call_expression "FUN_0017b178()" (identifier "FUN_0017b178") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0017da6f();" (call_expression "FUN_0017da6f()" (identifier "FUN_0017da6f") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "BIO_free(DAT_001b76b0);" (call_expression "BIO_free(DAT_001b76b0)" (identifier "BIO_free") (argument_list "(DAT_001b76b0)" (( "(") (identifier "DAT_001b76b0") () ")"))) (; ";")) (expression_statement "exit(iVar2);" (call_expression "exit(iVar2)" (identifier "exit") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (labeled_statement "LAB_0014cb75:\n  iVar2 = 0;" (statement_identifier "LAB_0014cb75") (: ":") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_0014c954;" (goto "goto") (statement_identifier "LAB_0014c954") (; ";")) (} "}")))

int function_1(int var_30,char **var_39)

{
  char var_6;
  int var_24;
  int var_35;
  char *var_3;
  type_1 *var_14;
  type_2 *prog;
  long var_20;
  char *var_34;
  long var_5;
  type_1 *var_15;
  long var_1;
  bool var_16;
  bool bVar11;
  type_1 bVar12;
  type_3 arg;
  type_4 f;
  char buf [1024];
  
  bVar12 = 0;
  var_20 = *(long *)(var_1 + 0x28);
  arg.var_39 = (char **)0x0;
  arg.size = 0;
  var_3 = var_2("OPENSSL_CONF");
  if (var_3 == (char *)0x0) {
    var_34 = var_4();
    var_5 = -1;
    var_3 = var_34;
    do {
      if (var_5 == 0) break;
      var_5 = var_5 + -1;
      var_6 = *var_3;
      var_3 = var_3 + (type_5)bVar12 * -2 + 1;
    } while (var_6 != '\0');
    var_3 = (char *)var_7(~(type_6)var_5 + 0xc,"config filename buffer");
    var_8(var_3,var_34);
    var_9(var_3,"/");
    var_9(var_3,"openssl.cnf");
  }
  else {
    var_3 = var_10(var_3,"../apps/openssl.c",0x69);
  }
  default_config_file = var_3;
  bio_in = var_11(0x8001);
  bio_out = var_12(0x8001);
  bio_err = var_13(0x8001);
  var_14 = (type_1 *)var_2("OPENSSL_DEBUG_MEMORY");
  var_16 = false;
  bVar11 = var_14 == (type_1 *)0x0;
  if (!bVar11) {
    var_5 = 3;
    var_15 = (type_1 *)0x18bcf7;
    do {
      if (var_5 == 0) break;
      var_5 = var_5 + -1;
      var_16 = *var_14 < *var_15;
      bVar11 = *var_14 == *var_15;
      var_14 = var_14 + (type_5)bVar12 * -2 + 1;
      var_15 = var_15 + (type_5)bVar12 * -2 + 1;
    } while (bVar11);
    if ((!var_16 && !bVar11) == var_16) {
      var_17(1);
    }
  }
  var_18(1);
  var_3 = var_2("OPENSSL_FIPS");
  if (var_3 != (char *)0x0) {
    var_19((type_7 *)bio_err,"FIPS mode not supported.\n");
    if (var_20 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
      var_21();
    }
    return 1;
  }
  var_22(0xd,(type_8)0x1);
  var_24 = var_23(0x7640,0);
  if (var_24 == 0) {
    var_19((type_7 *)bio_err,"FATAL: Startup failure (dev note: apps_startup() failed)\n");
    var_25((type_7 *)bio_err);
    var_24 = 1;
    prog = (type_2 *)0x0;
  }
  else {
    var_26();
    prog = var_27();
    var_3 = var_28(*var_39);
    f.name = var_3;
    var_20 = var_29(prog,&f);
    if (var_20 == 0) {
      if (var_30 == 1) {
        do {
          var_24 = 0x400;
          var_3 = buf;
          var_34 = "OpenSSL> ";
          do {
            *var_3 = '\0';
            var_31(var_34,stdout);
            var_32(stdout);
            var_34 = var_33(var_3,var_24,stdin);
            if (var_34 == (char *)0x0) {
              var_24 = 0;
              goto LAB_0014c954;
            }
            if (*var_3 == '\0') {
              var_24 = 0;
              goto LAB_0014c954;
            }
            var_20 = -1;
            var_34 = var_3;
            do {
              if (var_20 == 0) break;
              var_20 = var_20 + -1;
              var_6 = *var_34;
              var_34 = var_34 + (type_5)bVar12 * -2 + 1;
            } while (var_6 != '\0');
            var_35 = ~(type_6)var_20 - 1;
            if ((var_35 < 2) || (var_3[(long)var_35 + -2] != '\\')) break;
            var_35 = ~(type_6)var_20 - 3;
            var_3 = var_3 + var_35;
            var_24 = var_24 - var_35;
            var_34 = "> ";
          } while (0 < var_24);
          var_24 = var_36(&arg,buf);
          if (var_24 == 0) {
            var_19((type_7 *)bio_err,"Can\'t parse (no memory?)\n");
            var_24 = 1;
            goto LAB_0014c954;
          }
          var_24 = var_37(prog,arg.var_30,arg.var_39);
          if (var_24 == -1) goto LAB_0014cb75;
          if (var_24 != 0) {
            var_19((type_7 *)bio_err,"error in %s\n",*arg.var_39);
          }
          var_38((type_7 *)bio_out,0xb,0,(void *)0x0);
          var_38((type_7 *)bio_err,0xb,0,(void *)0x0);
        } while( true );
      }
      var_24 = var_37(prog,var_30 + -1,var_39 + 1);
      if (var_24 < 0) {
        var_24 = 0;
      }
    }
    else {
      *var_39 = var_3;
      var_24 = (**(type_9 **)(var_20 + 0x10))(var_30,var_39);
    }
  }
LAB_0014c954:
  var_40((void *)0x0);
  var_40(default_config_file);
  var_41(prog);
  var_40(arg.var_39);
  var_42();
  var_43((type_7 *)bio_in);
  var_44((type_7 *)bio_out);
  var_45();
  var_46();
  var_43((type_7 *)bio_err);
                    /* WARNING: Subroutine does not return */
  var_47(var_24);
LAB_0014cb75:
  var_24 = 0;
  goto LAB_0014c954;
}


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

undefined8 MASKED(int param_1,undefined8 *param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  byte *pbVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  char *pcVar8;
  long lVar9;
  ulong uVar10;
  byte *pbVar11;
  long in_FS_OFFSET;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  undefined4 local_478;
  undefined4 local_474;
  undefined8 *local_470;
  undefined1 local_468 [8];
  undefined8 local_460;
  char local_448 [1032];
  long local_40;
  
  bVar14 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  local_470 = (undefined8 *)0x0;
  local_478 = 0;
  pcVar4 = getenv("OPENSSL_CONF");
  if (pcVar4 == (char *)0x0) {
    pcVar8 = X509_get_default_cert_area();
    uVar10 = 0xffffffffffffffff;
    pcVar4 = pcVar8;
    do {
      if (uVar10 == 0) break;
      uVar10 = uVar10 - 1;
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + (ulong)bVar14 * -2 + 1;
    } while (cVar1 != '\0');
    pcVar4 = (char *)FUN_0017b399(~uVar10 + 0xc,"config filename buffer");
    strcpy(pcVar4,pcVar8);
    strcat(pcVar4,"/");
    strcat(pcVar4,"openssl.cnf");
  }
  else {
    pcVar4 = CRYPTO_strdup(pcVar4,"../apps/openssl.c",0x69);
  }
  DAT_001b76c8 = pcVar4;
  DAT_001b76c0 = (BIO *)FUN_0017d433(0x8001);
  DAT_001b76b8 = (BIO *)FUN_0017d84a(0x8001);
  DAT_001b76b0 = (BIO *)FUN_0017da47(0x8001);
  pbVar5 = (byte *)getenv("OPENSSL_DEBUG_MEMORY");
  bVar12 = false;
  bVar13 = pbVar5 == (byte *)0x0;
  if (!bVar13) {
    lVar9 = 3;
    pbVar11 = (byte *)0x18bcf7;
    do {
      if (lVar9 == 0) break;
      lVar9 = lVar9 + -1;
      bVar12 = *pbVar5 < *pbVar11;
      bVar13 = *pbVar5 == *pbVar11;
      pbVar5 = pbVar5 + (ulong)bVar14 * -2 + 1;
      pbVar11 = pbVar11 + (ulong)bVar14 * -2 + 1;
    } while (bVar13);
    if ((!bVar12 && !bVar13) == bVar12) {
      CRYPTO_set_mem_debug(1);
    }
  }
  CRYPTO_mem_ctrl(1);
  pcVar4 = getenv("OPENSSL_FIPS");
  if (pcVar4 != (char *)0x0) {
    BIO_printf(DAT_001b76b0,"FIPS mode not supported.\n");
    if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
    return 1;
  }
  signal(0xd,(__sighandler_t)0x1);
  iVar2 = OPENSSL_init_ssl(0x7640,0);
  if (iVar2 == 0) {
    BIO_printf(DAT_001b76b0,"FATAL: Startup failure (dev note: apps_startup() failed)\n");
    ERR_print_errors(DAT_001b76b0);
    iVar2 = 1;
    uVar6 = 0;
  }
  else {
    FUN_0017b0f7();
    uVar6 = FUN_0014bbff();
    uVar7 = FUN_0017f4f3(*param_2);
    local_460 = uVar7;
    lVar9 = OPENSSL_LH_retrieve(uVar6,local_468);
    if (lVar9 == 0) {
      if (param_1 == 1) {
        do {
          iVar2 = 0x400;
          pcVar4 = local_448;
          pcVar8 = "OpenSSL> ";
          do {
            *pcVar4 = '\0';
            fputs(pcVar8,stdout);
            fflush(stdout);
            pcVar8 = fgets(pcVar4,iVar2,stdin);
            if (pcVar8 == (char *)0x0) {
              iVar2 = 0;
              goto LAB_0014c954;
            }
            if (*pcVar4 == '\0') {
              iVar2 = 0;
              goto LAB_0014c954;
            }
            lVar9 = -1;
            pcVar8 = pcVar4;
            do {
              if (lVar9 == 0) break;
              lVar9 = lVar9 + -1;
              cVar1 = *pcVar8;
              pcVar8 = pcVar8 + (ulong)bVar14 * -2 + 1;
            } while (cVar1 != '\0');
            iVar3 = ~(uint)lVar9 - 1;
            if ((iVar3 < 2) || (pcVar4[(long)iVar3 + -2] != '\\')) break;
            iVar3 = ~(uint)lVar9 - 3;
            pcVar4 = pcVar4 + iVar3;
            iVar2 = iVar2 - iVar3;
            pcVar8 = "> ";
          } while (0 < iVar2);
          iVar2 = FUN_0017b3fc(&local_478,local_448);
          if (iVar2 == 0) {
            BIO_printf(DAT_001b76b0,"Can\'t parse (no memory?)\n");
            iVar2 = 1;
            goto LAB_0014c954;
          }
          iVar2 = FUN_0014bcba(uVar6,local_474,local_470);
          if (iVar2 == -1) goto LAB_0014cb75;
          if (iVar2 != 0) {
            BIO_printf(DAT_001b76b0,"error in %s\n",*local_470);
          }
          BIO_ctrl(DAT_001b76b8,0xb,0,(void *)0x0);
          BIO_ctrl(DAT_001b76b0,0xb,0,(void *)0x0);
        } while( true );
      }
      iVar2 = FUN_0014bcba(uVar6,param_1 + -1,param_2 + 1);
      if (iVar2 < 0) {
        iVar2 = 0;
      }
    }
    else {
      *param_2 = uVar7;
      iVar2 = (**(code **)(lVar9 + 0x10))(param_1,param_2);
    }
  }
LAB_0014c954:
  CRYPTO_free((void *)0x0);
  CRYPTO_free(DAT_001b76c8);
  OPENSSL_LH_free(uVar6);
  CRYPTO_free(local_470);
  FUN_0017a6a1();
  BIO_free(DAT_001b76c0);
  BIO_free_all(DAT_001b76b8);
  FUN_0017b178();
  FUN_0017da6f();
  BIO_free(DAT_001b76b0);
                    /* WARNING: Subroutine does not return */
  exit(iVar2);
LAB_0014cb75:
  iVar2 = 0;
  goto LAB_0014c954;
}

