
_Bool do_copy(int n_files,char **file,char *target_directory,_Bool no_target_directory,cp_options *x
             )

{
  char cVar1;
  bool forcing;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined3 extraout_var;
  code *pcVar5;
  code *pcVar6;
  undefined *puVar7;
  undefined *puVar8;
  char *pcVar9;
  int iVar10;
  uint uVar11;
  backup_type *pbVar12;
  backup_type *pbVar13;
  _Bool _Var15;
  undefined4 uVar14;
  undefined1 uVar16;
  cp_options *pcVar17;
  mode_t *pmVar18;
  int iVar19;
  Sparse_type SVar20;
  undefined3 in_register_0000001c;
  backup_type bVar21;
  EVP_PKEY_CTX *dst;
  backup_type bVar22;
  uint uVar23;
  int iVar24;
  EVP_PKEY_CTX *pEVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined1 *puVar28;
  undefined1 auStack_120 [16];
  char **ppcStack_110;
  undefined4 uStack_10c;
  _Bool new_dst;
  _Bool copy_into_self;
  dir_attr *attr_list;
  char *arg_in_concat;
  stat sb;
  
  puVar4 = PTR___stack_chk_guard_00044624;
  iVar19 = *(int *)PTR___stack_chk_guard_00044624;
  new_dst = false;
  uVar23._0_1_ = x->copy_as_regular;
  uVar23._1_1_ = x->unlink_dest_before_opening;
  uVar23._2_1_ = x->unlink_dest_after_failed_open;
  uVar23._3_1_ = x->hard_link;
  if (n_files <= (int)(uint)(target_directory == (char *)0x0)) goto LAB_00015f20;
  forcing = (uVar23 & 0xffff00) != 0;
  if (CONCAT31(in_register_0000001c,no_target_directory) != 0) {
    if (target_directory != (char *)0x0) {
      uVar14 = (*(code *)PTR_dcgettext_00044600)
                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);
      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);
      return (_Bool)uVar16;
    }
    if (2 < n_files) {
      (*(code *)PTR_dcgettext_00044600)
                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);
                    /* WARNING: Subroutine does not return */
      quotearg_style(shell_escape_always_quoting_style,file[2]);
    }
    target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);
    goto LAB_00015ccc;
  }
  iVar24 = n_files << 2;
  if (target_directory == (char *)0x0) {
    if (n_files == 1) {
LAB_00015ccc:
      n_files = (int)*file;
    }
    else {
      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);
      if (CONCAT31(extraout_var,_Var15) == 0) {
        if (n_files != 2) {
          (*(code *)PTR_dcgettext_00044600)
                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);
                    /* WARNING: Subroutine does not return */
          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);
        }
        goto LAB_00015ccc;
      }
      n_files = n_files + -1;
      iVar24 = n_files * 4;
      target_directory = file[n_files];
      if (target_directory != (char *)0x0) goto LAB_00015a40;
      n_files = (int)*file;
    }
    file = (char **)file[1];
    if (PTR_DAT_00044118[0x46e5] != '\0') {
      uVar14 = (*(code *)PTR_dcgettext_00044600)
                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);
      (*(code *)PTR_error_00044598)(0,0,uVar14);
                    /* WARNING: Subroutine does not return */
      usage(1);
    }
    if ((((x->unlink_dest_after_failed_open != false) &&
         (bVar22 = x->backup_type, bVar22 != no_backups)) &&
        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&
       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))) {
      file = (char **)find_backup_file_name((char *)file,bVar22);
      puVar2 = PTR_DAT_00044118;
      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);
      pcVar17 = x;
      do {
        pmVar18 = &pcVar17->mode;
        pbVar13 = pbVar12 + 4;
        bVar21 = pcVar17->dereference;
        bVar22 = pcVar17->interactive;
        SVar20 = pcVar17->sparse_mode;
        *pbVar12 = pcVar17->backup_type;
        pbVar12[1] = bVar21;
        pbVar12[2] = bVar22;
        pbVar12[3] = SVar20;
        pbVar12 = pbVar13;
        pcVar17 = (cp_options *)pmVar18;
      } while ((Hash_table **)pmVar18 != &x->src_info);
      *pbVar13 = *pmVar18;
      *(undefined4 *)(puVar2 + 0x46a0) = 0;
    }
    ppcStack_110 = &arg_in_concat;
    uStack_10c = 0;
    iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file);
    uVar16 = (undefined1)iVar24;
  }
  else {
LAB_00015a40:
    if (n_files != 1) {
      dest_info_init(x);
      src_info_init(x);
    }
    puVar3 = PTR_s_option___H_follow_command_line_s_00044128;
    puVar2 = PTR_DAT_00044118;
    pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);
    uVar23 = 1;
    pcVar5 = (code *)(PTR_00044124 + 0x4f50);
    pcVar6 = (code *)(PTR_00044124 + 0x48b0);
    puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;
    puVar27 = auStack_120;
    do {
      dst = (EVP_PKEY_CTX *)*file;
      arg_in_concat = (char *)0x0;
      if (puVar2[0x46e4] != '\0') {
        strip_trailing_slashes((char *)dst);
      }
      if (puVar2[0x46e5] == '\0') {
        pcVar9 = last_component((char *)dst);
        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);
        iVar24 = -(iVar10 + 8U & 0xfffffff8);
        puVar28 = puVar27 + iVar24;
        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);
        strip_trailing_slashes(pcVar9);
        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);
        if (iVar10 == 0) {
          n_files = (int)xstrdup(target_directory);
          puVar28 = puVar27 + iVar24;
        }
        else {
          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);
        }
LAB_00015c30:
        *(undefined4 *)(puVar28 + 0x14) = 0;
        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;
        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);
        uVar23 = uVar11 & uVar23;
        puVar26 = puVar28;
        if (puVar2[0x46e5] != '\0') {
          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);
          uVar23 = uVar23 & uVar11;
          cVar1 = puVar2[0x46e5];
          goto LAB_00015b5c;
        }
      }
      else {
        iVar10 = (*(code *)PTR_strlen_00044558)(dst);
        iVar24 = -(iVar10 + 8U & 0xfffffff8);
        puVar28 = puVar27 + iVar24;
        puVar26 = puVar27 + iVar24;
        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);
        strip_trailing_slashes(pcVar9);
        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);
        puVar8 = puVar7;
        if (x->verbose == false) {
          puVar8 = (undefined *)0x0;
        }
        iVar10 = (int)arg_in_concat - n_files;
        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;
        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;
        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);
        if (iVar24 != 0) goto LAB_00015c30;
        cVar1 = puVar2[0x46e5];
        uVar23 = 0;
LAB_00015b5c:
        if (cVar1 != '\0') {
          while (attr_list != (dir_attr *)0x0) {
            attr_list = attr_list->next;
            (*(code *)PTR_free_0004462c)();
          }
        }
      }
      uVar16 = (undefined1)uVar23;
      file = (char **)((int)file + 4);
      (*(code *)PTR_free_0004462c)(n_files);
      puVar27 = puVar26;
    } while (pEVar25 != (EVP_PKEY_CTX *)file);
  }
  if (iVar19 == *(int *)puVar4) {
    return (_Bool)uVar16;
  }
  (*(code *)PTR___stack_chk_fail_000445f4)();
LAB_00015f20:
  if ((EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1) {
    uVar14 = (*(code *)PTR_dcgettext_00044600)
                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);
    (*(code *)PTR_error_00044598)(0,0,uVar14);
                    /* WARNING: Subroutine does not return */
    usage(1);
  }
  (*(code *)PTR_dcgettext_00044600)(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4);
                    /* WARNING: Subroutine does not return */
  quotearg_style(shell_escape_always_quoting_style,*file);
}



uint FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)

{
  char cVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  code *pcVar6;
  code *pcVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined4 uVar10;
  int iVar11;
  uint uVar12;
  int *piVar13;
  int *piVar14;
  int *piVar15;
  int *piVar16;
  int iVar17;
  EVP_PKEY_CTX *dst;
  uint uVar18;
  int iVar19;
  EVP_PKEY_CTX *pEVar20;
  undefined1 *puVar21;
  undefined1 *puVar22;
  undefined1 *puVar23;
  undefined1 auStack_120 [16];
  int *local_110;
  undefined4 local_10c;
  char local_da;
  undefined1 uStack_d9;
  int local_d8;
  int local_d4;
  undefined1 auStack_d0 [24];
  uint local_b8;
  int local_2c;
  
  puVar5 = PTR___stack_chk_guard_00044624;
  local_2c = *(int *)PTR___stack_chk_guard_00044624;
  local_da = '\0';
  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;
  bVar2 = (param_5[5] & 0xffff00U) != 0;
  if (param_4 == 0) {
    iVar19 = (int)param_1 << 2;
    if (param_3 == 0) {
      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;
      pEVar20 = param_2 + (int)param_1 * 4 + -4;
      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);
      if (iVar19 == 0) {
        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;
        param_2 = (EVP_PKEY_CTX *)
                  (*(code *)PTR_dcgettext_00044600)
                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);
        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);
        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);
      }
      param_1 = param_1 + -1;
      iVar19 = (int)param_1 * 4;
      param_3 = *(int *)(param_2 + iVar19);
      if (param_3 != 0) goto LAB_00015a40;
      param_1 = *(EVP_PKEY_CTX **)param_2;
      goto LAB_00015cd0;
    }
LAB_00015a40:
    if (param_1 != (EVP_PKEY_CTX *)0x1) {
      dest_info_init(param_5);
      src_info_init(param_5);
    }
    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;
    puVar3 = PTR_DAT_00044118;
    pEVar20 = param_2 + iVar19;
    uVar18 = 1;
    pcVar6 = (code *)(PTR_00044124 + 0x4f50);
    pcVar7 = (code *)(PTR_00044124 + 0x48b0);
    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;
    puVar22 = auStack_120;
    do {
      dst = *(EVP_PKEY_CTX **)param_2;
      local_d4 = 0;
      if (puVar3[0x46e4] != '\0') {
        strip_trailing_slashes(dst);
      }
      if (puVar3[0x46e5] == '\0') {
        uVar10 = last_component(dst);
        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);
        iVar19 = -(iVar11 + 8U & 0xfffffff8);
        puVar23 = puVar22 + iVar19;
        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);
        strip_trailing_slashes(uVar10);
        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);
        if (iVar11 == 0) {
          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);
          puVar23 = puVar22 + iVar19;
        }
        else {
          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);
        }
LAB_00015c30:
        *(undefined4 *)(puVar23 + 0x14) = 0;
        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;
        uVar12 = copy(dst,param_1);
        uVar18 = uVar12 & uVar18;
        puVar21 = puVar23;
        if (puVar3[0x46e5] != '\0') {
          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);
          uVar18 = uVar18 & uVar12;
          cVar1 = puVar3[0x46e5];
          goto LAB_00015b5c;
        }
      }
      else {
        iVar11 = (*(code *)PTR_strlen_00044558)(dst);
        iVar19 = -(iVar11 + 8U & 0xfffffff8);
        puVar23 = puVar22 + iVar19;
        puVar21 = puVar22 + iVar19;
        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);
        strip_trailing_slashes(uVar10);
        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);
        puVar9 = puVar8;
        if (*(char *)((int)param_5 + 0x2e) == '\0') {
          puVar9 = (undefined *)0x0;
        }
        iVar11 = local_d4 - (int)param_1;
        *(int **)(puVar22 + iVar19 + 0x14) = param_5;
        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;
        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);
        if (iVar19 != 0) goto LAB_00015c30;
        cVar1 = puVar3[0x46e5];
        uVar18 = 0;
LAB_00015b5c:
        if (cVar1 != '\0') {
          while (local_d8 != 0) {
            local_d8 = *(int *)(local_d8 + 0xa8);
            (*(code *)PTR_free_0004462c)();
          }
        }
      }
      param_2 = param_2 + 4;
      (*(code *)PTR_free_0004462c)(param_1);
      puVar22 = puVar21;
    } while (pEVar20 != param_2);
  }
  else {
    if (param_3 != 0) goto LAB_0001604c;
    if (2 < (int)param_1) goto LAB_00015f84;
    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);
LAB_00015ccc:
    param_1 = *(EVP_PKEY_CTX **)param_2;
LAB_00015cd0:
    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);
    if (PTR_DAT_00044118[0x46e5] != '\0') {
      uVar10 = (*(code *)PTR_dcgettext_00044600)
                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);
      (*(code *)PTR_error_00044598)(0,0,uVar10);
      usage(1);
LAB_0001604c:
      uVar10 = (*(code *)PTR_dcgettext_00044600)
                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);
      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);
      return uVar18;
    }
    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&
        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&
       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {
      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);
      puVar3 = PTR_DAT_00044118;
      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);
      piVar15 = param_5;
      do {
        piVar16 = piVar15 + 4;
        piVar14 = piVar13 + 4;
        iVar17 = piVar15[1];
        iVar11 = piVar15[2];
        iVar19 = piVar15[3];
        *piVar13 = *piVar15;
        piVar13[1] = iVar17;
        piVar13[2] = iVar11;
        piVar13[3] = iVar19;
        piVar13 = piVar14;
        piVar15 = piVar16;
      } while (piVar16 != param_5 + 0x10);
      *piVar14 = *piVar16;
      *(undefined4 *)(puVar3 + 0x46a0) = 0;
    }
    local_110 = &local_d4;
    local_10c = 0;
    uVar18 = copy(param_1,param_2);
  }
  if (local_2c == *(int *)puVar5) {
    return uVar18;
  }
  (*(code *)PTR___stack_chk_fail_000445f4)();
LAB_00015f20:
  pEVar20 = param_2;
  pcVar6 = (code *)PTR_dcgettext_00044600;
  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;
  pEVar20 = (EVP_PKEY_CTX *)
            (*(code *)PTR_dcgettext_00044600)
                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);
  uVar10 = quotearg_style(4,*(undefined4 *)param_2);
  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);
  do {
    usage(1);
    param_2 = pEVar20;
LAB_00015f84:
    pEVar20 = (EVP_PKEY_CTX *)
              (*(code *)PTR_dcgettext_00044600)
                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);
    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));
    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);
    pcVar6 = (code *)PTR_usage_0004417c;
    usage(1);
LAB_00015fe0:
    uVar10 = (*pcVar6)();
    (*(code *)PTR_error_00044598)(0,0,uVar10);
  } while( true );
}


lui gp,0x3
addiu gp,gp,0x6744
addu gp,gp,t9
addiu sp,sp,-0x120
lw v0,-0x7acc(gp)
sltiu v1,a2,0x1
slt v1,v1,a0
sw s8,0x118(sp)
or s8,sp,zero
sw s5,0x10c(sp)
or t0,v0,zero
sw s6,0x110(sp)
or s6,a2,zero
sw s1,0xfc(sp)
or s1,a0,zero
sw v0,0x28(s8)
lui a0,0xff
lw s5,0x130(s8)
lw a2,0x0(t0)
ori a0,a0,0xff00
sw s0,0xf8(sp)
or s0,a1,zero
sw ra,0x11c(sp)
sw s7,0x114(sp)
sw s4,0x108(sp)
sw s3,0x104(sp)
sw s2,0x100(sp)
sw gp,0x18(sp)
sb zero,0x46(s8)
sw a2,0xf4(s8)
lw v0,0x14(s5)
beq v1,zero,0x00015f20
_and v0,v0,a0
bne a3,zero,0x00015c94
_sltu v0,zero,v0
beq s6,zero,0x00015e68
_sll s7,s1,0x2
li v0,0x1
beq s1,v0,0x00015a70
_lw v0,-0x7fd8(gp)
lw t9,-0x7f90(gp)
bal 0x0001778c
_or a0,s5,zero
lw gp,0x18(s8)
lw t9,-0x7f8c(gp)
bal 0x000177e0
_or a0,s5,zero
lw gp,0x18(s8)
lw v0,-0x7fd8(gp)
addu s7,s0,s7
li s3,0x1
lw s4,-0x7fd8(gp)
sw v0,0x3c(s8)
addiu v0,s8,0x47
sw v0,0x2c(s8)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x4f50
sw v0,0x24(s8)
lw v0,-0x7fc8(gp)
sw v0,0x38(s8)
lw v0,-0x7fcc(gp)
addiu v0,v0,0x48b0
sw v0,0x34(s8)
lw v0,-0x7fc8(gp)
addiu v0,v0,0xf90
b 0x00015b7c
_sw v0,0x30(s8)
jalr t9
_or a0,s2,zero
or a1,s2,zero
addiu v1,v0,0x8
lw gp,0x18(s8)
addiu a2,v0,0x1
srl v1,v1,0x3
sll v1,v1,0x3
lw t9,-0x7ac8(gp)
subu sp,sp,v1
jalr t9
_addiu a0,sp,0x18
lw gp,0x18(s8)
or a0,v0,zero
lw t9,-0x7f88(gp)
bal 0x0001fdf0
_or s1,v0,zero
addiu a2,s8,0x4c
lw gp,0x18(s8)
or a1,s1,zero
lw t9,-0x7f84(gp)
bal 0x000202d0
_or a0,s6,zero
addiu a3,s8,0x48
lbu a2,0x2e(s5)
or s1,v0,zero
or a0,v0,zero
lw v0,0x30(s8)
lw a1,0x4c(s8)
lw t9,0x34(s8)
movz v0,zero,a2
subu a1,a1,s1
sw s5,0x14(sp)
or a2,v0,zero
addiu v0,s8,0x46
jalr t9
_sw v0,0x10(sp)
bne v0,zero,0x00015c30
_lw gp,0x18(s8)
lbu v1,0x46e5(s4)
or s3,zero,zero
bne v1,zero,0x00015d70
_lw a0,0x48(s8)
lw t9,-0x7ac4(gp)
addiu s0,s0,0x4
jalr t9
_or a0,s1,zero
beq s7,s0,0x00015d14
_lw gp,0x18(s8)
lw v0,0x3c(s8)
lw s2,0x0(s0)
sw zero,0x4c(s8)
lbu v0,0x46e4(v0)
bne v0,zero,0x00015d60
_lw t9,-0x7f88(gp)
lbu v0,0x46e5(s4)
bne v0,zero,0x00015ab8
_lw t9,-0x7b98(gp)
lw t9,-0x7f80(gp)
bal 0x0001fcf0
_or a0,s2,zero
lw gp,0x18(s8)
or a0,v0,zero
lw t9,-0x7b98(gp)
jalr t9
_or s1,v0,zero
or a1,s1,zero
addiu v1,v0,0x8
lw gp,0x18(s8)
addiu a2,v0,0x1
srl v1,v1,0x3
sll v1,v1,0x3
lw t9,-0x7ac8(gp)
subu sp,sp,v1
jalr t9
_addiu a0,sp,0x18
lw gp,0x18(s8)
or a0,v0,zero
lw t9,-0x7f88(gp)
bal 0x0001fdf0
_or s1,v0,zero
or a0,s1,zero
lw gp,0x18(s8)
lw v0,0x38(s8)
lw t9,-0x7a8c(gp)
jalr t9
_addiu a1,v0,0x105c
bne v0,zero,0x00015d9c
_lw gp,0x18(s8)
lw t9,-0x7fc4(gp)
bal 0x000274fc
_or a0,s6,zero
lw gp,0x18(s8)
or s1,v0,zero
lw v0,0x2c(s8)
or a3,s5,zero
lw t9,-0x7f7c(gp)
or a1,s1,zero
lbu a2,0x46(s8)
or a0,s2,zero
sw zero,0x14(sp)
bal 0x0001c384
_sw v0,0x10(sp)
lbu v1,0x46e5(s4)
and s3,v0,s3
lw gp,0x18(s8)
beq v1,zero,0x00015b64
_andi s3,s3,0xff
lw a1,0x4c(s8)
or a3,s5,zero
lw a2,0x48(s8)
or a0,s1,zero
lw t9,0x24(s8)
jalr t9
_subu a1,a1,s1
lw gp,0x18(s8)
and s3,s3,v0
b 0x00015b5c
_lbu v1,0x46e5(s4)
bne s6,zero,0x0001604c
_slti v1,s1,0x3
beq v1,zero,0x00015f84
_sll s1,s1,0x2
lw t9,-0x7fcc(gp)
addiu a2,s8,0x46
addu s1,a1,s1
addiu t9,t9,0x4778
addiu a1,s8,0x50
lw a0,-0x4(s1)
bal 0x00014778
_or a3,v0,zero
lw gp,0x18(s8)
lw v0,-0x7fd8(gp)
lw s1,0x0(s0)
lbu v0,0x46e5(v0)
bne v0,zero,0x0001600c
_lw s0,0x4(s0)
lbu v0,0x16(s5)
bne v0,zero,0x00015dbc
_nop
lw t9,-0x7f7c(gp)
addiu v0,s8,0x4c
or a2,zero,zero
sw zero,0x14(sp)
sw v0,0x10(sp)
or a3,s5,zero
or a1,s0,zero
bal 0x0001c384
_or a0,s1,zero
lw gp,0x18(s8)
or s3,v0,zero
lw v1,0x28(s8)
or v0,s3,zero
lw a0,0xf4(s8)
lw v1,0x0(v1)
bne a0,v1,0x00015f18
_lw t9,-0x7afc(gp)
or sp,s8,zero
lw ra,0x11c(sp)
lw s8,0x118(sp)
lw s7,0x114(sp)
lw s6,0x110(sp)
lw s5,0x10c(sp)
lw s4,0x108(sp)
lw s3,0x104(sp)
lw s2,0x100(sp)
lw s1,0xfc(sp)
lw s0,0xf8(sp)
jr ra
_addiu sp,sp,0x120
bal 0x0001fdf0
_or a0,s2,zero
b 0x00015b94
_lw gp,0x18(s8)
beq a0,zero,0x00015b68
_lw t9,-0x7ac4(gp)
lw v0,0xa8(a0)
lw t9,-0x7ac4(gp)
jalr t9
_sw v0,0x48(s8)
lw a0,0x48(s8)
bne a0,zero,0x00015d78
_lw gp,0x18(s8)
b 0x00015b68
_lw t9,-0x7ac4(gp)
lw t9,-0x7f84(gp)
or a2,zero,zero
or a1,s1,zero
bal 0x000202d0
_or a0,s6,zero
lw gp,0x18(s8)
b 0x00015c30
_or s1,v0,zero
lw s2,0x0(s5)
beq s2,zero,0x00015cec
_lw t9,-0x7f7c(gp)
lw t9,-0x7a8c(gp)
or a1,s0,zero
jalr t9
_or a0,s1,zero
bne v0,zero,0x00015ce8
_lw gp,0x18(s8)
lbu v0,0x46(s8)
bne v0,zero,0x00015cec
_lw t9,-0x7f7c(gp)
lw v0,0x68(s8)
ori v1,zero,0x8000
andi v0,v0,0xf000
bne v0,v1,0x00015cf0
_addiu v0,s8,0x4c
lw t9,-0x7f78(gp)
or a0,s0,zero
bal 0x0001edd0
_or a1,s2,zero
or v1,s5,zero
lw gp,0x18(s8)
addiu a1,s5,0x40
or s0,v0,zero
lw a0,-0x7fd8(gp)
addiu s5,a0,0x46a0
or v0,s5,zero
lw t1,0x0(v1)
addiu v1,v1,0x10
addiu v0,v0,0x10
lw t0,-0xc(v1)
lw a3,-0x8(v1)
lw a2,-0x4(v1)
sw t1,-0x10(v0)
sw t0,-0xc(v0)
sw a3,-0x8(v0)
bne v1,a1,0x00015e2c
_sw a2,-0x4(v0)
lw v1,0x0(v1)
sw v1,0x0(v0)
b 0x00015ce8
_sw zero,0x46a0(a0)
li v1,0x1
beq s1,v1,0x00015cc8
_sll s2,s1,0x2
lw t9,-0x7fcc(gp)
addiu a2,s8,0x46
addiu s2,s2,-0x4
addiu a1,s8,0x50
addu s2,s0,s2
addiu t9,t9,0x4778
or a3,v0,zero
bal 0x00014778
_lw a0,0x0(s2)
bne v0,zero,0x00015ef8
_lw gp,0x18(s8)
li v0,0x2
beq s1,v0,0x00015ccc
_lw v0,-0x7fd8(gp)
lw a1,-0x7fc8(gp)
li a2,0x5
lw t9,-0x7af0(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x103c
li a0,0x4
lw gp,0x18(s8)
or s0,v0,zero
lw t9,-0x7fb8(gp)
bal 0x00024090
_lw a1,0x0(s2)
or a1,zero,zero
lw gp,0x18(s8)
li a0,0x1
or a3,v0,zero
lw t9,-0x7b58(gp)
jalr t9
_or a2,s0,zero
addiu s1,s1,-0x1
sll s7,s1,0x2
addu v0,s0,s7
lw s6,0x0(v0)
bne s6,zero,0x00015a40
_lw v0,-0x7fd8(gp)
b 0x00015cd0
_lw s1,0x0(s0)
jalr t9
_nop
li v0,0x1
lw t9,-0x7af0(gp)
li a2,0x5
bne s1,v0,0x00015fe0
_or a0,zero,zero
lw a1,-0x7fc8(gp)
jalr t9
_addiu a1,a1,0xfb4
li a0,0x4
lw gp,0x18(s8)
lw a1,0x0(s0)
lw t9,-0x7fb8(gp)
bal 0x00024090
_or s0,v0,zero
or a1,zero,zero
lw gp,0x18(s8)
or a0,zero,zero
or a3,v0,zero
lw t9,-0x7b58(gp)
jalr t9
_or a2,s0,zero
lw gp,0x18(s8)
lw t9,-0x7f74(gp)
bal 0x0001526c
_li a0,0x1
lw a1,-0x7fc8(gp)
li a2,0x5
lw t9,-0x7af0(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x1028
li a0,0x4
lw gp,0x18(s8)
lw a1,0x8(s0)
lw t9,-0x7fb8(gp)
bal 0x00024090
_or s0,v0,zero
or a0,zero,zero
lw gp,0x18(s8)
or a1,zero,zero
or a3,v0,zero
lw t9,-0x7b58(gp)
jalr t9
_or a2,s0,zero
lw gp,0x18(s8)
lw t9,-0x7f74(gp)
bal 0x0001526c
_li a0,0x1
lw a1,-0x7fc8(gp)
jalr t9
_addiu a1,a1,0xf9c
or a1,zero,zero
lw gp,0x18(s8)
or a0,zero,zero
lw t9,-0x7b58(gp)
jalr t9
_or a2,v0,zero
b 0x00015f78
_lw gp,0x18(s8)
lw a1,-0x7fc8(gp)
li a2,0x5
lw t9,-0x7af0(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x1060
or a0,zero,zero
lw gp,0x18(s8)
or a1,zero,zero
lw t9,-0x7b58(gp)
jalr t9
_or a2,v0,zero
lw gp,0x18(s8)
lw t9,-0x7f74(gp)
bal 0x0001526c
_li a0,0x1
lw a1,-0x7fc8(gp)
li a2,0x5
lw t9,-0x7af0(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0xfe0
or a1,zero,zero
lw gp,0x18(s8)
li a0,0x1
lw t9,-0x7b58(gp)
jalr t9
_or a2,v0,zero
nop
jr ra
_nop
(translation_unit "uint FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}\n\n" (function_definition "uint FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}" type_identifier (function_declarator "FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)" identifier (parameter_list "(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)" ( (parameter_declaration "EVP_PKEY_CTX *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "EVP_PKEY_CTX *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "EVP_PKEY_CTX *dst;" type_identifier (pointer_declarator "*dst" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "EVP_PKEY_CTX *pEVar20;" type_identifier (pointer_declarator "*pEVar20" * identifier) ;) (declaration "undefined1 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "undefined1 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "undefined1 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined1 auStack_120 [16];" type_identifier (array_declarator "auStack_120 [16]" identifier [ number_literal ]) ;) (declaration "int *local_110;" primitive_type (pointer_declarator "*local_110" * identifier) ;) (declaration "undefined4 local_10c;" type_identifier identifier ;) (declaration "char local_da;" primitive_type identifier ;) (declaration "undefined1 uStack_d9;" type_identifier identifier ;) (declaration "int local_d8;" primitive_type identifier ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "undefined1 auStack_d0 [24];" type_identifier (array_declarator "auStack_d0 [24]" identifier [ number_literal ]) ;) (declaration "uint local_b8;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar5 = PTR___stack_chk_guard_00044624" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00044624" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" * (cast_expression "(int *)PTR___stack_chk_guard_00044624" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_da = '\0';" (assignment_expression "local_da = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;" if (parenthesized_expression "((int)param_1 <= (int)(uint)(param_3 == 0))" ( (binary_expression "(int)param_1 <= (int)(uint)(param_3 == 0)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)(uint)(param_3 == 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(param_3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) ))))) )) (goto_statement "goto LAB_00015f20;" goto statement_identifier ;)) (expression_statement "bVar2 = (param_5[5] & 0xffff00U) != 0;" (assignment_expression "bVar2 = (param_5[5] & 0xffff00U) != 0" identifier = (binary_expression "(param_5[5] & 0xffff00U) != 0" (parenthesized_expression "(param_5[5] & 0xffff00U)" ( (binary_expression "param_5[5] & 0xffff00U" (subscript_expression "param_5[5]" identifier [ number_literal ]) & number_literal) )) != number_literal)) ;) (if_statement "if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }" { (expression_statement "iVar19 = (int)param_1 << 2;" (assignment_expression "iVar19 = (int)param_1 << 2" identifier = (binary_expression "(int)param_1 << 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (if_statement "if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }" { (if_statement "if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;" if (parenthesized_expression "(param_1 == (EVP_PKEY_CTX *)0x1)" ( (binary_expression "param_1 == (EVP_PKEY_CTX *)0x1" identifier == (cast_expression "(EVP_PKEY_CTX *)0x1" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015ccc;" goto statement_identifier ;)) (expression_statement "pEVar20 = param_2 + (int)param_1 * 4 + -4;" (assignment_expression "pEVar20 = param_2 + (int)param_1 * 4 + -4" identifier = (binary_expression "param_2 + (int)param_1 * 4 + -4" (binary_expression "param_2 + (int)param_1 * 4" identifier + (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);" (assignment_expression "iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" identifier = (call_expression "FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" identifier (argument_list "(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" ( (pointer_expression "*(undefined4 *)pEVar20" * (cast_expression "(undefined4 *)pEVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , (pointer_expression "&local_da" & identifier) , identifier )))) ;) (if_statement "if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }" { (if_statement "if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;" if (parenthesized_expression "(param_1 == (EVP_PKEY_CTX *)0x2)" ( (binary_expression "param_1 == (EVP_PKEY_CTX *)0x2" identifier == (cast_expression "(EVP_PKEY_CTX *)0x2" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015ccc;" goto statement_identifier ;)) (expression_statement "param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);" (assignment_expression "param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" identifier = (cast_expression "(EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x103c" identifier + number_literal) , number_literal ))))) ;) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)pEVar20)" identifier = (call_expression "quotearg_style(4,*(undefined4 *)pEVar20)" identifier (argument_list "(4,*(undefined4 *)pEVar20)" ( number_literal , (pointer_expression "*(undefined4 *)pEVar20" * (cast_expression "(undefined4 *)pEVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(1,0,param_2,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(1,0,param_2,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0,param_2,uVar10)" ( number_literal , number_literal , identifier , identifier ))) ;) })) (expression_statement "param_1 = param_1 + -1;" (assignment_expression "param_1 = param_1 + -1" identifier = (binary_expression "param_1 + -1" identifier + number_literal)) ;) (expression_statement "iVar19 = (int)param_1 * 4;" (assignment_expression "iVar19 = (int)param_1 * 4" identifier = (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "param_3 = *(int *)(param_2 + iVar19);" (assignment_expression "param_3 = *(int *)(param_2 + iVar19)" identifier = (pointer_expression "*(int *)(param_2 + iVar19)" * (cast_expression "(int *)(param_2 + iVar19)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar19)" ( (binary_expression "param_2 + iVar19" identifier + identifier) ))))) ;) (if_statement "if (param_3 != 0) goto LAB_00015a40;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00015a40;" goto statement_identifier ;)) (expression_statement "param_1 = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "param_1 = *(EVP_PKEY_CTX **)param_2" identifier = (pointer_expression "*(EVP_PKEY_CTX **)param_2" * (cast_expression "(EVP_PKEY_CTX **)param_2" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (goto_statement "goto LAB_00015cd0;" goto statement_identifier ;) })) (labeled_statement "LAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" statement_identifier : (if_statement "if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" if (parenthesized_expression "(param_1 != (EVP_PKEY_CTX *)0x1)" ( (binary_expression "param_1 != (EVP_PKEY_CTX *)0x1" identifier != (cast_expression "(EVP_PKEY_CTX *)0x1" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" { (expression_statement "dest_info_init(param_5);" (call_expression "dest_info_init(param_5)" identifier (argument_list "(param_5)" ( identifier ))) ;) (expression_statement "src_info_init(param_5);" (call_expression "src_info_init(param_5)" identifier (argument_list "(param_5)" ( identifier ))) ;) }))) (expression_statement "puVar4 = PTR_s_option___H_follow_command_line_s_00044128;" (assignment_expression "puVar4 = PTR_s_option___H_follow_command_line_s_00044128" identifier = identifier) ;) (expression_statement "puVar3 = PTR_DAT_00044118;" (assignment_expression "puVar3 = PTR_DAT_00044118" identifier = identifier) ;) (expression_statement "pEVar20 = param_2 + iVar19;" (assignment_expression "pEVar20 = param_2 + iVar19" identifier = (binary_expression "param_2 + iVar19" identifier + identifier)) ;) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "pcVar6 = (code *)(PTR_00044124 + 0x4f50);" (assignment_expression "pcVar6 = (code *)(PTR_00044124 + 0x4f50)" identifier = (cast_expression "(code *)(PTR_00044124 + 0x4f50)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_00044124 + 0x4f50)" ( (binary_expression "PTR_00044124 + 0x4f50" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_00044124 + 0x48b0);" (assignment_expression "pcVar7 = (code *)(PTR_00044124 + 0x48b0)" identifier = (cast_expression "(code *)(PTR_00044124 + 0x48b0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_00044124 + 0x48b0)" ( (binary_expression "PTR_00044124 + 0x48b0" identifier + number_literal) )))) ;) (expression_statement "puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;" (assignment_expression "puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" identifier = (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" identifier + number_literal)) ;) (expression_statement "puVar22 = auStack_120;" (assignment_expression "puVar22 = auStack_120" identifier = identifier) ;) (do_statement "do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);" do (compound_statement "{\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    }" { (expression_statement "dst = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "dst = *(EVP_PKEY_CTX **)param_2" identifier = (pointer_expression "*(EVP_PKEY_CTX **)param_2" * (cast_expression "(EVP_PKEY_CTX **)param_2" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" identifier = number_literal) ;) (if_statement "if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }" if (parenthesized_expression "(puVar3[0x46e4] != '\0')" ( (binary_expression "puVar3[0x46e4] != '\0'" (subscript_expression "puVar3[0x46e4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        strip_trailing_slashes(dst);\n      }" { (expression_statement "strip_trailing_slashes(dst);" (call_expression "strip_trailing_slashes(dst)" identifier (argument_list "(dst)" ( identifier ))) ;) })) (if_statement "if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" if (parenthesized_expression "(puVar3[0x46e5] == '\0')" ( (binary_expression "puVar3[0x46e5] == '\0'" (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }" { (expression_statement "uVar10 = last_component(dst);" (assignment_expression "uVar10 = last_component(dst)" identifier = (call_expression "last_component(dst)" identifier (argument_list "(dst)" ( identifier )))) ;) (expression_statement "iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);" (assignment_expression "iVar11 = (*(code *)PTR_strlen_00044558)(uVar10)" identifier = (call_expression "(*(code *)PTR_strlen_00044558)(uVar10)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" ( (pointer_expression "*(code *)PTR_strlen_00044558" * (cast_expression "(code *)PTR_strlen_00044558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar10)" ( identifier )))) ;) (expression_statement "iVar19 = -(iVar11 + 8U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar11 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar11 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar11 + 8U & 0xfffffff8)" ( (binary_expression "iVar11 + 8U & 0xfffffff8" (binary_expression "iVar11 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) (expression_statement "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);" (assignment_expression "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" identifier = (call_expression "(*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" ( (pointer_expression "*(code *)PTR_memcpy_00044628" * (cast_expression "(code *)PTR_memcpy_00044628" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" ( (binary_expression "puVar22 + iVar19 + 0x18" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) , identifier , (binary_expression "iVar11 + 1" identifier + number_literal) )))) ;) (expression_statement "strip_trailing_slashes(uVar10);" (call_expression "strip_trailing_slashes(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);" (assignment_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c)" identifier = (call_expression "(*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" ( (pointer_expression "*(code *)PTR_strcmp_00044664" * (cast_expression "(code *)PTR_strcmp_00044664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar10,puVar4 + 0x105c)" ( identifier , (binary_expression "puVar4 + 0x105c" identifier + number_literal) )))) ;) (if_statement "if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }" { (expression_statement "param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)xstrdup(param_3)" identifier = (cast_expression "(EVP_PKEY_CTX *)xstrdup(param_3)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) }) (else_clause "else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" else (compound_statement "{\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" { (expression_statement "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0)" identifier = (cast_expression "(EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "file_name_concat(param_3,uVar10,0)" identifier (argument_list "(param_3,uVar10,0)" ( identifier , identifier , number_literal ))))) ;) }))) (labeled_statement "LAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar23 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(puVar23 + 0x14) = 0" (pointer_expression "*(undefined4 *)(puVar23 + 0x14)" * (cast_expression "(undefined4 *)(puVar23 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 0x14)" ( (binary_expression "puVar23 + 0x14" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined1 **)(puVar23 + 0x10) = &uStack_d9;" (assignment_expression "*(undefined1 **)(puVar23 + 0x10) = &uStack_d9" (pointer_expression "*(undefined1 **)(puVar23 + 0x10)" * (cast_expression "(undefined1 **)(puVar23 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + 0x10)" ( (binary_expression "puVar23 + 0x10" identifier + number_literal) )))) = (pointer_expression "&uStack_d9" & identifier)) ;) (expression_statement "uVar12 = copy(dst,param_1);" (assignment_expression "uVar12 = copy(dst,param_1)" identifier = (call_expression "copy(dst,param_1)" identifier (argument_list "(dst,param_1)" ( identifier , identifier )))) ;) (expression_statement "uVar18 = uVar12 & uVar18;" (assignment_expression "uVar18 = uVar12 & uVar18" identifier = (binary_expression "uVar12 & uVar18" identifier & identifier)) ;) (expression_statement "puVar21 = puVar23;" (assignment_expression "puVar21 = puVar23" identifier = identifier) ;) (if_statement "if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }" if (parenthesized_expression "(puVar3[0x46e5] != '\0')" ( (binary_expression "puVar3[0x46e5] != '\0'" (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }" { (expression_statement "uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);" (assignment_expression "uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5)" identifier = (call_expression "(*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_d4 - (int)param_1,local_d8,param_5)" ( identifier , (binary_expression "local_d4 - (int)param_1" identifier - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , identifier )))) ;) (expression_statement "uVar18 = uVar18 & uVar12;" (assignment_expression "uVar18 = uVar18 & uVar12" identifier = (binary_expression "uVar18 & uVar12" identifier & identifier)) ;) (expression_statement "cVar1 = puVar3[0x46e5];" (assignment_expression "cVar1 = puVar3[0x46e5]" identifier = (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00015b5c;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" else (compound_statement "{\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" { (expression_statement "iVar11 = (*(code *)PTR_strlen_00044558)(dst);" (assignment_expression "iVar11 = (*(code *)PTR_strlen_00044558)(dst)" identifier = (call_expression "(*(code *)PTR_strlen_00044558)(dst)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" ( (pointer_expression "*(code *)PTR_strlen_00044558" * (cast_expression "(code *)PTR_strlen_00044558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dst)" ( identifier )))) ;) (expression_statement "iVar19 = -(iVar11 + 8U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar11 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar11 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar11 + 8U & 0xfffffff8)" ( (binary_expression "iVar11 + 8U & 0xfffffff8" (binary_expression "iVar11 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) (expression_statement "puVar21 = puVar22 + iVar19;" (assignment_expression "puVar21 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) (expression_statement "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);" (assignment_expression "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" identifier = (call_expression "(*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" ( (pointer_expression "*(code *)PTR_memcpy_00044628" * (cast_expression "(code *)PTR_memcpy_00044628" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" ( (binary_expression "puVar22 + iVar19 + 0x18" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) , identifier , (binary_expression "iVar11 + 1" identifier + number_literal) )))) ;) (expression_statement "strip_trailing_slashes(uVar10);" (call_expression "strip_trailing_slashes(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4)" identifier = (cast_expression "(EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "file_name_concat(param_3,uVar10,&local_d4)" identifier (argument_list "(param_3,uVar10,&local_d4)" ( identifier , identifier , (pointer_expression "&local_d4" & identifier) ))))) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (if_statement "if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }" if (parenthesized_expression "(*(char *)((int)param_5 + 0x2e) == '\0')" ( (binary_expression "*(char *)((int)param_5 + 0x2e) == '\0'" (pointer_expression "*(char *)((int)param_5 + 0x2e)" * (cast_expression "(char *)((int)param_5 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x2e)" ( (binary_expression "(int)param_5 + 0x2e" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar9 = (undefined *)0x0;\n        }" { (expression_statement "puVar9 = (undefined *)0x0;" (assignment_expression "puVar9 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar11 = local_d4 - (int)param_1;" (assignment_expression "iVar11 = local_d4 - (int)param_1" identifier = (binary_expression "local_d4 - (int)param_1" identifier - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int **)(puVar22 + iVar19 + 0x14) = param_5;" (assignment_expression "*(int **)(puVar22 + iVar19 + 0x14) = param_5" (pointer_expression "*(int **)(puVar22 + iVar19 + 0x14)" * (cast_expression "(int **)(puVar22 + iVar19 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + iVar19 + 0x14)" ( (binary_expression "puVar22 + iVar19 + 0x14" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar22 + iVar19 + 0x10) = &local_da;" (assignment_expression "*(char **)(puVar22 + iVar19 + 0x10) = &local_da" (pointer_expression "*(char **)(puVar22 + iVar19 + 0x10)" * (cast_expression "(char **)(puVar22 + iVar19 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + iVar19 + 0x10)" ( (binary_expression "puVar22 + iVar19 + 0x10" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_da" & identifier)) ;) (expression_statement "iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);" (assignment_expression "iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8)" identifier = (call_expression "(*pcVar7)(param_1,iVar11,puVar9,&local_d8)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,iVar11,puVar9,&local_d8)" ( identifier , identifier , identifier , (pointer_expression "&local_d8" & identifier) )))) ;) (if_statement "if (iVar19 != 0) goto LAB_00015c30;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00015c30;" goto statement_identifier ;)) (expression_statement "cVar1 = puVar3[0x46e5];" (assignment_expression "cVar1 = puVar3[0x46e5]" identifier = (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" statement_identifier : (if_statement "if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" { (while_statement "while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }" while (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (compound_statement "{\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }" { (expression_statement "local_d8 = *(int *)(local_d8 + 0xa8);" (assignment_expression "local_d8 = *(int *)(local_d8 + 0xa8)" identifier = (pointer_expression "*(int *)(local_d8 + 0xa8)" * (cast_expression "(int *)(local_d8 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d8 + 0xa8)" ( (binary_expression "local_d8 + 0xa8" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_free_0004462c)();" (call_expression "(*(code *)PTR_free_0004462c)()" (parenthesized_expression "(*(code *)PTR_free_0004462c)" ( (pointer_expression "*(code *)PTR_free_0004462c" * (cast_expression "(code *)PTR_free_0004462c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) }))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_free_0004462c)(param_1);" (call_expression "(*(code *)PTR_free_0004462c)(param_1)" (parenthesized_expression "(*(code *)PTR_free_0004462c)" ( (pointer_expression "*(code *)PTR_free_0004462c" * (cast_expression "(code *)PTR_free_0004462c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "puVar22 = puVar21;" (assignment_expression "puVar22 = puVar21" identifier = identifier) ;) }) while (parenthesized_expression "(pEVar20 != param_2)" ( (binary_expression "pEVar20 != param_2" identifier != identifier) )) ;) }) (else_clause "else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" else (compound_statement "{\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" { (if_statement "if (param_3 != 0) goto LAB_0001604c;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001604c;" goto statement_identifier ;)) (if_statement "if (2 < (int)param_1) goto LAB_00015f84;" if (parenthesized_expression "(2 < (int)param_1)" ( (binary_expression "2 < (int)param_1" number_literal < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00015f84;" goto statement_identifier ;)) (expression_statement "FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);" (call_expression "FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2)" identifier (argument_list "(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2)" ( (pointer_expression "*(undefined4 *)(param_2 + (int)param_1 * 4 + -4)" * (cast_expression "(undefined4 *)(param_2 + (int)param_1 * 4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (int)param_1 * 4 + -4)" ( (binary_expression "param_2 + (int)param_1 * 4 + -4" (binary_expression "param_2 + (int)param_1 * 4" identifier + (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) , identifier , (pointer_expression "&local_da" & identifier) , identifier ))) ;) (labeled_statement "LAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;" statement_identifier : (expression_statement "param_1 = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "param_1 = *(EVP_PKEY_CTX **)param_2" identifier = (pointer_expression "*(EVP_PKEY_CTX **)param_2" * (cast_expression "(EVP_PKEY_CTX **)param_2" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;)) (labeled_statement "LAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);" statement_identifier : (expression_statement "param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);" (assignment_expression "param_2 = *(EVP_PKEY_CTX **)(param_2 + 4)" identifier = (pointer_expression "*(EVP_PKEY_CTX **)(param_2 + 4)" * (cast_expression "(EVP_PKEY_CTX **)(param_2 + 4)" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;)) (if_statement "if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }" if (parenthesized_expression "(PTR_DAT_00044118[0x46e5] != '\0')" ( (binary_expression "PTR_DAT_00044118[0x46e5] != '\0'" (subscript_expression "PTR_DAT_00044118[0x46e5]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }" { (expression_statement "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);" (assignment_expression "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1060" identifier + number_literal) , number_literal )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,uVar10)" ( number_literal , number_literal , identifier ))) ;) (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (labeled_statement "LAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);" statement_identifier : (expression_statement "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);" (assignment_expression "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0" identifier + number_literal) , number_literal )))) ;)) (expression_statement "uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);" (assignment_expression "uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10)" identifier = (call_expression "(*(code *)PTR_error_00044598)(1,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0,uVar10)" ( number_literal , number_literal , identifier )))) ;) (return_statement "return uVar18;" return identifier ;) })) (if_statement "if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }" if (parenthesized_expression "((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000))))" ( (binary_expression "(((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))" (parenthesized_expression "(((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0))" ( (binary_expression "((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)" (parenthesized_expression "((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0))" ( (binary_expression "(*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)" (parenthesized_expression "(*(char *)((int)param_5 + 0x16) != '\0')" ( (binary_expression "*(char *)((int)param_5 + 0x16) != '\0'" (pointer_expression "*(char *)((int)param_5 + 0x16)" * (cast_expression "(char *)((int)param_5 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x16)" ( (binary_expression "(int)param_5 + 0x16" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar19 = *param_5, iVar19 != 0)" ( (comma_expression "iVar19 = *param_5, iVar19 != 0" (assignment_expression "iVar19 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) , (binary_expression "iVar19 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)" ( (comma_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0" (assignment_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2)" identifier = (call_expression "(*(code *)PTR_strcmp_00044664)(param_1,param_2)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" ( (pointer_expression "*(code *)PTR_strcmp_00044664" * (cast_expression "(code *)PTR_strcmp_00044664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) , (binary_expression "iVar11 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))" ( (parenthesized_expression "(local_da == '\0' && ((local_b8 & 0xf000) == 0x8000))" ( (binary_expression "local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)" (binary_expression "local_da == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "((local_b8 & 0xf000) == 0x8000)" ( (binary_expression "(local_b8 & 0xf000) == 0x8000" (parenthesized_expression "(local_b8 & 0xf000)" ( (binary_expression "local_b8 & 0xf000" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }" { (expression_statement "param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);" (assignment_expression "param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19)" identifier = (cast_expression "(EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "find_backup_file_name(param_2,iVar19)" identifier (argument_list "(param_2,iVar19)" ( identifier , identifier ))))) ;) (expression_statement "puVar3 = PTR_DAT_00044118;" (assignment_expression "puVar3 = PTR_DAT_00044118" identifier = identifier) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);" (assignment_expression "piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0)" identifier = (cast_expression "(int *)(PTR_DAT_00044118 + 0x46a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00044118 + 0x46a0)" ( (binary_expression "PTR_DAT_00044118 + 0x46a0" identifier + number_literal) )))) ;) (expression_statement "piVar15 = param_5;" (assignment_expression "piVar15 = param_5" identifier = identifier) ;) (do_statement "do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);" do (compound_statement "{\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      }" { (expression_statement "piVar16 = piVar15 + 4;" (assignment_expression "piVar16 = piVar15 + 4" identifier = (binary_expression "piVar15 + 4" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar13 + 4;" (assignment_expression "piVar14 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "iVar17 = piVar15[1];" (assignment_expression "iVar17 = piVar15[1]" identifier = (subscript_expression "piVar15[1]" identifier [ number_literal ])) ;) (expression_statement "iVar11 = piVar15[2];" (assignment_expression "iVar11 = piVar15[2]" identifier = (subscript_expression "piVar15[2]" identifier [ number_literal ])) ;) (expression_statement "iVar19 = piVar15[3];" (assignment_expression "iVar19 = piVar15[3]" identifier = (subscript_expression "piVar15[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar13 = *piVar15;" (assignment_expression "*piVar13 = *piVar15" (pointer_expression "*piVar13" * identifier) = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "piVar13[1] = iVar17;" (assignment_expression "piVar13[1] = iVar17" (subscript_expression "piVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[2] = iVar11;" (assignment_expression "piVar13[2] = iVar11" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[3] = iVar19;" (assignment_expression "piVar13[3] = iVar19" (subscript_expression "piVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13 = piVar14;" (assignment_expression "piVar13 = piVar14" identifier = identifier) ;) (expression_statement "piVar15 = piVar16;" (assignment_expression "piVar15 = piVar16" identifier = identifier) ;) }) while (parenthesized_expression "(piVar16 != param_5 + 0x10)" ( (binary_expression "piVar16 != param_5 + 0x10" identifier != (binary_expression "param_5 + 0x10" identifier + number_literal)) )) ;) (expression_statement "*piVar14 = *piVar16;" (assignment_expression "*piVar14 = *piVar16" (pointer_expression "*piVar14" * identifier) = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x46a0) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x46a0) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x46a0)" * (cast_expression "(undefined4 *)(puVar3 + 0x46a0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x46a0)" ( (binary_expression "puVar3 + 0x46a0" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "local_110 = &local_d4;" (assignment_expression "local_110 = &local_d4" identifier = (pointer_expression "&local_d4" & identifier)) ;) (expression_statement "local_10c = 0;" (assignment_expression "local_10c = 0" identifier = number_literal) ;) (expression_statement "uVar18 = copy(param_1,param_2);" (assignment_expression "uVar18 = copy(param_1,param_2)" identifier = (call_expression "copy(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) }))) (if_statement "if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar5)" ( (binary_expression "local_2c == *(int *)puVar5" identifier == (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar18;\n  }" { (return_statement "return uVar18;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" * (cast_expression "(code *)PTR___stack_chk_fail_000445f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00015f20:\n  pEVar20 = param_2;" statement_identifier : (expression_statement "pEVar20 = param_2;" (assignment_expression "pEVar20 = param_2" identifier = identifier) ;)) (expression_statement "pcVar6 = (code *)PTR_dcgettext_00044600;" (assignment_expression "pcVar6 = (code *)PTR_dcgettext_00044600" identifier = (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;" if (parenthesized_expression "(param_1 != (EVP_PKEY_CTX *)0x1)" ( (binary_expression "param_1 != (EVP_PKEY_CTX *)0x1" identifier != (cast_expression "(EVP_PKEY_CTX *)0x1" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015fe0;" goto statement_identifier ;)) (expression_statement "pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);" (assignment_expression "pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" identifier = (cast_expression "(EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4" identifier + number_literal) , number_literal ))))) ;) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)param_2);" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)param_2)" identifier = (call_expression "quotearg_style(4,*(undefined4 *)param_2)" identifier (argument_list "(4,*(undefined4 *)param_2)" ( number_literal , (pointer_expression "*(undefined4 *)param_2" * (cast_expression "(undefined4 *)param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,pEVar20,uVar10)" ( number_literal , number_literal , identifier , identifier ))) ;) (do_statement "do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );" do (compound_statement "{\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  }" { (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "param_2 = pEVar20;" (assignment_expression "param_2 = pEVar20" identifier = identifier) ;) (labeled_statement "LAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);" statement_identifier : (expression_statement "pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);" (assignment_expression "pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" identifier = (cast_expression "(EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1028" identifier + number_literal) , number_literal ))))) ;)) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "quotearg_style(4,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(4,*(undefined4 *)(param_2 + 8))" ( number_literal , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,pEVar20,uVar10)" ( number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "pcVar6 = (code *)PTR_usage_0004417c;" (assignment_expression "pcVar6 = (code *)PTR_usage_0004417c" identifier = (cast_expression "(code *)PTR_usage_0004417c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (labeled_statement "LAB_00015fe0:\n    uVar10 = (*pcVar6)();" statement_identifier : (expression_statement "uVar10 = (*pcVar6)();" (assignment_expression "uVar10 = (*pcVar6)()" identifier = (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( )))) ;)) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,uVar10)" ( number_literal , number_literal , identifier ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "_Bool do_copy(int n_files,char **file,char *target_directory,_Bool no_target_directory,cp_options *x\n             )\n\n{\n  char cVar1;\n  bool forcing;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined3 extraout_var;\n  code *pcVar5;\n  code *pcVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  char *pcVar9;\n  int iVar10;\n  uint uVar11;\n  backup_type *pbVar12;\n  backup_type *pbVar13;\n  _Bool _Var15;\n  undefined4 uVar14;\n  undefined1 uVar16;\n  cp_options *pcVar17;\n  mode_t *pmVar18;\n  int iVar19;\n  Sparse_type SVar20;\n  undefined3 in_register_0000001c;\n  backup_type bVar21;\n  EVP_PKEY_CTX *dst;\n  backup_type bVar22;\n  uint uVar23;\n  int iVar24;\n  EVP_PKEY_CTX *pEVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined1 auStack_120 [16];\n  char **ppcStack_110;\n  undefined4 uStack_10c;\n  _Bool new_dst;\n  _Bool copy_into_self;\n  dir_attr *attr_list;\n  char *arg_in_concat;\n  stat sb;\n  \n  puVar4 = PTR___stack_chk_guard_00044624;\n  iVar19 = *(int *)PTR___stack_chk_guard_00044624;\n  new_dst = false;\n  uVar23._0_1_ = x->copy_as_regular;\n  uVar23._1_1_ = x->unlink_dest_before_opening;\n  uVar23._2_1_ = x->unlink_dest_after_failed_open;\n  uVar23._3_1_ = x->hard_link;\n  if (n_files <= (int)(uint)(target_directory == (char *)0x0)) goto LAB_00015f20;\n  forcing = (uVar23 & 0xffff00) != 0;\n  if (CONCAT31(in_register_0000001c,no_target_directory) != 0) {\n    if (target_directory != (char *)0x0) {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);\n      return (_Bool)uVar16;\n    }\n    if (2 < n_files) {\n      (*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n                    /* WARNING: Subroutine does not return */\n      quotearg_style(shell_escape_always_quoting_style,file[2]);\n    }\n    target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n    goto LAB_00015ccc;\n  }\n  iVar24 = n_files << 2;\n  if (target_directory == (char *)0x0) {\n    if (n_files == 1) {\nLAB_00015ccc:\n      n_files = (int)*file;\n    }\n    else {\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }\n    file = (char **)file[1];\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n      usage(1);\n    }\n    if ((((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))) {\n      file = (char **)find_backup_file_name((char *)file,bVar22);\n      puVar2 = PTR_DAT_00044118;\n      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);\n      pcVar17 = x;\n      do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);\n      *pbVar13 = *pmVar18;\n      *(undefined4 *)(puVar2 + 0x46a0) = 0;\n    }\n    ppcStack_110 = &arg_in_concat;\n    uStack_10c = 0;\n    iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file);\n    uVar16 = (undefined1)iVar24;\n  }\n  else {\nLAB_00015a40:\n    if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }\n    puVar3 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar2 = PTR_DAT_00044118;\n    pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);\n    uVar23 = 1;\n    pcVar5 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar6 = (code *)(PTR_00044124 + 0x48b0);\n    puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar27 = auStack_120;\n    do {\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    } while (pEVar25 != (EVP_PKEY_CTX *)file);\n  }\n  if (iVar19 == *(int *)puVar4) {\n    return (_Bool)uVar16;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  if ((EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1) {\n    uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);\n    (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n    usage(1);\n  }\n  (*(code *)PTR_dcgettext_00044600)(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4);\n                    /* WARNING: Subroutine does not return */\n  quotearg_style(shell_escape_always_quoting_style,*file);\n}\n\n" (function_definition "_Bool do_copy(int n_files,char **file,char *target_directory,_Bool no_target_directory,cp_options *x\n             )\n\n{\n  char cVar1;\n  bool forcing;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined3 extraout_var;\n  code *pcVar5;\n  code *pcVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  char *pcVar9;\n  int iVar10;\n  uint uVar11;\n  backup_type *pbVar12;\n  backup_type *pbVar13;\n  _Bool _Var15;\n  undefined4 uVar14;\n  undefined1 uVar16;\n  cp_options *pcVar17;\n  mode_t *pmVar18;\n  int iVar19;\n  Sparse_type SVar20;\n  undefined3 in_register_0000001c;\n  backup_type bVar21;\n  EVP_PKEY_CTX *dst;\n  backup_type bVar22;\n  uint uVar23;\n  int iVar24;\n  EVP_PKEY_CTX *pEVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined1 auStack_120 [16];\n  char **ppcStack_110;\n  undefined4 uStack_10c;\n  _Bool new_dst;\n  _Bool copy_into_self;\n  dir_attr *attr_list;\n  char *arg_in_concat;\n  stat sb;\n  \n  puVar4 = PTR___stack_chk_guard_00044624;\n  iVar19 = *(int *)PTR___stack_chk_guard_00044624;\n  new_dst = false;\n  uVar23._0_1_ = x->copy_as_regular;\n  uVar23._1_1_ = x->unlink_dest_before_opening;\n  uVar23._2_1_ = x->unlink_dest_after_failed_open;\n  uVar23._3_1_ = x->hard_link;\n  if (n_files <= (int)(uint)(target_directory == (char *)0x0)) goto LAB_00015f20;\n  forcing = (uVar23 & 0xffff00) != 0;\n  if (CONCAT31(in_register_0000001c,no_target_directory) != 0) {\n    if (target_directory != (char *)0x0) {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);\n      return (_Bool)uVar16;\n    }\n    if (2 < n_files) {\n      (*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n                    /* WARNING: Subroutine does not return */\n      quotearg_style(shell_escape_always_quoting_style,file[2]);\n    }\n    target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n    goto LAB_00015ccc;\n  }\n  iVar24 = n_files << 2;\n  if (target_directory == (char *)0x0) {\n    if (n_files == 1) {\nLAB_00015ccc:\n      n_files = (int)*file;\n    }\n    else {\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }\n    file = (char **)file[1];\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n      usage(1);\n    }\n    if ((((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))) {\n      file = (char **)find_backup_file_name((char *)file,bVar22);\n      puVar2 = PTR_DAT_00044118;\n      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);\n      pcVar17 = x;\n      do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);\n      *pbVar13 = *pmVar18;\n      *(undefined4 *)(puVar2 + 0x46a0) = 0;\n    }\n    ppcStack_110 = &arg_in_concat;\n    uStack_10c = 0;\n    iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file);\n    uVar16 = (undefined1)iVar24;\n  }\n  else {\nLAB_00015a40:\n    if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }\n    puVar3 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar2 = PTR_DAT_00044118;\n    pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);\n    uVar23 = 1;\n    pcVar5 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar6 = (code *)(PTR_00044124 + 0x48b0);\n    puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar27 = auStack_120;\n    do {\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    } while (pEVar25 != (EVP_PKEY_CTX *)file);\n  }\n  if (iVar19 == *(int *)puVar4) {\n    return (_Bool)uVar16;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  if ((EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1) {\n    uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);\n    (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n    usage(1);\n  }\n  (*(code *)PTR_dcgettext_00044600)(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4);\n                    /* WARNING: Subroutine does not return */\n  quotearg_style(shell_escape_always_quoting_style,*file);\n}" type_identifier (function_declarator "do_copy(int n_files,char **file,char *target_directory,_Bool no_target_directory,cp_options *x\n             )" identifier (parameter_list "(int n_files,char **file,char *target_directory,_Bool no_target_directory,cp_options *x\n             )" ( (parameter_declaration "int n_files" primitive_type identifier) , (parameter_declaration "char **file" primitive_type (pointer_declarator "**file" * (pointer_declarator "*file" * identifier))) , (parameter_declaration "char *target_directory" primitive_type (pointer_declarator "*target_directory" * identifier)) , (parameter_declaration "_Bool no_target_directory" type_identifier identifier) , (parameter_declaration "cp_options *x" type_identifier (pointer_declarator "*x" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  bool forcing;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined3 extraout_var;\n  code *pcVar5;\n  code *pcVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  char *pcVar9;\n  int iVar10;\n  uint uVar11;\n  backup_type *pbVar12;\n  backup_type *pbVar13;\n  _Bool _Var15;\n  undefined4 uVar14;\n  undefined1 uVar16;\n  cp_options *pcVar17;\n  mode_t *pmVar18;\n  int iVar19;\n  Sparse_type SVar20;\n  undefined3 in_register_0000001c;\n  backup_type bVar21;\n  EVP_PKEY_CTX *dst;\n  backup_type bVar22;\n  uint uVar23;\n  int iVar24;\n  EVP_PKEY_CTX *pEVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  undefined1 auStack_120 [16];\n  char **ppcStack_110;\n  undefined4 uStack_10c;\n  _Bool new_dst;\n  _Bool copy_into_self;\n  dir_attr *attr_list;\n  char *arg_in_concat;\n  stat sb;\n  \n  puVar4 = PTR___stack_chk_guard_00044624;\n  iVar19 = *(int *)PTR___stack_chk_guard_00044624;\n  new_dst = false;\n  uVar23._0_1_ = x->copy_as_regular;\n  uVar23._1_1_ = x->unlink_dest_before_opening;\n  uVar23._2_1_ = x->unlink_dest_after_failed_open;\n  uVar23._3_1_ = x->hard_link;\n  if (n_files <= (int)(uint)(target_directory == (char *)0x0)) goto LAB_00015f20;\n  forcing = (uVar23 & 0xffff00) != 0;\n  if (CONCAT31(in_register_0000001c,no_target_directory) != 0) {\n    if (target_directory != (char *)0x0) {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);\n      return (_Bool)uVar16;\n    }\n    if (2 < n_files) {\n      (*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n                    /* WARNING: Subroutine does not return */\n      quotearg_style(shell_escape_always_quoting_style,file[2]);\n    }\n    target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n    goto LAB_00015ccc;\n  }\n  iVar24 = n_files << 2;\n  if (target_directory == (char *)0x0) {\n    if (n_files == 1) {\nLAB_00015ccc:\n      n_files = (int)*file;\n    }\n    else {\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }\n    file = (char **)file[1];\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n      usage(1);\n    }\n    if ((((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))) {\n      file = (char **)find_backup_file_name((char *)file,bVar22);\n      puVar2 = PTR_DAT_00044118;\n      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);\n      pcVar17 = x;\n      do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);\n      *pbVar13 = *pmVar18;\n      *(undefined4 *)(puVar2 + 0x46a0) = 0;\n    }\n    ppcStack_110 = &arg_in_concat;\n    uStack_10c = 0;\n    iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file);\n    uVar16 = (undefined1)iVar24;\n  }\n  else {\nLAB_00015a40:\n    if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }\n    puVar3 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar2 = PTR_DAT_00044118;\n    pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);\n    uVar23 = 1;\n    pcVar5 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar6 = (code *)(PTR_00044124 + 0x48b0);\n    puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar27 = auStack_120;\n    do {\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    } while (pEVar25 != (EVP_PKEY_CTX *)file);\n  }\n  if (iVar19 == *(int *)puVar4) {\n    return (_Bool)uVar16;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  if ((EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1) {\n    uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);\n    (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n    usage(1);\n  }\n  (*(code *)PTR_dcgettext_00044600)(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4);\n                    /* WARNING: Subroutine does not return */\n  quotearg_style(shell_escape_always_quoting_style,*file);\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "bool forcing;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "backup_type *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "backup_type *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "_Bool _Var15;" type_identifier identifier ;) (declaration "undefined4 uVar14;" type_identifier identifier ;) (declaration "undefined1 uVar16;" type_identifier identifier ;) (declaration "cp_options *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "mode_t *pmVar18;" type_identifier (pointer_declarator "*pmVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "Sparse_type SVar20;" type_identifier identifier ;) (declaration "undefined3 in_register_0000001c;" type_identifier identifier ;) (declaration "backup_type bVar21;" type_identifier identifier ;) (declaration "EVP_PKEY_CTX *dst;" type_identifier (pointer_declarator "*dst" * identifier) ;) (declaration "backup_type bVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "EVP_PKEY_CTX *pEVar25;" type_identifier (pointer_declarator "*pEVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined1 auStack_120 [16];" type_identifier (array_declarator "auStack_120 [16]" identifier [ number_literal ]) ;) (declaration "char **ppcStack_110;" primitive_type (pointer_declarator "**ppcStack_110" * (pointer_declarator "*ppcStack_110" * identifier)) ;) (declaration "undefined4 uStack_10c;" type_identifier identifier ;) (declaration "_Bool new_dst;" type_identifier identifier ;) (declaration "_Bool copy_into_self;" type_identifier identifier ;) (declaration "dir_attr *attr_list;" type_identifier (pointer_declarator "*attr_list" * identifier) ;) (declaration "char *arg_in_concat;" primitive_type (pointer_declarator "*arg_in_concat" * identifier) ;) (declaration "stat sb;" type_identifier identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00044624" identifier = identifier) ;) (expression_statement "iVar19 = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "iVar19 = *(int *)PTR___stack_chk_guard_00044624" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" * (cast_expression "(int *)PTR___stack_chk_guard_00044624" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "new_dst = false;" (assignment_expression "new_dst = false" identifier = false) ;) (expression_statement "uVar23._0_1_ = x->copy_as_regular;" (assignment_expression "uVar23._0_1_ = x->copy_as_regular" (field_expression "uVar23._0_1_" identifier . field_identifier) = (field_expression "x->copy_as_regular" identifier -> field_identifier)) ;) (expression_statement "uVar23._1_1_ = x->unlink_dest_before_opening;" (assignment_expression "uVar23._1_1_ = x->unlink_dest_before_opening" (field_expression "uVar23._1_1_" identifier . field_identifier) = (field_expression "x->unlink_dest_before_opening" identifier -> field_identifier)) ;) (expression_statement "uVar23._2_1_ = x->unlink_dest_after_failed_open;" (assignment_expression "uVar23._2_1_ = x->unlink_dest_after_failed_open" (field_expression "uVar23._2_1_" identifier . field_identifier) = (field_expression "x->unlink_dest_after_failed_open" identifier -> field_identifier)) ;) (expression_statement "uVar23._3_1_ = x->hard_link;" (assignment_expression "uVar23._3_1_ = x->hard_link" (field_expression "uVar23._3_1_" identifier . field_identifier) = (field_expression "x->hard_link" identifier -> field_identifier)) ;) (if_statement "if (n_files <= (int)(uint)(target_directory == (char *)0x0)) goto LAB_00015f20;" if (parenthesized_expression "(n_files <= (int)(uint)(target_directory == (char *)0x0))" ( (binary_expression "n_files <= (int)(uint)(target_directory == (char *)0x0)" identifier <= (cast_expression "(int)(uint)(target_directory == (char *)0x0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(target_directory == (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(target_directory == (char *)0x0)" ( (binary_expression "target_directory == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))))) )) (goto_statement "goto LAB_00015f20;" goto statement_identifier ;)) (expression_statement "forcing = (uVar23 & 0xffff00) != 0;" (assignment_expression "forcing = (uVar23 & 0xffff00) != 0" identifier = (binary_expression "(uVar23 & 0xffff00) != 0" (parenthesized_expression "(uVar23 & 0xffff00)" ( (binary_expression "uVar23 & 0xffff00" identifier & number_literal) )) != number_literal)) ;) (if_statement "if (CONCAT31(in_register_0000001c,no_target_directory) != 0) {\n    if (target_directory != (char *)0x0) {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);\n      return (_Bool)uVar16;\n    }\n    if (2 < n_files) {\n      (*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n                    /* WARNING: Subroutine does not return */\n      quotearg_style(shell_escape_always_quoting_style,file[2]);\n    }\n    target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n    goto LAB_00015ccc;\n  }" if (parenthesized_expression "(CONCAT31(in_register_0000001c,no_target_directory) != 0)" ( (binary_expression "CONCAT31(in_register_0000001c,no_target_directory) != 0" (call_expression "CONCAT31(in_register_0000001c,no_target_directory)" identifier (argument_list "(in_register_0000001c,no_target_directory)" ( identifier , identifier ))) != number_literal) )) (compound_statement "{\n    if (target_directory != (char *)0x0) {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);\n      return (_Bool)uVar16;\n    }\n    if (2 < n_files) {\n      (*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n                    /* WARNING: Subroutine does not return */\n      quotearg_style(shell_escape_always_quoting_style,file[2]);\n    }\n    target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n    goto LAB_00015ccc;\n  }" { (if_statement "if (target_directory != (char *)0x0) {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);\n      return (_Bool)uVar16;\n    }" if (parenthesized_expression "(target_directory != (char *)0x0)" ( (binary_expression "target_directory != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);\n      return (_Bool)uVar16;\n    }" { (expression_statement "uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);" (assignment_expression "uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0" identifier + number_literal) , number_literal )))) ;) (expression_statement "uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14);" (assignment_expression "uVar16 = (*(code *)PTR_error_00044598)(1,0,uVar14)" identifier = (call_expression "(*(code *)PTR_error_00044598)(1,0,uVar14)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0,uVar14)" ( number_literal , number_literal , identifier )))) ;) (return_statement "return (_Bool)uVar16;" return (cast_expression "(_Bool)uVar16" ( (type_descriptor "_Bool" type_identifier) ) identifier) ;) })) (if_statement "if (2 < n_files) {\n      (*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n                    /* WARNING: Subroutine does not return */\n      quotearg_style(shell_escape_always_quoting_style,file[2]);\n    }" if (parenthesized_expression "(2 < n_files)" ( (binary_expression "2 < n_files" number_literal < identifier) )) (compound_statement "{\n      (*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n                    /* WARNING: Subroutine does not return */\n      quotearg_style(shell_escape_always_quoting_style,file[2]);\n    }" { (expression_statement "(*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);" (call_expression "(*(code *)PTR_dcgettext_00044600)\n                (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1028" identifier + number_literal) , number_literal ))) ;) comment (expression_statement "quotearg_style(shell_escape_always_quoting_style,file[2]);" (call_expression "quotearg_style(shell_escape_always_quoting_style,file[2])" identifier (argument_list "(shell_escape_always_quoting_style,file[2])" ( identifier , (subscript_expression "file[2]" identifier [ number_literal ]) ))) ;) })) (expression_statement "target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);" (call_expression "target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing)" identifier (argument_list "(file[n_files + -1],&sb,&new_dst,forcing)" ( (subscript_expression "file[n_files + -1]" identifier [ (binary_expression "n_files + -1" identifier + number_literal) ]) , (pointer_expression "&sb" & identifier) , (pointer_expression "&new_dst" & identifier) , identifier ))) ;) (goto_statement "goto LAB_00015ccc;" goto statement_identifier ;) })) (expression_statement "iVar24 = n_files << 2;" (assignment_expression "iVar24 = n_files << 2" identifier = (binary_expression "n_files << 2" identifier << number_literal)) ;) (if_statement "if (target_directory == (char *)0x0) {\n    if (n_files == 1) {\nLAB_00015ccc:\n      n_files = (int)*file;\n    }\n    else {\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }\n    file = (char **)file[1];\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n      usage(1);\n    }\n    if ((((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))) {\n      file = (char **)find_backup_file_name((char *)file,bVar22);\n      puVar2 = PTR_DAT_00044118;\n      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);\n      pcVar17 = x;\n      do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);\n      *pbVar13 = *pmVar18;\n      *(undefined4 *)(puVar2 + 0x46a0) = 0;\n    }\n    ppcStack_110 = &arg_in_concat;\n    uStack_10c = 0;\n    iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file);\n    uVar16 = (undefined1)iVar24;\n  }\n  else {\nLAB_00015a40:\n    if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }\n    puVar3 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar2 = PTR_DAT_00044118;\n    pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);\n    uVar23 = 1;\n    pcVar5 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar6 = (code *)(PTR_00044124 + 0x48b0);\n    puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar27 = auStack_120;\n    do {\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    } while (pEVar25 != (EVP_PKEY_CTX *)file);\n  }" if (parenthesized_expression "(target_directory == (char *)0x0)" ( (binary_expression "target_directory == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (n_files == 1) {\nLAB_00015ccc:\n      n_files = (int)*file;\n    }\n    else {\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }\n    file = (char **)file[1];\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n      usage(1);\n    }\n    if ((((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))) {\n      file = (char **)find_backup_file_name((char *)file,bVar22);\n      puVar2 = PTR_DAT_00044118;\n      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);\n      pcVar17 = x;\n      do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);\n      *pbVar13 = *pmVar18;\n      *(undefined4 *)(puVar2 + 0x46a0) = 0;\n    }\n    ppcStack_110 = &arg_in_concat;\n    uStack_10c = 0;\n    iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file);\n    uVar16 = (undefined1)iVar24;\n  }" { (if_statement "if (n_files == 1) {\nLAB_00015ccc:\n      n_files = (int)*file;\n    }\n    else {\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }" if (parenthesized_expression "(n_files == 1)" ( (binary_expression "n_files == 1" identifier == number_literal) )) (compound_statement "{\nLAB_00015ccc:\n      n_files = (int)*file;\n    }" { (labeled_statement "LAB_00015ccc:\n      n_files = (int)*file;" statement_identifier : (expression_statement "n_files = (int)*file;" (assignment_expression "n_files = (int)*file" identifier = (cast_expression "(int)*file" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*file" * identifier))) ;)) }) (else_clause "else {\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }" else (compound_statement "{\n      _Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);\n      if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }\n      n_files = n_files + -1;\n      iVar24 = n_files * 4;\n      target_directory = file[n_files];\n      if (target_directory != (char *)0x0) goto LAB_00015a40;\n      n_files = (int)*file;\n    }" { (expression_statement "_Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing);" (assignment_expression "_Var15 = target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing)" identifier = (call_expression "target_directory_operand(file[n_files + -1],&sb,&new_dst,forcing)" identifier (argument_list "(file[n_files + -1],&sb,&new_dst,forcing)" ( (subscript_expression "file[n_files + -1]" identifier [ (binary_expression "n_files + -1" identifier + number_literal) ]) , (pointer_expression "&sb" & identifier) , (pointer_expression "&new_dst" & identifier) , identifier )))) ;) (if_statement "if (CONCAT31(extraout_var,_Var15) == 0) {\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }" if (parenthesized_expression "(CONCAT31(extraout_var,_Var15) == 0)" ( (binary_expression "CONCAT31(extraout_var,_Var15) == 0" (call_expression "CONCAT31(extraout_var,_Var15)" identifier (argument_list "(extraout_var,_Var15)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n        if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }\n        goto LAB_00015ccc;\n      }" { (if_statement "if (n_files != 2) {\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }" if (parenthesized_expression "(n_files != 2)" ( (binary_expression "n_files != 2" identifier != number_literal) )) (compound_statement "{\n          (*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n                    /* WARNING: Subroutine does not return */\n          quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);\n        }" { (expression_statement "(*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);" (call_expression "(*(code *)PTR_dcgettext_00044600)\n                    (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x103c" identifier + number_literal) , number_literal ))) ;) comment (expression_statement "quotearg_style(shell_escape_always_quoting_style,file[n_files + -1]);" (call_expression "quotearg_style(shell_escape_always_quoting_style,file[n_files + -1])" identifier (argument_list "(shell_escape_always_quoting_style,file[n_files + -1])" ( identifier , (subscript_expression "file[n_files + -1]" identifier [ (binary_expression "n_files + -1" identifier + number_literal) ]) ))) ;) })) (goto_statement "goto LAB_00015ccc;" goto statement_identifier ;) })) (expression_statement "n_files = n_files + -1;" (assignment_expression "n_files = n_files + -1" identifier = (binary_expression "n_files + -1" identifier + number_literal)) ;) (expression_statement "iVar24 = n_files * 4;" (assignment_expression "iVar24 = n_files * 4" identifier = (binary_expression "n_files * 4" identifier * number_literal)) ;) (expression_statement "target_directory = file[n_files];" (assignment_expression "target_directory = file[n_files]" identifier = (subscript_expression "file[n_files]" identifier [ identifier ])) ;) (if_statement "if (target_directory != (char *)0x0) goto LAB_00015a40;" if (parenthesized_expression "(target_directory != (char *)0x0)" ( (binary_expression "target_directory != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015a40;" goto statement_identifier ;)) (expression_statement "n_files = (int)*file;" (assignment_expression "n_files = (int)*file" identifier = (cast_expression "(int)*file" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*file" * identifier))) ;) }))) (expression_statement "file = (char **)file[1];" (assignment_expression "file = (char **)file[1]" identifier = (cast_expression "(char **)file[1]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "file[1]" identifier [ number_literal ]))) ;) (if_statement "if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n      usage(1);\n    }" if (parenthesized_expression "(PTR_DAT_00044118[0x46e5] != '\0')" ( (binary_expression "PTR_DAT_00044118[0x46e5] != '\0'" (subscript_expression "PTR_DAT_00044118[0x46e5]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n      usage(1);\n    }" { (expression_statement "uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);" (assignment_expression "uVar14 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1060" identifier + number_literal) , number_literal )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar14);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar14)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,uVar14)" ( number_literal , number_literal , identifier ))) ;) comment (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) (if_statement "if ((((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))) {\n      file = (char **)find_backup_file_name((char *)file,bVar22);\n      puVar2 = PTR_DAT_00044118;\n      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);\n      pcVar17 = x;\n      do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);\n      *pbVar13 = *pmVar18;\n      *(undefined4 *)(puVar2 + 0x46a0) = 0;\n    }" if (parenthesized_expression "((((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000))))" ( (binary_expression "(((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)) &&\n       ((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))" (parenthesized_expression "(((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0))" ( (binary_expression "((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)) &&\n        (iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)" (parenthesized_expression "((x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups))" ( (binary_expression "(x->unlink_dest_after_failed_open != false) &&\n         (bVar22 = x->backup_type, bVar22 != no_backups)" (parenthesized_expression "(x->unlink_dest_after_failed_open != false)" ( (binary_expression "x->unlink_dest_after_failed_open != false" (field_expression "x->unlink_dest_after_failed_open" identifier -> field_identifier) != false) )) && (parenthesized_expression "(bVar22 = x->backup_type, bVar22 != no_backups)" ( (comma_expression "bVar22 = x->backup_type, bVar22 != no_backups" (assignment_expression "bVar22 = x->backup_type" identifier = (field_expression "x->backup_type" identifier -> field_identifier)) , (binary_expression "bVar22 != no_backups" identifier != identifier)) ))) )) && (parenthesized_expression "(iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0)" ( (comma_expression "iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file), iVar24 == 0" (assignment_expression "iVar24 = (*(code *)PTR_strcmp_00044664)(n_files,file)" identifier = (call_expression "(*(code *)PTR_strcmp_00044664)(n_files,file)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" ( (pointer_expression "*(code *)PTR_strcmp_00044664" * (cast_expression "(code *)PTR_strcmp_00044664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(n_files,file)" ( identifier , identifier )))) , (binary_expression "iVar24 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "((new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)))" ( (parenthesized_expression "(new_dst == false && ((sb.st_mode & 0xf000) == 0x8000))" ( (binary_expression "new_dst == false && ((sb.st_mode & 0xf000) == 0x8000)" (binary_expression "new_dst == false" identifier == false) && (parenthesized_expression "((sb.st_mode & 0xf000) == 0x8000)" ( (binary_expression "(sb.st_mode & 0xf000) == 0x8000" (parenthesized_expression "(sb.st_mode & 0xf000)" ( (binary_expression "sb.st_mode & 0xf000" (field_expression "sb.st_mode" identifier . field_identifier) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      file = (char **)find_backup_file_name((char *)file,bVar22);\n      puVar2 = PTR_DAT_00044118;\n      pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);\n      pcVar17 = x;\n      do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);\n      *pbVar13 = *pmVar18;\n      *(undefined4 *)(puVar2 + 0x46a0) = 0;\n    }" { (expression_statement "file = (char **)find_backup_file_name((char *)file,bVar22);" (assignment_expression "file = (char **)find_backup_file_name((char *)file,bVar22)" identifier = (cast_expression "(char **)find_backup_file_name((char *)file,bVar22)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "find_backup_file_name((char *)file,bVar22)" identifier (argument_list "((char *)file,bVar22)" ( (cast_expression "(char *)file" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (expression_statement "puVar2 = PTR_DAT_00044118;" (assignment_expression "puVar2 = PTR_DAT_00044118" identifier = identifier) ;) (expression_statement "pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0);" (assignment_expression "pbVar12 = (backup_type *)(PTR_DAT_00044118 + 0x46a0)" identifier = (cast_expression "(backup_type *)(PTR_DAT_00044118 + 0x46a0)" ( (type_descriptor "backup_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00044118 + 0x46a0)" ( (binary_expression "PTR_DAT_00044118 + 0x46a0" identifier + number_literal) )))) ;) (expression_statement "pcVar17 = x;" (assignment_expression "pcVar17 = x" identifier = identifier) ;) (do_statement "do {\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      } while ((Hash_table **)pmVar18 != &x->src_info);" do (compound_statement "{\n        pmVar18 = &pcVar17->mode;\n        pbVar13 = pbVar12 + 4;\n        bVar21 = pcVar17->dereference;\n        bVar22 = pcVar17->interactive;\n        SVar20 = pcVar17->sparse_mode;\n        *pbVar12 = pcVar17->backup_type;\n        pbVar12[1] = bVar21;\n        pbVar12[2] = bVar22;\n        pbVar12[3] = SVar20;\n        pbVar12 = pbVar13;\n        pcVar17 = (cp_options *)pmVar18;\n      }" { (expression_statement "pmVar18 = &pcVar17->mode;" (assignment_expression "pmVar18 = &pcVar17->mode" identifier = (pointer_expression "&pcVar17->mode" & (field_expression "pcVar17->mode" identifier -> field_identifier))) ;) (expression_statement "pbVar13 = pbVar12 + 4;" (assignment_expression "pbVar13 = pbVar12 + 4" identifier = (binary_expression "pbVar12 + 4" identifier + number_literal)) ;) (expression_statement "bVar21 = pcVar17->dereference;" (assignment_expression "bVar21 = pcVar17->dereference" identifier = (field_expression "pcVar17->dereference" identifier -> field_identifier)) ;) (expression_statement "bVar22 = pcVar17->interactive;" (assignment_expression "bVar22 = pcVar17->interactive" identifier = (field_expression "pcVar17->interactive" identifier -> field_identifier)) ;) (expression_statement "SVar20 = pcVar17->sparse_mode;" (assignment_expression "SVar20 = pcVar17->sparse_mode" identifier = (field_expression "pcVar17->sparse_mode" identifier -> field_identifier)) ;) (expression_statement "*pbVar12 = pcVar17->backup_type;" (assignment_expression "*pbVar12 = pcVar17->backup_type" (pointer_expression "*pbVar12" * identifier) = (field_expression "pcVar17->backup_type" identifier -> field_identifier)) ;) (expression_statement "pbVar12[1] = bVar21;" (assignment_expression "pbVar12[1] = bVar21" (subscript_expression "pbVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar12[2] = bVar22;" (assignment_expression "pbVar12[2] = bVar22" (subscript_expression "pbVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar12[3] = SVar20;" (assignment_expression "pbVar12[3] = SVar20" (subscript_expression "pbVar12[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar12 = pbVar13;" (assignment_expression "pbVar12 = pbVar13" identifier = identifier) ;) (expression_statement "pcVar17 = (cp_options *)pmVar18;" (assignment_expression "pcVar17 = (cp_options *)pmVar18" identifier = (cast_expression "(cp_options *)pmVar18" ( (type_descriptor "cp_options *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "((Hash_table **)pmVar18 != &x->src_info)" ( (binary_expression "(Hash_table **)pmVar18 != &x->src_info" (cast_expression "(Hash_table **)pmVar18" ( (type_descriptor "Hash_table **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) != (pointer_expression "&x->src_info" & (field_expression "x->src_info" identifier -> field_identifier))) )) ;) (expression_statement "*pbVar13 = *pmVar18;" (assignment_expression "*pbVar13 = *pmVar18" (pointer_expression "*pbVar13" * identifier) = (pointer_expression "*pmVar18" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 0x46a0) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 0x46a0) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 0x46a0)" * (cast_expression "(undefined4 *)(puVar2 + 0x46a0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x46a0)" ( (binary_expression "puVar2 + 0x46a0" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "ppcStack_110 = &arg_in_concat;" (assignment_expression "ppcStack_110 = &arg_in_concat" identifier = (pointer_expression "&arg_in_concat" & identifier)) ;) (expression_statement "uStack_10c = 0;" (assignment_expression "uStack_10c = 0" identifier = number_literal) ;) (expression_statement "iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file);" (assignment_expression "iVar24 = copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file)" identifier = (call_expression "copy((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file)" identifier (argument_list "((EVP_PKEY_CTX *)n_files,(EVP_PKEY_CTX *)file)" ( (cast_expression "(EVP_PKEY_CTX *)n_files" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(EVP_PKEY_CTX *)file" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "uVar16 = (undefined1)iVar24;" (assignment_expression "uVar16 = (undefined1)iVar24" identifier = (cast_expression "(undefined1)iVar24" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) }) (else_clause "else {\nLAB_00015a40:\n    if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }\n    puVar3 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar2 = PTR_DAT_00044118;\n    pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);\n    uVar23 = 1;\n    pcVar5 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar6 = (code *)(PTR_00044124 + 0x48b0);\n    puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar27 = auStack_120;\n    do {\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    } while (pEVar25 != (EVP_PKEY_CTX *)file);\n  }" else (compound_statement "{\nLAB_00015a40:\n    if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }\n    puVar3 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar2 = PTR_DAT_00044118;\n    pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);\n    uVar23 = 1;\n    pcVar5 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar6 = (code *)(PTR_00044124 + 0x48b0);\n    puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar27 = auStack_120;\n    do {\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    } while (pEVar25 != (EVP_PKEY_CTX *)file);\n  }" { (labeled_statement "LAB_00015a40:\n    if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }" statement_identifier : (if_statement "if (n_files != 1) {\n      dest_info_init(x);\n      src_info_init(x);\n    }" if (parenthesized_expression "(n_files != 1)" ( (binary_expression "n_files != 1" identifier != number_literal) )) (compound_statement "{\n      dest_info_init(x);\n      src_info_init(x);\n    }" { (expression_statement "dest_info_init(x);" (call_expression "dest_info_init(x)" identifier (argument_list "(x)" ( identifier ))) ;) (expression_statement "src_info_init(x);" (call_expression "src_info_init(x)" identifier (argument_list "(x)" ( identifier ))) ;) }))) (expression_statement "puVar3 = PTR_s_option___H_follow_command_line_s_00044128;" (assignment_expression "puVar3 = PTR_s_option___H_follow_command_line_s_00044128" identifier = identifier) ;) (expression_statement "puVar2 = PTR_DAT_00044118;" (assignment_expression "puVar2 = PTR_DAT_00044118" identifier = identifier) ;) (expression_statement "pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24);" (assignment_expression "pEVar25 = (EVP_PKEY_CTX *)((int)file + iVar24)" identifier = (cast_expression "(EVP_PKEY_CTX *)((int)file + iVar24)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)file + iVar24)" ( (binary_expression "(int)file + iVar24" (cast_expression "(int)file" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar23 = 1;" (assignment_expression "uVar23 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = (code *)(PTR_00044124 + 0x4f50);" (assignment_expression "pcVar5 = (code *)(PTR_00044124 + 0x4f50)" identifier = (cast_expression "(code *)(PTR_00044124 + 0x4f50)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_00044124 + 0x4f50)" ( (binary_expression "PTR_00044124 + 0x4f50" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_00044124 + 0x48b0);" (assignment_expression "pcVar6 = (code *)(PTR_00044124 + 0x48b0)" identifier = (cast_expression "(code *)(PTR_00044124 + 0x48b0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_00044124 + 0x48b0)" ( (binary_expression "PTR_00044124 + 0x48b0" identifier + number_literal) )))) ;) (expression_statement "puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;" (assignment_expression "puVar7 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" identifier = (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" identifier + number_literal)) ;) (expression_statement "puVar27 = auStack_120;" (assignment_expression "puVar27 = auStack_120" identifier = identifier) ;) (do_statement "do {\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    } while (pEVar25 != (EVP_PKEY_CTX *)file);" do (compound_statement "{\n      dst = (EVP_PKEY_CTX *)*file;\n      arg_in_concat = (char *)0x0;\n      if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }\n      if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      uVar16 = (undefined1)uVar23;\n      file = (char **)((int)file + 4);\n      (*(code *)PTR_free_0004462c)(n_files);\n      puVar27 = puVar26;\n    }" { (expression_statement "dst = (EVP_PKEY_CTX *)*file;" (assignment_expression "dst = (EVP_PKEY_CTX *)*file" identifier = (cast_expression "(EVP_PKEY_CTX *)*file" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*file" * identifier))) ;) (expression_statement "arg_in_concat = (char *)0x0;" (assignment_expression "arg_in_concat = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar2[0x46e4] != '\0') {\n        strip_trailing_slashes((char *)dst);\n      }" if (parenthesized_expression "(puVar2[0x46e4] != '\0')" ( (binary_expression "puVar2[0x46e4] != '\0'" (subscript_expression "puVar2[0x46e4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        strip_trailing_slashes((char *)dst);\n      }" { (expression_statement "strip_trailing_slashes((char *)dst);" (call_expression "strip_trailing_slashes((char *)dst)" identifier (argument_list "((char *)dst)" ( (cast_expression "(char *)dst" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (if_statement "if (puVar2[0x46e5] == '\0') {\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" if (parenthesized_expression "(puVar2[0x46e5] == '\0')" ( (binary_expression "puVar2[0x46e5] == '\0'" (subscript_expression "puVar2[0x46e5]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pcVar9 = last_component((char *)dst);\n        iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);\n        if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;\n        *(_Bool **)(puVar28 + 0x10) = &copy_into_self;\n        uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);\n        uVar23 = uVar11 & uVar23;\n        puVar26 = puVar28;\n        if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }" { (expression_statement "pcVar9 = last_component((char *)dst);" (assignment_expression "pcVar9 = last_component((char *)dst)" identifier = (call_expression "last_component((char *)dst)" identifier (argument_list "((char *)dst)" ( (cast_expression "(char *)dst" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9);" (assignment_expression "iVar10 = (*(code *)PTR_strlen_00044558)(pcVar9)" identifier = (call_expression "(*(code *)PTR_strlen_00044558)(pcVar9)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" ( (pointer_expression "*(code *)PTR_strlen_00044558" * (cast_expression "(code *)PTR_strlen_00044558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar9)" ( identifier )))) ;) (expression_statement "iVar24 = -(iVar10 + 8U & 0xfffffff8);" (assignment_expression "iVar24 = -(iVar10 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar10 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar10 + 8U & 0xfffffff8)" ( (binary_expression "iVar10 + 8U & 0xfffffff8" (binary_expression "iVar10 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = puVar27 + iVar24;" (assignment_expression "puVar28 = puVar27 + iVar24" identifier = (binary_expression "puVar27 + iVar24" identifier + identifier)) ;) (expression_statement "pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1);" (assignment_expression "pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1)" identifier = (cast_expression "(char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" ( (pointer_expression "*(code *)PTR_memcpy_00044628" * (cast_expression "(code *)PTR_memcpy_00044628" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar27 + iVar24 + 0x18,pcVar9,iVar10 + 1)" ( (binary_expression "puVar27 + iVar24 + 0x18" (binary_expression "puVar27 + iVar24" identifier + identifier) + number_literal) , identifier , (binary_expression "iVar10 + 1" identifier + number_literal) ))))) ;) (expression_statement "strip_trailing_slashes(pcVar9);" (call_expression "strip_trailing_slashes(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier ))) ;) (expression_statement "iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c);" (assignment_expression "iVar10 = (*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c)" identifier = (call_expression "(*(code *)PTR_strcmp_00044664)(pcVar9,puVar3 + 0x105c)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" ( (pointer_expression "*(code *)PTR_strcmp_00044664" * (cast_expression "(code *)PTR_strcmp_00044664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar9,puVar3 + 0x105c)" ( identifier , (binary_expression "puVar3 + 0x105c" identifier + number_literal) )))) ;) (if_statement "if (iVar10 == 0) {\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }\n        else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          n_files = (int)xstrdup(target_directory);\n          puVar28 = puVar27 + iVar24;\n        }" { (expression_statement "n_files = (int)xstrdup(target_directory);" (assignment_expression "n_files = (int)xstrdup(target_directory)" identifier = (cast_expression "(int)xstrdup(target_directory)" ( (type_descriptor "int" primitive_type) ) (call_expression "xstrdup(target_directory)" identifier (argument_list "(target_directory)" ( identifier ))))) ;) (expression_statement "puVar28 = puVar27 + iVar24;" (assignment_expression "puVar28 = puVar27 + iVar24" identifier = (binary_expression "puVar27 + iVar24" identifier + identifier)) ;) }) (else_clause "else {\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }" else (compound_statement "{\n          n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);\n        }" { (expression_statement "n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0);" (assignment_expression "n_files = (int)file_name_concat(target_directory,pcVar9,(char **)0x0)" identifier = (cast_expression "(int)file_name_concat(target_directory,pcVar9,(char **)0x0)" ( (type_descriptor "int" primitive_type) ) (call_expression "file_name_concat(target_directory,pcVar9,(char **)0x0)" identifier (argument_list "(target_directory,pcVar9,(char **)0x0)" ( identifier , identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ))))) ;) }))) (labeled_statement "LAB_00015c30:\n        *(undefined4 *)(puVar28 + 0x14) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar28 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(puVar28 + 0x14) = 0" (pointer_expression "*(undefined4 *)(puVar28 + 0x14)" * (cast_expression "(undefined4 *)(puVar28 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x14)" ( (binary_expression "puVar28 + 0x14" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(_Bool **)(puVar28 + 0x10) = &copy_into_self;" (assignment_expression "*(_Bool **)(puVar28 + 0x10) = &copy_into_self" (pointer_expression "*(_Bool **)(puVar28 + 0x10)" * (cast_expression "(_Bool **)(puVar28 + 0x10)" ( (type_descriptor "_Bool **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = (pointer_expression "&copy_into_self" & identifier)) ;) (expression_statement "uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files);" (assignment_expression "uVar11 = copy(dst,(EVP_PKEY_CTX *)n_files)" identifier = (call_expression "copy(dst,(EVP_PKEY_CTX *)n_files)" identifier (argument_list "(dst,(EVP_PKEY_CTX *)n_files)" ( identifier , (cast_expression "(EVP_PKEY_CTX *)n_files" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "uVar23 = uVar11 & uVar23;" (assignment_expression "uVar23 = uVar11 & uVar23" identifier = (binary_expression "uVar11 & uVar23" identifier & identifier)) ;) (expression_statement "puVar26 = puVar28;" (assignment_expression "puVar26 = puVar28" identifier = identifier) ;) (if_statement "if (puVar2[0x46e5] != '\0') {\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }" if (parenthesized_expression "(puVar2[0x46e5] != '\0')" ( (binary_expression "puVar2[0x46e5] != '\0'" (subscript_expression "puVar2[0x46e5]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);\n          uVar23 = uVar23 & uVar11;\n          cVar1 = puVar2[0x46e5];\n          goto LAB_00015b5c;\n        }" { (expression_statement "uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x);" (assignment_expression "uVar11 = (*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x)" identifier = (call_expression "(*pcVar5)(n_files,(int)arg_in_concat - n_files,attr_list,x)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(n_files,(int)arg_in_concat - n_files,attr_list,x)" ( identifier , (binary_expression "(int)arg_in_concat - n_files" (cast_expression "(int)arg_in_concat" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) , identifier , identifier )))) ;) (expression_statement "uVar23 = uVar23 & uVar11;" (assignment_expression "uVar23 = uVar23 & uVar11" identifier = (binary_expression "uVar23 & uVar11" identifier & identifier)) ;) (expression_statement "cVar1 = puVar2[0x46e5];" (assignment_expression "cVar1 = puVar2[0x46e5]" identifier = (subscript_expression "puVar2[0x46e5]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00015b5c;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" else (compound_statement "{\n        iVar10 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar24 = -(iVar10 + 8U & 0xfffffff8);\n        puVar28 = puVar27 + iVar24;\n        puVar26 = puVar27 + iVar24;\n        pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);\n        strip_trailing_slashes(pcVar9);\n        n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);\n        puVar8 = puVar7;\n        if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }\n        iVar10 = (int)arg_in_concat - n_files;\n        *(cp_options **)(puVar27 + iVar24 + 0x14) = x;\n        *(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;\n        iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);\n        if (iVar24 != 0) goto LAB_00015c30;\n        cVar1 = puVar2[0x46e5];\n        uVar23 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" { (expression_statement "iVar10 = (*(code *)PTR_strlen_00044558)(dst);" (assignment_expression "iVar10 = (*(code *)PTR_strlen_00044558)(dst)" identifier = (call_expression "(*(code *)PTR_strlen_00044558)(dst)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" ( (pointer_expression "*(code *)PTR_strlen_00044558" * (cast_expression "(code *)PTR_strlen_00044558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dst)" ( identifier )))) ;) (expression_statement "iVar24 = -(iVar10 + 8U & 0xfffffff8);" (assignment_expression "iVar24 = -(iVar10 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar10 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar10 + 8U & 0xfffffff8)" ( (binary_expression "iVar10 + 8U & 0xfffffff8" (binary_expression "iVar10 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = puVar27 + iVar24;" (assignment_expression "puVar28 = puVar27 + iVar24" identifier = (binary_expression "puVar27 + iVar24" identifier + identifier)) ;) (expression_statement "puVar26 = puVar27 + iVar24;" (assignment_expression "puVar26 = puVar27 + iVar24" identifier = (binary_expression "puVar27 + iVar24" identifier + identifier)) ;) (expression_statement "pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1);" (assignment_expression "pcVar9 = (char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1)" identifier = (cast_expression "(char *)(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_00044628)(puVar27 + iVar24 + 0x18,dst,iVar10 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" ( (pointer_expression "*(code *)PTR_memcpy_00044628" * (cast_expression "(code *)PTR_memcpy_00044628" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar27 + iVar24 + 0x18,dst,iVar10 + 1)" ( (binary_expression "puVar27 + iVar24 + 0x18" (binary_expression "puVar27 + iVar24" identifier + identifier) + number_literal) , identifier , (binary_expression "iVar10 + 1" identifier + number_literal) ))))) ;) (expression_statement "strip_trailing_slashes(pcVar9);" (call_expression "strip_trailing_slashes(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier ))) ;) (expression_statement "n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat);" (assignment_expression "n_files = (int)file_name_concat(target_directory,pcVar9,&arg_in_concat)" identifier = (cast_expression "(int)file_name_concat(target_directory,pcVar9,&arg_in_concat)" ( (type_descriptor "int" primitive_type) ) (call_expression "file_name_concat(target_directory,pcVar9,&arg_in_concat)" identifier (argument_list "(target_directory,pcVar9,&arg_in_concat)" ( identifier , identifier , (pointer_expression "&arg_in_concat" & identifier) ))))) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (if_statement "if (x->verbose == false) {\n          puVar8 = (undefined *)0x0;\n        }" if (parenthesized_expression "(x->verbose == false)" ( (binary_expression "x->verbose == false" (field_expression "x->verbose" identifier -> field_identifier) == false) )) (compound_statement "{\n          puVar8 = (undefined *)0x0;\n        }" { (expression_statement "puVar8 = (undefined *)0x0;" (assignment_expression "puVar8 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar10 = (int)arg_in_concat - n_files;" (assignment_expression "iVar10 = (int)arg_in_concat - n_files" identifier = (binary_expression "(int)arg_in_concat - n_files" (cast_expression "(int)arg_in_concat" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "*(cp_options **)(puVar27 + iVar24 + 0x14) = x;" (assignment_expression "*(cp_options **)(puVar27 + iVar24 + 0x14) = x" (pointer_expression "*(cp_options **)(puVar27 + iVar24 + 0x14)" * (cast_expression "(cp_options **)(puVar27 + iVar24 + 0x14)" ( (type_descriptor "cp_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + iVar24 + 0x14)" ( (binary_expression "puVar27 + iVar24 + 0x14" (binary_expression "puVar27 + iVar24" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst;" (assignment_expression "*(_Bool **)(puVar27 + iVar24 + 0x10) = &new_dst" (pointer_expression "*(_Bool **)(puVar27 + iVar24 + 0x10)" * (cast_expression "(_Bool **)(puVar27 + iVar24 + 0x10)" ( (type_descriptor "_Bool **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + iVar24 + 0x10)" ( (binary_expression "puVar27 + iVar24 + 0x10" (binary_expression "puVar27 + iVar24" identifier + identifier) + number_literal) )))) = (pointer_expression "&new_dst" & identifier)) ;) (expression_statement "iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list);" (assignment_expression "iVar24 = (*pcVar6)(n_files,iVar10,puVar8,&attr_list)" identifier = (call_expression "(*pcVar6)(n_files,iVar10,puVar8,&attr_list)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(n_files,iVar10,puVar8,&attr_list)" ( identifier , identifier , identifier , (pointer_expression "&attr_list" & identifier) )))) ;) (if_statement "if (iVar24 != 0) goto LAB_00015c30;" if (parenthesized_expression "(iVar24 != 0)" ( (binary_expression "iVar24 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00015c30;" goto statement_identifier ;)) (expression_statement "cVar1 = puVar2[0x46e5];" (assignment_expression "cVar1 = puVar2[0x46e5]" identifier = (subscript_expression "puVar2[0x46e5]" identifier [ number_literal ])) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" statement_identifier : (if_statement "if (cVar1 != '\0') {\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" { (while_statement "while (attr_list != (dir_attr *)0x0) {\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }" while (parenthesized_expression "(attr_list != (dir_attr *)0x0)" ( (binary_expression "attr_list != (dir_attr *)0x0" identifier != (cast_expression "(dir_attr *)0x0" ( (type_descriptor "dir_attr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            attr_list = attr_list->next;\n            (*(code *)PTR_free_0004462c)();\n          }" { (expression_statement "attr_list = attr_list->next;" (assignment_expression "attr_list = attr_list->next" identifier = (field_expression "attr_list->next" identifier -> field_identifier)) ;) (expression_statement "(*(code *)PTR_free_0004462c)();" (call_expression "(*(code *)PTR_free_0004462c)()" (parenthesized_expression "(*(code *)PTR_free_0004462c)" ( (pointer_expression "*(code *)PTR_free_0004462c" * (cast_expression "(code *)PTR_free_0004462c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) }))) (expression_statement "uVar16 = (undefined1)uVar23;" (assignment_expression "uVar16 = (undefined1)uVar23" identifier = (cast_expression "(undefined1)uVar23" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "file = (char **)((int)file + 4);" (assignment_expression "file = (char **)((int)file + 4)" identifier = (cast_expression "(char **)((int)file + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)file + 4)" ( (binary_expression "(int)file + 4" (cast_expression "(int)file" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(*(code *)PTR_free_0004462c)(n_files);" (call_expression "(*(code *)PTR_free_0004462c)(n_files)" (parenthesized_expression "(*(code *)PTR_free_0004462c)" ( (pointer_expression "*(code *)PTR_free_0004462c" * (cast_expression "(code *)PTR_free_0004462c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(n_files)" ( identifier ))) ;) (expression_statement "puVar27 = puVar26;" (assignment_expression "puVar27 = puVar26" identifier = identifier) ;) }) while (parenthesized_expression "(pEVar25 != (EVP_PKEY_CTX *)file)" ( (binary_expression "pEVar25 != (EVP_PKEY_CTX *)file" identifier != (cast_expression "(EVP_PKEY_CTX *)file" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) }))) (if_statement "if (iVar19 == *(int *)puVar4) {\n    return (_Bool)uVar16;\n  }" if (parenthesized_expression "(iVar19 == *(int *)puVar4)" ( (binary_expression "iVar19 == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return (_Bool)uVar16;\n  }" { (return_statement "return (_Bool)uVar16;" return (cast_expression "(_Bool)uVar16" ( (type_descriptor "_Bool" type_identifier) ) identifier) ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" * (cast_expression "(code *)PTR___stack_chk_fail_000445f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00015f20:\n  if ((EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1) {\n    uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);\n    (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n    usage(1);\n  }" statement_identifier : (if_statement "if ((EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1) {\n    uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);\n    (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n    usage(1);\n  }" if (parenthesized_expression "((EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1)" ( (binary_expression "(EVP_PKEY_CTX *)n_files != (EVP_PKEY_CTX *)0x1" (cast_expression "(EVP_PKEY_CTX *)n_files" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(EVP_PKEY_CTX *)0x1" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);\n    (*(code *)PTR_error_00044598)(0,0,uVar14);\n                    /* WARNING: Subroutine does not return */\n    usage(1);\n  }" { (expression_statement "uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5);" (assignment_expression "uVar14 = (*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00044600)\n                       (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xf9c" identifier + number_literal) , number_literal )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar14);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar14)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,uVar14)" ( number_literal , number_literal , identifier ))) ;) comment (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) }))) (expression_statement "(*(code *)PTR_dcgettext_00044600)(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4);" (call_expression "(*(code *)PTR_dcgettext_00044600)(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4" identifier + number_literal) ))) ;) comment (expression_statement "quotearg_style(shell_escape_always_quoting_style,*file);" (call_expression "quotearg_style(shell_escape_always_quoting_style,*file)" identifier (argument_list "(shell_escape_always_quoting_style,*file)" ( identifier , (pointer_expression "*file" * identifier) ))) ;) })))
(translation_unit "uint FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}\n\n" (function_definition "uint FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}" type_identifier (function_declarator "FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)" identifier (parameter_list "(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)" ( (parameter_declaration "EVP_PKEY_CTX *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "EVP_PKEY_CTX *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "EVP_PKEY_CTX *dst;" type_identifier (pointer_declarator "*dst" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "EVP_PKEY_CTX *pEVar20;" type_identifier (pointer_declarator "*pEVar20" * identifier) ;) (declaration "undefined1 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "undefined1 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "undefined1 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined1 auStack_120 [16];" type_identifier (array_declarator "auStack_120 [16]" identifier [ number_literal ]) ;) (declaration "int *local_110;" primitive_type (pointer_declarator "*local_110" * identifier) ;) (declaration "undefined4 local_10c;" type_identifier identifier ;) (declaration "char local_da;" primitive_type identifier ;) (declaration "undefined1 uStack_d9;" type_identifier identifier ;) (declaration "int local_d8;" primitive_type identifier ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "undefined1 auStack_d0 [24];" type_identifier (array_declarator "auStack_d0 [24]" identifier [ number_literal ]) ;) (declaration "uint local_b8;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar5 = PTR___stack_chk_guard_00044624" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00044624" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" * (cast_expression "(int *)PTR___stack_chk_guard_00044624" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_da = '\0';" (assignment_expression "local_da = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;" if (parenthesized_expression "((int)param_1 <= (int)(uint)(param_3 == 0))" ( (binary_expression "(int)param_1 <= (int)(uint)(param_3 == 0)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)(uint)(param_3 == 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(param_3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) ))))) )) (goto_statement "goto LAB_00015f20;" goto statement_identifier ;)) (expression_statement "bVar2 = (param_5[5] & 0xffff00U) != 0;" (assignment_expression "bVar2 = (param_5[5] & 0xffff00U) != 0" identifier = (binary_expression "(param_5[5] & 0xffff00U) != 0" (parenthesized_expression "(param_5[5] & 0xffff00U)" ( (binary_expression "param_5[5] & 0xffff00U" (subscript_expression "param_5[5]" identifier [ number_literal ]) & number_literal) )) != number_literal)) ;) (if_statement "if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }" { (expression_statement "iVar19 = (int)param_1 << 2;" (assignment_expression "iVar19 = (int)param_1 << 2" identifier = (binary_expression "(int)param_1 << 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (if_statement "if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }" { (if_statement "if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;" if (parenthesized_expression "(param_1 == (EVP_PKEY_CTX *)0x1)" ( (binary_expression "param_1 == (EVP_PKEY_CTX *)0x1" identifier == (cast_expression "(EVP_PKEY_CTX *)0x1" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015ccc;" goto statement_identifier ;)) (expression_statement "pEVar20 = param_2 + (int)param_1 * 4 + -4;" (assignment_expression "pEVar20 = param_2 + (int)param_1 * 4 + -4" identifier = (binary_expression "param_2 + (int)param_1 * 4 + -4" (binary_expression "param_2 + (int)param_1 * 4" identifier + (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);" (assignment_expression "iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" identifier = (call_expression "FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" identifier (argument_list "(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" ( (pointer_expression "*(undefined4 *)pEVar20" * (cast_expression "(undefined4 *)pEVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , (pointer_expression "&local_da" & identifier) , identifier )))) ;) (if_statement "if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }" { (if_statement "if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;" if (parenthesized_expression "(param_1 == (EVP_PKEY_CTX *)0x2)" ( (binary_expression "param_1 == (EVP_PKEY_CTX *)0x2" identifier == (cast_expression "(EVP_PKEY_CTX *)0x2" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015ccc;" goto statement_identifier ;)) (expression_statement "param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);" (assignment_expression "param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" identifier = (cast_expression "(EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x103c" identifier + number_literal) , number_literal ))))) ;) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)pEVar20)" identifier = (call_expression "quotearg_style(4,*(undefined4 *)pEVar20)" identifier (argument_list "(4,*(undefined4 *)pEVar20)" ( number_literal , (pointer_expression "*(undefined4 *)pEVar20" * (cast_expression "(undefined4 *)pEVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(1,0,param_2,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(1,0,param_2,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0,param_2,uVar10)" ( number_literal , number_literal , identifier , identifier ))) ;) })) (expression_statement "param_1 = param_1 + -1;" (assignment_expression "param_1 = param_1 + -1" identifier = (binary_expression "param_1 + -1" identifier + number_literal)) ;) (expression_statement "iVar19 = (int)param_1 * 4;" (assignment_expression "iVar19 = (int)param_1 * 4" identifier = (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "param_3 = *(int *)(param_2 + iVar19);" (assignment_expression "param_3 = *(int *)(param_2 + iVar19)" identifier = (pointer_expression "*(int *)(param_2 + iVar19)" * (cast_expression "(int *)(param_2 + iVar19)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar19)" ( (binary_expression "param_2 + iVar19" identifier + identifier) ))))) ;) (if_statement "if (param_3 != 0) goto LAB_00015a40;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00015a40;" goto statement_identifier ;)) (expression_statement "param_1 = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "param_1 = *(EVP_PKEY_CTX **)param_2" identifier = (pointer_expression "*(EVP_PKEY_CTX **)param_2" * (cast_expression "(EVP_PKEY_CTX **)param_2" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (goto_statement "goto LAB_00015cd0;" goto statement_identifier ;) })) (labeled_statement "LAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" statement_identifier : (if_statement "if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" if (parenthesized_expression "(param_1 != (EVP_PKEY_CTX *)0x1)" ( (binary_expression "param_1 != (EVP_PKEY_CTX *)0x1" identifier != (cast_expression "(EVP_PKEY_CTX *)0x1" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" { (expression_statement "dest_info_init(param_5);" (call_expression "dest_info_init(param_5)" identifier (argument_list "(param_5)" ( identifier ))) ;) (expression_statement "src_info_init(param_5);" (call_expression "src_info_init(param_5)" identifier (argument_list "(param_5)" ( identifier ))) ;) }))) (expression_statement "puVar4 = PTR_s_option___H_follow_command_line_s_00044128;" (assignment_expression "puVar4 = PTR_s_option___H_follow_command_line_s_00044128" identifier = identifier) ;) (expression_statement "puVar3 = PTR_DAT_00044118;" (assignment_expression "puVar3 = PTR_DAT_00044118" identifier = identifier) ;) (expression_statement "pEVar20 = param_2 + iVar19;" (assignment_expression "pEVar20 = param_2 + iVar19" identifier = (binary_expression "param_2 + iVar19" identifier + identifier)) ;) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "pcVar6 = (code *)(PTR_00044124 + 0x4f50);" (assignment_expression "pcVar6 = (code *)(PTR_00044124 + 0x4f50)" identifier = (cast_expression "(code *)(PTR_00044124 + 0x4f50)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_00044124 + 0x4f50)" ( (binary_expression "PTR_00044124 + 0x4f50" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_00044124 + 0x48b0);" (assignment_expression "pcVar7 = (code *)(PTR_00044124 + 0x48b0)" identifier = (cast_expression "(code *)(PTR_00044124 + 0x48b0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_00044124 + 0x48b0)" ( (binary_expression "PTR_00044124 + 0x48b0" identifier + number_literal) )))) ;) (expression_statement "puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;" (assignment_expression "puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" identifier = (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" identifier + number_literal)) ;) (expression_statement "puVar22 = auStack_120;" (assignment_expression "puVar22 = auStack_120" identifier = identifier) ;) (do_statement "do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);" do (compound_statement "{\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    }" { (expression_statement "dst = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "dst = *(EVP_PKEY_CTX **)param_2" identifier = (pointer_expression "*(EVP_PKEY_CTX **)param_2" * (cast_expression "(EVP_PKEY_CTX **)param_2" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" identifier = number_literal) ;) (if_statement "if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }" if (parenthesized_expression "(puVar3[0x46e4] != '\0')" ( (binary_expression "puVar3[0x46e4] != '\0'" (subscript_expression "puVar3[0x46e4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        strip_trailing_slashes(dst);\n      }" { (expression_statement "strip_trailing_slashes(dst);" (call_expression "strip_trailing_slashes(dst)" identifier (argument_list "(dst)" ( identifier ))) ;) })) (if_statement "if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" if (parenthesized_expression "(puVar3[0x46e5] == '\0')" ( (binary_expression "puVar3[0x46e5] == '\0'" (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }" { (expression_statement "uVar10 = last_component(dst);" (assignment_expression "uVar10 = last_component(dst)" identifier = (call_expression "last_component(dst)" identifier (argument_list "(dst)" ( identifier )))) ;) (expression_statement "iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);" (assignment_expression "iVar11 = (*(code *)PTR_strlen_00044558)(uVar10)" identifier = (call_expression "(*(code *)PTR_strlen_00044558)(uVar10)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" ( (pointer_expression "*(code *)PTR_strlen_00044558" * (cast_expression "(code *)PTR_strlen_00044558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar10)" ( identifier )))) ;) (expression_statement "iVar19 = -(iVar11 + 8U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar11 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar11 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar11 + 8U & 0xfffffff8)" ( (binary_expression "iVar11 + 8U & 0xfffffff8" (binary_expression "iVar11 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) (expression_statement "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);" (assignment_expression "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" identifier = (call_expression "(*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" ( (pointer_expression "*(code *)PTR_memcpy_00044628" * (cast_expression "(code *)PTR_memcpy_00044628" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" ( (binary_expression "puVar22 + iVar19 + 0x18" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) , identifier , (binary_expression "iVar11 + 1" identifier + number_literal) )))) ;) (expression_statement "strip_trailing_slashes(uVar10);" (call_expression "strip_trailing_slashes(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);" (assignment_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c)" identifier = (call_expression "(*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" ( (pointer_expression "*(code *)PTR_strcmp_00044664" * (cast_expression "(code *)PTR_strcmp_00044664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar10,puVar4 + 0x105c)" ( identifier , (binary_expression "puVar4 + 0x105c" identifier + number_literal) )))) ;) (if_statement "if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }" { (expression_statement "param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)xstrdup(param_3)" identifier = (cast_expression "(EVP_PKEY_CTX *)xstrdup(param_3)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) }) (else_clause "else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" else (compound_statement "{\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" { (expression_statement "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0)" identifier = (cast_expression "(EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "file_name_concat(param_3,uVar10,0)" identifier (argument_list "(param_3,uVar10,0)" ( identifier , identifier , number_literal ))))) ;) }))) (labeled_statement "LAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar23 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(puVar23 + 0x14) = 0" (pointer_expression "*(undefined4 *)(puVar23 + 0x14)" * (cast_expression "(undefined4 *)(puVar23 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 0x14)" ( (binary_expression "puVar23 + 0x14" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined1 **)(puVar23 + 0x10) = &uStack_d9;" (assignment_expression "*(undefined1 **)(puVar23 + 0x10) = &uStack_d9" (pointer_expression "*(undefined1 **)(puVar23 + 0x10)" * (cast_expression "(undefined1 **)(puVar23 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + 0x10)" ( (binary_expression "puVar23 + 0x10" identifier + number_literal) )))) = (pointer_expression "&uStack_d9" & identifier)) ;) (expression_statement "uVar12 = copy(dst,param_1);" (assignment_expression "uVar12 = copy(dst,param_1)" identifier = (call_expression "copy(dst,param_1)" identifier (argument_list "(dst,param_1)" ( identifier , identifier )))) ;) (expression_statement "uVar18 = uVar12 & uVar18;" (assignment_expression "uVar18 = uVar12 & uVar18" identifier = (binary_expression "uVar12 & uVar18" identifier & identifier)) ;) (expression_statement "puVar21 = puVar23;" (assignment_expression "puVar21 = puVar23" identifier = identifier) ;) (if_statement "if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }" if (parenthesized_expression "(puVar3[0x46e5] != '\0')" ( (binary_expression "puVar3[0x46e5] != '\0'" (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }" { (expression_statement "uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);" (assignment_expression "uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5)" identifier = (call_expression "(*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_d4 - (int)param_1,local_d8,param_5)" ( identifier , (binary_expression "local_d4 - (int)param_1" identifier - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier , identifier )))) ;) (expression_statement "uVar18 = uVar18 & uVar12;" (assignment_expression "uVar18 = uVar18 & uVar12" identifier = (binary_expression "uVar18 & uVar12" identifier & identifier)) ;) (expression_statement "cVar1 = puVar3[0x46e5];" (assignment_expression "cVar1 = puVar3[0x46e5]" identifier = (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00015b5c;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" else (compound_statement "{\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" { (expression_statement "iVar11 = (*(code *)PTR_strlen_00044558)(dst);" (assignment_expression "iVar11 = (*(code *)PTR_strlen_00044558)(dst)" identifier = (call_expression "(*(code *)PTR_strlen_00044558)(dst)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" ( (pointer_expression "*(code *)PTR_strlen_00044558" * (cast_expression "(code *)PTR_strlen_00044558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dst)" ( identifier )))) ;) (expression_statement "iVar19 = -(iVar11 + 8U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar11 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar11 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar11 + 8U & 0xfffffff8)" ( (binary_expression "iVar11 + 8U & 0xfffffff8" (binary_expression "iVar11 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) (expression_statement "puVar21 = puVar22 + iVar19;" (assignment_expression "puVar21 = puVar22 + iVar19" identifier = (binary_expression "puVar22 + iVar19" identifier + identifier)) ;) (expression_statement "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);" (assignment_expression "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" identifier = (call_expression "(*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" ( (pointer_expression "*(code *)PTR_memcpy_00044628" * (cast_expression "(code *)PTR_memcpy_00044628" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" ( (binary_expression "puVar22 + iVar19 + 0x18" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) , identifier , (binary_expression "iVar11 + 1" identifier + number_literal) )))) ;) (expression_statement "strip_trailing_slashes(uVar10);" (call_expression "strip_trailing_slashes(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4)" identifier = (cast_expression "(EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "file_name_concat(param_3,uVar10,&local_d4)" identifier (argument_list "(param_3,uVar10,&local_d4)" ( identifier , identifier , (pointer_expression "&local_d4" & identifier) ))))) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (if_statement "if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }" if (parenthesized_expression "(*(char *)((int)param_5 + 0x2e) == '\0')" ( (binary_expression "*(char *)((int)param_5 + 0x2e) == '\0'" (pointer_expression "*(char *)((int)param_5 + 0x2e)" * (cast_expression "(char *)((int)param_5 + 0x2e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x2e)" ( (binary_expression "(int)param_5 + 0x2e" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar9 = (undefined *)0x0;\n        }" { (expression_statement "puVar9 = (undefined *)0x0;" (assignment_expression "puVar9 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar11 = local_d4 - (int)param_1;" (assignment_expression "iVar11 = local_d4 - (int)param_1" identifier = (binary_expression "local_d4 - (int)param_1" identifier - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int **)(puVar22 + iVar19 + 0x14) = param_5;" (assignment_expression "*(int **)(puVar22 + iVar19 + 0x14) = param_5" (pointer_expression "*(int **)(puVar22 + iVar19 + 0x14)" * (cast_expression "(int **)(puVar22 + iVar19 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + iVar19 + 0x14)" ( (binary_expression "puVar22 + iVar19 + 0x14" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar22 + iVar19 + 0x10) = &local_da;" (assignment_expression "*(char **)(puVar22 + iVar19 + 0x10) = &local_da" (pointer_expression "*(char **)(puVar22 + iVar19 + 0x10)" * (cast_expression "(char **)(puVar22 + iVar19 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + iVar19 + 0x10)" ( (binary_expression "puVar22 + iVar19 + 0x10" (binary_expression "puVar22 + iVar19" identifier + identifier) + number_literal) )))) = (pointer_expression "&local_da" & identifier)) ;) (expression_statement "iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);" (assignment_expression "iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8)" identifier = (call_expression "(*pcVar7)(param_1,iVar11,puVar9,&local_d8)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,iVar11,puVar9,&local_d8)" ( identifier , identifier , identifier , (pointer_expression "&local_d8" & identifier) )))) ;) (if_statement "if (iVar19 != 0) goto LAB_00015c30;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00015c30;" goto statement_identifier ;)) (expression_statement "cVar1 = puVar3[0x46e5];" (assignment_expression "cVar1 = puVar3[0x46e5]" identifier = (subscript_expression "puVar3[0x46e5]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" statement_identifier : (if_statement "if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" { (while_statement "while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }" while (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (compound_statement "{\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }" { (expression_statement "local_d8 = *(int *)(local_d8 + 0xa8);" (assignment_expression "local_d8 = *(int *)(local_d8 + 0xa8)" identifier = (pointer_expression "*(int *)(local_d8 + 0xa8)" * (cast_expression "(int *)(local_d8 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d8 + 0xa8)" ( (binary_expression "local_d8 + 0xa8" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_free_0004462c)();" (call_expression "(*(code *)PTR_free_0004462c)()" (parenthesized_expression "(*(code *)PTR_free_0004462c)" ( (pointer_expression "*(code *)PTR_free_0004462c" * (cast_expression "(code *)PTR_free_0004462c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) }))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_free_0004462c)(param_1);" (call_expression "(*(code *)PTR_free_0004462c)(param_1)" (parenthesized_expression "(*(code *)PTR_free_0004462c)" ( (pointer_expression "*(code *)PTR_free_0004462c" * (cast_expression "(code *)PTR_free_0004462c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "puVar22 = puVar21;" (assignment_expression "puVar22 = puVar21" identifier = identifier) ;) }) while (parenthesized_expression "(pEVar20 != param_2)" ( (binary_expression "pEVar20 != param_2" identifier != identifier) )) ;) }) (else_clause "else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" else (compound_statement "{\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" { (if_statement "if (param_3 != 0) goto LAB_0001604c;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0001604c;" goto statement_identifier ;)) (if_statement "if (2 < (int)param_1) goto LAB_00015f84;" if (parenthesized_expression "(2 < (int)param_1)" ( (binary_expression "2 < (int)param_1" number_literal < (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00015f84;" goto statement_identifier ;)) (expression_statement "FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);" (call_expression "FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2)" identifier (argument_list "(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2)" ( (pointer_expression "*(undefined4 *)(param_2 + (int)param_1 * 4 + -4)" * (cast_expression "(undefined4 *)(param_2 + (int)param_1 * 4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + (int)param_1 * 4 + -4)" ( (binary_expression "param_2 + (int)param_1 * 4 + -4" (binary_expression "param_2 + (int)param_1 * 4" identifier + (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) , identifier , (pointer_expression "&local_da" & identifier) , identifier ))) ;) (labeled_statement "LAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;" statement_identifier : (expression_statement "param_1 = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "param_1 = *(EVP_PKEY_CTX **)param_2" identifier = (pointer_expression "*(EVP_PKEY_CTX **)param_2" * (cast_expression "(EVP_PKEY_CTX **)param_2" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;)) (labeled_statement "LAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);" statement_identifier : (expression_statement "param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);" (assignment_expression "param_2 = *(EVP_PKEY_CTX **)(param_2 + 4)" identifier = (pointer_expression "*(EVP_PKEY_CTX **)(param_2 + 4)" * (cast_expression "(EVP_PKEY_CTX **)(param_2 + 4)" ( (type_descriptor "EVP_PKEY_CTX **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;)) (if_statement "if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }" if (parenthesized_expression "(PTR_DAT_00044118[0x46e5] != '\0')" ( (binary_expression "PTR_DAT_00044118[0x46e5] != '\0'" (subscript_expression "PTR_DAT_00044118[0x46e5]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }" { (expression_statement "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);" (assignment_expression "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1060" identifier + number_literal) , number_literal )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,uVar10)" ( number_literal , number_literal , identifier ))) ;) (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (labeled_statement "LAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);" statement_identifier : (expression_statement "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);" (assignment_expression "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0" identifier + number_literal) , number_literal )))) ;)) (expression_statement "uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);" (assignment_expression "uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10)" identifier = (call_expression "(*(code *)PTR_error_00044598)(1,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,0,uVar10)" ( number_literal , number_literal , identifier )))) ;) (return_statement "return uVar18;" return identifier ;) })) (if_statement "if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }" if (parenthesized_expression "((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000))))" ( (binary_expression "(((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))" (parenthesized_expression "(((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0))" ( (binary_expression "((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)" (parenthesized_expression "((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0))" ( (binary_expression "(*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)" (parenthesized_expression "(*(char *)((int)param_5 + 0x16) != '\0')" ( (binary_expression "*(char *)((int)param_5 + 0x16) != '\0'" (pointer_expression "*(char *)((int)param_5 + 0x16)" * (cast_expression "(char *)((int)param_5 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0x16)" ( (binary_expression "(int)param_5 + 0x16" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar19 = *param_5, iVar19 != 0)" ( (comma_expression "iVar19 = *param_5, iVar19 != 0" (assignment_expression "iVar19 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) , (binary_expression "iVar19 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)" ( (comma_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0" (assignment_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2)" identifier = (call_expression "(*(code *)PTR_strcmp_00044664)(param_1,param_2)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" ( (pointer_expression "*(code *)PTR_strcmp_00044664" * (cast_expression "(code *)PTR_strcmp_00044664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) , (binary_expression "iVar11 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))" ( (parenthesized_expression "(local_da == '\0' && ((local_b8 & 0xf000) == 0x8000))" ( (binary_expression "local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)" (binary_expression "local_da == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "((local_b8 & 0xf000) == 0x8000)" ( (binary_expression "(local_b8 & 0xf000) == 0x8000" (parenthesized_expression "(local_b8 & 0xf000)" ( (binary_expression "local_b8 & 0xf000" identifier & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }" { (expression_statement "param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);" (assignment_expression "param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19)" identifier = (cast_expression "(EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "find_backup_file_name(param_2,iVar19)" identifier (argument_list "(param_2,iVar19)" ( identifier , identifier ))))) ;) (expression_statement "puVar3 = PTR_DAT_00044118;" (assignment_expression "puVar3 = PTR_DAT_00044118" identifier = identifier) ;) (expression_statement "piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);" (assignment_expression "piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0)" identifier = (cast_expression "(int *)(PTR_DAT_00044118 + 0x46a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00044118 + 0x46a0)" ( (binary_expression "PTR_DAT_00044118 + 0x46a0" identifier + number_literal) )))) ;) (expression_statement "piVar15 = param_5;" (assignment_expression "piVar15 = param_5" identifier = identifier) ;) (do_statement "do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);" do (compound_statement "{\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      }" { (expression_statement "piVar16 = piVar15 + 4;" (assignment_expression "piVar16 = piVar15 + 4" identifier = (binary_expression "piVar15 + 4" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar13 + 4;" (assignment_expression "piVar14 = piVar13 + 4" identifier = (binary_expression "piVar13 + 4" identifier + number_literal)) ;) (expression_statement "iVar17 = piVar15[1];" (assignment_expression "iVar17 = piVar15[1]" identifier = (subscript_expression "piVar15[1]" identifier [ number_literal ])) ;) (expression_statement "iVar11 = piVar15[2];" (assignment_expression "iVar11 = piVar15[2]" identifier = (subscript_expression "piVar15[2]" identifier [ number_literal ])) ;) (expression_statement "iVar19 = piVar15[3];" (assignment_expression "iVar19 = piVar15[3]" identifier = (subscript_expression "piVar15[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar13 = *piVar15;" (assignment_expression "*piVar13 = *piVar15" (pointer_expression "*piVar13" * identifier) = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "piVar13[1] = iVar17;" (assignment_expression "piVar13[1] = iVar17" (subscript_expression "piVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[2] = iVar11;" (assignment_expression "piVar13[2] = iVar11" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[3] = iVar19;" (assignment_expression "piVar13[3] = iVar19" (subscript_expression "piVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13 = piVar14;" (assignment_expression "piVar13 = piVar14" identifier = identifier) ;) (expression_statement "piVar15 = piVar16;" (assignment_expression "piVar15 = piVar16" identifier = identifier) ;) }) while (parenthesized_expression "(piVar16 != param_5 + 0x10)" ( (binary_expression "piVar16 != param_5 + 0x10" identifier != (binary_expression "param_5 + 0x10" identifier + number_literal)) )) ;) (expression_statement "*piVar14 = *piVar16;" (assignment_expression "*piVar14 = *piVar16" (pointer_expression "*piVar14" * identifier) = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x46a0) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x46a0) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x46a0)" * (cast_expression "(undefined4 *)(puVar3 + 0x46a0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x46a0)" ( (binary_expression "puVar3 + 0x46a0" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "local_110 = &local_d4;" (assignment_expression "local_110 = &local_d4" identifier = (pointer_expression "&local_d4" & identifier)) ;) (expression_statement "local_10c = 0;" (assignment_expression "local_10c = 0" identifier = number_literal) ;) (expression_statement "uVar18 = copy(param_1,param_2);" (assignment_expression "uVar18 = copy(param_1,param_2)" identifier = (call_expression "copy(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) }))) (if_statement "if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar5)" ( (binary_expression "local_2c == *(int *)puVar5" identifier == (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar18;\n  }" { (return_statement "return uVar18;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" * (cast_expression "(code *)PTR___stack_chk_fail_000445f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00015f20:\n  pEVar20 = param_2;" statement_identifier : (expression_statement "pEVar20 = param_2;" (assignment_expression "pEVar20 = param_2" identifier = identifier) ;)) (expression_statement "pcVar6 = (code *)PTR_dcgettext_00044600;" (assignment_expression "pcVar6 = (code *)PTR_dcgettext_00044600" identifier = (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;" if (parenthesized_expression "(param_1 != (EVP_PKEY_CTX *)0x1)" ( (binary_expression "param_1 != (EVP_PKEY_CTX *)0x1" identifier != (cast_expression "(EVP_PKEY_CTX *)0x1" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015fe0;" goto statement_identifier ;)) (expression_statement "pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);" (assignment_expression "pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" identifier = (cast_expression "(EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4" identifier + number_literal) , number_literal ))))) ;) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)param_2);" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)param_2)" identifier = (call_expression "quotearg_style(4,*(undefined4 *)param_2)" identifier (argument_list "(4,*(undefined4 *)param_2)" ( number_literal , (pointer_expression "*(undefined4 *)param_2" * (cast_expression "(undefined4 *)param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,pEVar20,uVar10)" ( number_literal , number_literal , identifier , identifier ))) ;) (do_statement "do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );" do (compound_statement "{\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  }" { (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "param_2 = pEVar20;" (assignment_expression "param_2 = pEVar20" identifier = identifier) ;) (labeled_statement "LAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);" statement_identifier : (expression_statement "pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);" (assignment_expression "pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" identifier = (cast_expression "(EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" ( (pointer_expression "*(code *)PTR_dcgettext_00044600" * (cast_expression "(code *)PTR_dcgettext_00044600" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" ( number_literal , (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1028" identifier + number_literal) , number_literal ))))) ;)) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8))" identifier = (call_expression "quotearg_style(4,*(undefined4 *)(param_2 + 8))" identifier (argument_list "(4,*(undefined4 *)(param_2 + 8))" ( number_literal , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,pEVar20,uVar10)" ( number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "pcVar6 = (code *)PTR_usage_0004417c;" (assignment_expression "pcVar6 = (code *)PTR_usage_0004417c" identifier = (cast_expression "(code *)PTR_usage_0004417c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "usage(1);" (call_expression "usage(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (labeled_statement "LAB_00015fe0:\n    uVar10 = (*pcVar6)();" statement_identifier : (expression_statement "uVar10 = (*pcVar6)();" (assignment_expression "uVar10 = (*pcVar6)()" identifier = (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( )))) ;)) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" ( (pointer_expression "*(code *)PTR_error_00044598" * (cast_expression "(code *)PTR_error_00044598" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,0,uVar10)" ( number_literal , number_literal , identifier ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (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 = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT , (pointer_expression & IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) , IDENT , (pointer_expression & IDENT) , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT , IDENT )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT ))))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT , IDENT ))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)\n\n{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}" (type_identifier "uint") (function_declarator "FUN_000159ac(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)" (identifier "FUN_000159ac") (parameter_list "(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)" (( "(") (parameter_declaration "EVP_PKEY_CTX *param_1" (type_identifier "EVP_PKEY_CTX") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "EVP_PKEY_CTX *param_2" (type_identifier "EVP_PKEY_CTX") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  char cVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int iVar17;\n  EVP_PKEY_CTX *dst;\n  uint uVar18;\n  int iVar19;\n  EVP_PKEY_CTX *pEVar20;\n  undefined1 *puVar21;\n  undefined1 *puVar22;\n  undefined1 *puVar23;\n  undefined1 auStack_120 [16];\n  int *local_110;\n  undefined4 local_10c;\n  char local_da;\n  undefined1 uStack_d9;\n  int local_d8;\n  int local_d4;\n  undefined1 auStack_d0 [24];\n  uint local_b8;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00044624;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  local_da = '\0';\n  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;\n  bVar2 = (param_5[5] & 0xffff00U) != 0;\n  if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }\n  if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }\n  (*(code *)PTR___stack_chk_fail_000445f4)();\nLAB_00015f20:\n  pEVar20 = param_2;\n  pcVar6 = (code *)PTR_dcgettext_00044600;\n  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;\n  pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);\n  uVar10 = quotearg_style(4,*(undefined4 *)param_2);\n  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n  do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "EVP_PKEY_CTX *dst;" (type_identifier "EVP_PKEY_CTX") (pointer_declarator "*dst" (* "*") (identifier "dst")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "EVP_PKEY_CTX *pEVar20;" (type_identifier "EVP_PKEY_CTX") (pointer_declarator "*pEVar20" (* "*") (identifier "pEVar20")) (; ";")) (declaration "undefined1 *puVar21;" (type_identifier "undefined1") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "undefined1 *puVar22;" (type_identifier "undefined1") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "undefined1 *puVar23;" (type_identifier "undefined1") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "undefined1 auStack_120 [16];" (type_identifier "undefined1") (array_declarator "auStack_120 [16]" (identifier "auStack_120") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int *local_110;" (primitive_type "int") (pointer_declarator "*local_110" (* "*") (identifier "local_110")) (; ";")) (declaration "undefined4 local_10c;" (type_identifier "undefined4") (identifier "local_10c") (; ";")) (declaration "char local_da;" (primitive_type "char") (identifier "local_da") (; ";")) (declaration "undefined1 uStack_d9;" (type_identifier "undefined1") (identifier "uStack_d9") (; ";")) (declaration "int local_d8;" (primitive_type "int") (identifier "local_d8") (; ";")) (declaration "int local_d4;" (primitive_type "int") (identifier "local_d4") (; ";")) (declaration "undefined1 auStack_d0 [24];" (type_identifier "undefined1") (array_declarator "auStack_d0 [24]" (identifier "auStack_d0") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "uint local_b8;" (type_identifier "uint") (identifier "local_b8") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar5 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar5 = PTR___stack_chk_guard_00044624" (identifier "puVar5") (= "=") (identifier "PTR___stack_chk_guard_00044624")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00044624" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00044624" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00044624")))) (; ";")) (expression_statement "local_da = '\0';" (assignment_expression "local_da = '\0'" (identifier "local_da") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;" (if "if") (parenthesized_expression "((int)param_1 <= (int)(uint)(param_3 == 0))" (( "(") (binary_expression "(int)param_1 <= (int)(uint)(param_3 == 0)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (<= "<=") (cast_expression "(int)(uint)(param_3 == 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(param_3 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")"))))) () ")")) (goto_statement "goto LAB_00015f20;" (goto "goto") (statement_identifier "LAB_00015f20") (; ";"))) (expression_statement "bVar2 = (param_5[5] & 0xffff00U) != 0;" (assignment_expression "bVar2 = (param_5[5] & 0xffff00U) != 0" (identifier "bVar2") (= "=") (binary_expression "(param_5[5] & 0xffff00U) != 0" (parenthesized_expression "(param_5[5] & 0xffff00U)" (( "(") (binary_expression "param_5[5] & 0xffff00U" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (& "&") (number_literal "0xffff00U")) () ")")) (!= "!=") (number_literal "0"))) (; ";")) (if_statement "if (param_4 == 0) {\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }\n  else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar19 = (int)param_1 << 2;\n    if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }\nLAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }\n    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;\n    puVar3 = PTR_DAT_00044118;\n    pEVar20 = param_2 + iVar19;\n    uVar18 = 1;\n    pcVar6 = (code *)(PTR_00044124 + 0x4f50);\n    pcVar7 = (code *)(PTR_00044124 + 0x48b0);\n    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;\n    puVar22 = auStack_120;\n    do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);\n  }" ({ "{") (expression_statement "iVar19 = (int)param_1 << 2;" (assignment_expression "iVar19 = (int)param_1 << 2" (identifier "iVar19") (= "=") (binary_expression "(int)param_1 << 2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (<< "<<") (number_literal "2"))) (; ";")) (if_statement "if (param_3 == 0) {\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;\n      pEVar20 = param_2 + (int)param_1 * 4 + -4;\n      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);\n      if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }\n      param_1 = param_1 + -1;\n      iVar19 = (int)param_1 * 4;\n      param_3 = *(int *)(param_2 + iVar19);\n      if (param_3 != 0) goto LAB_00015a40;\n      param_1 = *(EVP_PKEY_CTX **)param_2;\n      goto LAB_00015cd0;\n    }" ({ "{") (if_statement "if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;" (if "if") (parenthesized_expression "(param_1 == (EVP_PKEY_CTX *)0x1)" (( "(") (binary_expression "param_1 == (EVP_PKEY_CTX *)0x1" (identifier "param_1") (== "==") (cast_expression "(EVP_PKEY_CTX *)0x1" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (goto_statement "goto LAB_00015ccc;" (goto "goto") (statement_identifier "LAB_00015ccc") (; ";"))) (expression_statement "pEVar20 = param_2 + (int)param_1 * 4 + -4;" (assignment_expression "pEVar20 = param_2 + (int)param_1 * 4 + -4" (identifier "pEVar20") (= "=") (binary_expression "param_2 + (int)param_1 * 4 + -4" (binary_expression "param_2 + (int)param_1 * 4" (identifier "param_2") (+ "+") (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);" (assignment_expression "iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" (identifier "iVar19") (= "=") (call_expression "FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" (identifier "FUN_00014778") (argument_list "(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2)" (( "(") (pointer_expression "*(undefined4 *)pEVar20" (* "*") (cast_expression "(undefined4 *)pEVar20" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pEVar20"))) (, ",") (identifier "auStack_d0") (, ",") (pointer_expression "&local_da" (& "&") (identifier "local_da")) (, ",") (identifier "bVar2") () ")")))) (; ";")) (if_statement "if (iVar19 == 0) {\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;\n        param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);\n        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);\n        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);\n      }" ({ "{") (if_statement "if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;" (if "if") (parenthesized_expression "(param_1 == (EVP_PKEY_CTX *)0x2)" (( "(") (binary_expression "param_1 == (EVP_PKEY_CTX *)0x2" (identifier "param_1") (== "==") (cast_expression "(EVP_PKEY_CTX *)0x2" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (goto_statement "goto LAB_00015ccc;" (goto "goto") (statement_identifier "LAB_00015ccc") (; ";"))) (expression_statement "param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);" (assignment_expression "param_2 = (EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" (identifier "param_2") (= "=") (cast_expression "(EVP_PKEY_CTX *)\n                  (*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_dcgettext_00044600)\n                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_00044600" (* "*") (cast_expression "(code *)PTR_dcgettext_00044600" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_00044600"))) () ")")) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5)" (( "(") (number_literal "0") (, ",") (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x103c" (identifier "PTR_s_option___H_follow_command_line_s_00044128") (+ "+") (number_literal "0x103c")) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)pEVar20)" (identifier "uVar10") (= "=") (call_expression "quotearg_style(4,*(undefined4 *)pEVar20)" (identifier "quotearg_style") (argument_list "(4,*(undefined4 *)pEVar20)" (( "(") (number_literal "4") (, ",") (pointer_expression "*(undefined4 *)pEVar20" (* "*") (cast_expression "(undefined4 *)pEVar20" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pEVar20"))) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_error_00044598)(1,0,param_2,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(1,0,param_2,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" (( "(") (pointer_expression "*(code *)PTR_error_00044598" (* "*") (cast_expression "(code *)PTR_error_00044598" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_00044598"))) () ")")) (argument_list "(1,0,param_2,uVar10)" (( "(") (number_literal "1") (, ",") (number_literal "0") (, ",") (identifier "param_2") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1 = param_1 + -1;" (assignment_expression "param_1 = param_1 + -1" (identifier "param_1") (= "=") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar19 = (int)param_1 * 4;" (assignment_expression "iVar19 = (int)param_1 * 4" (identifier "iVar19") (= "=") (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "param_3 = *(int *)(param_2 + iVar19);" (assignment_expression "param_3 = *(int *)(param_2 + iVar19)" (identifier "param_3") (= "=") (pointer_expression "*(int *)(param_2 + iVar19)" (* "*") (cast_expression "(int *)(param_2 + iVar19)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar19)" (( "(") (binary_expression "param_2 + iVar19" (identifier "param_2") (+ "+") (identifier "iVar19")) () ")"))))) (; ";")) (if_statement "if (param_3 != 0) goto LAB_00015a40;" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00015a40;" (goto "goto") (statement_identifier "LAB_00015a40") (; ";"))) (expression_statement "param_1 = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "param_1 = *(EVP_PKEY_CTX **)param_2" (identifier "param_1") (= "=") (pointer_expression "*(EVP_PKEY_CTX **)param_2" (* "*") (cast_expression "(EVP_PKEY_CTX **)param_2" (( "(") (type_descriptor "EVP_PKEY_CTX **" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (; ";")) (goto_statement "goto LAB_00015cd0;" (goto "goto") (statement_identifier "LAB_00015cd0") (; ";")) (} "}"))) (labeled_statement "LAB_00015a40:\n    if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" (statement_identifier "LAB_00015a40") (: ":") (if_statement "if (param_1 != (EVP_PKEY_CTX *)0x1) {\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" (if "if") (parenthesized_expression "(param_1 != (EVP_PKEY_CTX *)0x1)" (( "(") (binary_expression "param_1 != (EVP_PKEY_CTX *)0x1" (identifier "param_1") (!= "!=") (cast_expression "(EVP_PKEY_CTX *)0x1" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n      dest_info_init(param_5);\n      src_info_init(param_5);\n    }" ({ "{") (expression_statement "dest_info_init(param_5);" (call_expression "dest_info_init(param_5)" (identifier "dest_info_init") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")"))) (; ";")) (expression_statement "src_info_init(param_5);" (call_expression "src_info_init(param_5)" (identifier "src_info_init") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar4 = PTR_s_option___H_follow_command_line_s_00044128;" (assignment_expression "puVar4 = PTR_s_option___H_follow_command_line_s_00044128" (identifier "puVar4") (= "=") (identifier "PTR_s_option___H_follow_command_line_s_00044128")) (; ";")) (expression_statement "puVar3 = PTR_DAT_00044118;" (assignment_expression "puVar3 = PTR_DAT_00044118" (identifier "puVar3") (= "=") (identifier "PTR_DAT_00044118")) (; ";")) (expression_statement "pEVar20 = param_2 + iVar19;" (assignment_expression "pEVar20 = param_2 + iVar19" (identifier "pEVar20") (= "=") (binary_expression "param_2 + iVar19" (identifier "param_2") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" (identifier "uVar18") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar6 = (code *)(PTR_00044124 + 0x4f50);" (assignment_expression "pcVar6 = (code *)(PTR_00044124 + 0x4f50)" (identifier "pcVar6") (= "=") (cast_expression "(code *)(PTR_00044124 + 0x4f50)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_00044124 + 0x4f50)" (( "(") (binary_expression "PTR_00044124 + 0x4f50" (identifier "PTR_00044124") (+ "+") (number_literal "0x4f50")) () ")")))) (; ";")) (expression_statement "pcVar7 = (code *)(PTR_00044124 + 0x48b0);" (assignment_expression "pcVar7 = (code *)(PTR_00044124 + 0x48b0)" (identifier "pcVar7") (= "=") (cast_expression "(code *)(PTR_00044124 + 0x48b0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_00044124 + 0x48b0)" (( "(") (binary_expression "PTR_00044124 + 0x48b0" (identifier "PTR_00044124") (+ "+") (number_literal "0x48b0")) () ")")))) (; ";")) (expression_statement "puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;" (assignment_expression "puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" (identifier "puVar8") (= "=") (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xf90" (identifier "PTR_s_option___H_follow_command_line_s_00044128") (+ "+") (number_literal "0xf90"))) (; ";")) (expression_statement "puVar22 = auStack_120;" (assignment_expression "puVar22 = auStack_120" (identifier "puVar22") (= "=") (identifier "auStack_120")) (; ";")) (do_statement "do {\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    } while (pEVar20 != param_2);" (do "do") (compound_statement "{\n      dst = *(EVP_PKEY_CTX **)param_2;\n      local_d4 = 0;\n      if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }\n      if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }\n      param_2 = param_2 + 4;\n      (*(code *)PTR_free_0004462c)(param_1);\n      puVar22 = puVar21;\n    }" ({ "{") (expression_statement "dst = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "dst = *(EVP_PKEY_CTX **)param_2" (identifier "dst") (= "=") (pointer_expression "*(EVP_PKEY_CTX **)param_2" (* "*") (cast_expression "(EVP_PKEY_CTX **)param_2" (( "(") (type_descriptor "EVP_PKEY_CTX **" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (; ";")) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" (identifier "local_d4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar3[0x46e4] != '\0') {\n        strip_trailing_slashes(dst);\n      }" (if "if") (parenthesized_expression "(puVar3[0x46e4] != '\0')" (( "(") (binary_expression "puVar3[0x46e4] != '\0'" (subscript_expression "puVar3[0x46e4]" (identifier "puVar3") ([ "[") (number_literal "0x46e4") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        strip_trailing_slashes(dst);\n      }" ({ "{") (expression_statement "strip_trailing_slashes(dst);" (call_expression "strip_trailing_slashes(dst)" (identifier "strip_trailing_slashes") (argument_list "(dst)" (( "(") (identifier "dst") () ")"))) (; ";")) (} "}"))) (if_statement "if (puVar3[0x46e5] == '\0') {\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }\n      else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" (if "if") (parenthesized_expression "(puVar3[0x46e5] == '\0')" (( "(") (binary_expression "puVar3[0x46e5] == '\0'" (subscript_expression "puVar3[0x46e5]" (identifier "puVar3") ([ "[") (number_literal "0x46e5") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar10 = last_component(dst);\n        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);\n        if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }\nLAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;\n        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;\n        uVar12 = copy(dst,param_1);\n        uVar18 = uVar12 & uVar18;\n        puVar21 = puVar23;\n        if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }\n      }" ({ "{") (expression_statement "uVar10 = last_component(dst);" (assignment_expression "uVar10 = last_component(dst)" (identifier "uVar10") (= "=") (call_expression "last_component(dst)" (identifier "last_component") (argument_list "(dst)" (( "(") (identifier "dst") () ")")))) (; ";")) (expression_statement "iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);" (assignment_expression "iVar11 = (*(code *)PTR_strlen_00044558)(uVar10)" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR_strlen_00044558)(uVar10)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" (( "(") (pointer_expression "*(code *)PTR_strlen_00044558" (* "*") (cast_expression "(code *)PTR_strlen_00044558" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00044558"))) () ")")) (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")")))) (; ";")) (expression_statement "iVar19 = -(iVar11 + 8U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar11 + 8U & 0xfffffff8)" (identifier "iVar19") (= "=") (unary_expression "-(iVar11 + 8U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar11 + 8U & 0xfffffff8)" (( "(") (binary_expression "iVar11 + 8U & 0xfffffff8" (binary_expression "iVar11 + 8U" (identifier "iVar11") (+ "+") (number_literal "8U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" (identifier "puVar23") (= "=") (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);" (assignment_expression "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00044628" (* "*") (cast_expression "(code *)PTR_memcpy_00044628" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00044628"))) () ")")) (argument_list "(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1)" (( "(") (binary_expression "puVar22 + iVar19 + 0x18" (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19")) (+ "+") (number_literal "0x18")) (, ",") (identifier "uVar10") (, ",") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "strip_trailing_slashes(uVar10);" (call_expression "strip_trailing_slashes(uVar10)" (identifier "strip_trailing_slashes") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);" (assignment_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c)" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" (( "(") (pointer_expression "*(code *)PTR_strcmp_00044664" (* "*") (cast_expression "(code *)PTR_strcmp_00044664" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcmp_00044664"))) () ")")) (argument_list "(uVar10,puVar4 + 0x105c)" (( "(") (identifier "uVar10") (, ",") (binary_expression "puVar4 + 0x105c" (identifier "puVar4") (+ "+") (number_literal "0x105c")) () ")")))) (; ";")) (if_statement "if (iVar11 == 0) {\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }\n        else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);\n          puVar23 = puVar22 + iVar19;\n        }" ({ "{") (expression_statement "param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)xstrdup(param_3)" (identifier "param_1") (= "=") (cast_expression "(EVP_PKEY_CTX *)xstrdup(param_3)" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xstrdup(param_3)" (identifier "xstrdup") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" (identifier "puVar23") (= "=") (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19"))) (; ";")) (} "}")) (else_clause "else {\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" (else "else") (compound_statement "{\n          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);\n        }" ({ "{") (expression_statement "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0)" (identifier "param_1") (= "=") (cast_expression "(EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0)" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "file_name_concat(param_3,uVar10,0)" (identifier "file_name_concat") (argument_list "(param_3,uVar10,0)" (( "(") (identifier "param_3") (, ",") (identifier "uVar10") (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}")))) (labeled_statement "LAB_00015c30:\n        *(undefined4 *)(puVar23 + 0x14) = 0;" (statement_identifier "LAB_00015c30") (: ":") (expression_statement "*(undefined4 *)(puVar23 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(puVar23 + 0x14) = 0" (pointer_expression "*(undefined4 *)(puVar23 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar23 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar23 + 0x14)" (( "(") (binary_expression "puVar23 + 0x14" (identifier "puVar23") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined1 **)(puVar23 + 0x10) = &uStack_d9;" (assignment_expression "*(undefined1 **)(puVar23 + 0x10) = &uStack_d9" (pointer_expression "*(undefined1 **)(puVar23 + 0x10)" (* "*") (cast_expression "(undefined1 **)(puVar23 + 0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + 0x10)" (( "(") (binary_expression "puVar23 + 0x10" (identifier "puVar23") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "&uStack_d9" (& "&") (identifier "uStack_d9"))) (; ";")) (expression_statement "uVar12 = copy(dst,param_1);" (assignment_expression "uVar12 = copy(dst,param_1)" (identifier "uVar12") (= "=") (call_expression "copy(dst,param_1)" (identifier "copy") (argument_list "(dst,param_1)" (( "(") (identifier "dst") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar18 = uVar12 & uVar18;" (assignment_expression "uVar18 = uVar12 & uVar18" (identifier "uVar18") (= "=") (binary_expression "uVar12 & uVar18" (identifier "uVar12") (& "&") (identifier "uVar18"))) (; ";")) (expression_statement "puVar21 = puVar23;" (assignment_expression "puVar21 = puVar23" (identifier "puVar21") (= "=") (identifier "puVar23")) (; ";")) (if_statement "if (puVar3[0x46e5] != '\0') {\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }" (if "if") (parenthesized_expression "(puVar3[0x46e5] != '\0')" (( "(") (binary_expression "puVar3[0x46e5] != '\0'" (subscript_expression "puVar3[0x46e5]" (identifier "puVar3") ([ "[") (number_literal "0x46e5") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);\n          uVar18 = uVar18 & uVar12;\n          cVar1 = puVar3[0x46e5];\n          goto LAB_00015b5c;\n        }" ({ "{") (expression_statement "uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);" (assignment_expression "uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5)" (identifier "uVar12") (= "=") (call_expression "(*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_1,local_d4 - (int)param_1,local_d8,param_5)" (( "(") (identifier "param_1") (, ",") (binary_expression "local_d4 - (int)param_1" (identifier "local_d4") (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (, ",") (identifier "local_d8") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar18 = uVar18 & uVar12;" (assignment_expression "uVar18 = uVar18 & uVar12" (identifier "uVar18") (= "=") (binary_expression "uVar18 & uVar12" (identifier "uVar18") (& "&") (identifier "uVar12"))) (; ";")) (expression_statement "cVar1 = puVar3[0x46e5];" (assignment_expression "cVar1 = puVar3[0x46e5]" (identifier "cVar1") (= "=") (subscript_expression "puVar3[0x46e5]" (identifier "puVar3") ([ "[") (number_literal "0x46e5") (] "]"))) (; ";")) (goto_statement "goto LAB_00015b5c;" (goto "goto") (statement_identifier "LAB_00015b5c") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" (else "else") (compound_statement "{\n        iVar11 = (*(code *)PTR_strlen_00044558)(dst);\n        iVar19 = -(iVar11 + 8U & 0xfffffff8);\n        puVar23 = puVar22 + iVar19;\n        puVar21 = puVar22 + iVar19;\n        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);\n        strip_trailing_slashes(uVar10);\n        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);\n        puVar9 = puVar8;\n        if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }\n        iVar11 = local_d4 - (int)param_1;\n        *(int **)(puVar22 + iVar19 + 0x14) = param_5;\n        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;\n        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);\n        if (iVar19 != 0) goto LAB_00015c30;\n        cVar1 = puVar3[0x46e5];\n        uVar18 = 0;\nLAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }\n      }" ({ "{") (expression_statement "iVar11 = (*(code *)PTR_strlen_00044558)(dst);" (assignment_expression "iVar11 = (*(code *)PTR_strlen_00044558)(dst)" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR_strlen_00044558)(dst)" (parenthesized_expression "(*(code *)PTR_strlen_00044558)" (( "(") (pointer_expression "*(code *)PTR_strlen_00044558" (* "*") (cast_expression "(code *)PTR_strlen_00044558" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00044558"))) () ")")) (argument_list "(dst)" (( "(") (identifier "dst") () ")")))) (; ";")) (expression_statement "iVar19 = -(iVar11 + 8U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar11 + 8U & 0xfffffff8)" (identifier "iVar19") (= "=") (unary_expression "-(iVar11 + 8U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar11 + 8U & 0xfffffff8)" (( "(") (binary_expression "iVar11 + 8U & 0xfffffff8" (binary_expression "iVar11 + 8U" (identifier "iVar11") (+ "+") (number_literal "8U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar23 = puVar22 + iVar19;" (assignment_expression "puVar23 = puVar22 + iVar19" (identifier "puVar23") (= "=") (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "puVar21 = puVar22 + iVar19;" (assignment_expression "puVar21 = puVar22 + iVar19" (identifier "puVar21") (= "=") (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);" (assignment_expression "uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_00044628)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00044628" (* "*") (cast_expression "(code *)PTR_memcpy_00044628" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00044628"))) () ")")) (argument_list "(puVar22 + iVar19 + 0x18,dst,iVar11 + 1)" (( "(") (binary_expression "puVar22 + iVar19 + 0x18" (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19")) (+ "+") (number_literal "0x18")) (, ",") (identifier "dst") (, ",") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "strip_trailing_slashes(uVar10);" (call_expression "strip_trailing_slashes(uVar10)" (identifier "strip_trailing_slashes") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);" (assignment_expression "param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4)" (identifier "param_1") (= "=") (cast_expression "(EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4)" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "file_name_concat(param_3,uVar10,&local_d4)" (identifier "file_name_concat") (argument_list "(param_3,uVar10,&local_d4)" (( "(") (identifier "param_3") (, ",") (identifier "uVar10") (, ",") (pointer_expression "&local_d4" (& "&") (identifier "local_d4")) () ")"))))) (; ";")) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (*(char *)((int)param_5 + 0x2e) == '\0') {\n          puVar9 = (undefined *)0x0;\n        }" (if "if") (parenthesized_expression "(*(char *)((int)param_5 + 0x2e) == '\0')" (( "(") (binary_expression "*(char *)((int)param_5 + 0x2e) == '\0'" (pointer_expression "*(char *)((int)param_5 + 0x2e)" (* "*") (cast_expression "(char *)((int)param_5 + 0x2e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x2e)" (( "(") (binary_expression "(int)param_5 + 0x2e" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x2e")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          puVar9 = (undefined *)0x0;\n        }" ({ "{") (expression_statement "puVar9 = (undefined *)0x0;" (assignment_expression "puVar9 = (undefined *)0x0" (identifier "puVar9") (= "=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "iVar11 = local_d4 - (int)param_1;" (assignment_expression "iVar11 = local_d4 - (int)param_1" (identifier "iVar11") (= "=") (binary_expression "local_d4 - (int)param_1" (identifier "local_d4") (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) (; ";")) (expression_statement "*(int **)(puVar22 + iVar19 + 0x14) = param_5;" (assignment_expression "*(int **)(puVar22 + iVar19 + 0x14) = param_5" (pointer_expression "*(int **)(puVar22 + iVar19 + 0x14)" (* "*") (cast_expression "(int **)(puVar22 + iVar19 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + iVar19 + 0x14)" (( "(") (binary_expression "puVar22 + iVar19 + 0x14" (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(char **)(puVar22 + iVar19 + 0x10) = &local_da;" (assignment_expression "*(char **)(puVar22 + iVar19 + 0x10) = &local_da" (pointer_expression "*(char **)(puVar22 + iVar19 + 0x10)" (* "*") (cast_expression "(char **)(puVar22 + iVar19 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + iVar19 + 0x10)" (( "(") (binary_expression "puVar22 + iVar19 + 0x10" (binary_expression "puVar22 + iVar19" (identifier "puVar22") (+ "+") (identifier "iVar19")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "&local_da" (& "&") (identifier "local_da"))) (; ";")) (expression_statement "iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);" (assignment_expression "iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8)" (identifier "iVar19") (= "=") (call_expression "(*pcVar7)(param_1,iVar11,puVar9,&local_d8)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(param_1,iVar11,puVar9,&local_d8)" (( "(") (identifier "param_1") (, ",") (identifier "iVar11") (, ",") (identifier "puVar9") (, ",") (pointer_expression "&local_d8" (& "&") (identifier "local_d8")) () ")")))) (; ";")) (if_statement "if (iVar19 != 0) goto LAB_00015c30;" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00015c30;" (goto "goto") (statement_identifier "LAB_00015c30") (; ";"))) (expression_statement "cVar1 = puVar3[0x46e5];" (assignment_expression "cVar1 = puVar3[0x46e5]" (identifier "cVar1") (= "=") (subscript_expression "puVar3[0x46e5]" (identifier "puVar3") ([ "[") (number_literal "0x46e5") (] "]"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00015b5c:\n        if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" (statement_identifier "LAB_00015b5c") (: ":") (if_statement "if (cVar1 != '\0') {\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }\n        }" ({ "{") (while_statement "while (local_d8 != 0) {\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }" (while "while") (parenthesized_expression "(local_d8 != 0)" (( "(") (binary_expression "local_d8 != 0" (identifier "local_d8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            local_d8 = *(int *)(local_d8 + 0xa8);\n            (*(code *)PTR_free_0004462c)();\n          }" ({ "{") (expression_statement "local_d8 = *(int *)(local_d8 + 0xa8);" (assignment_expression "local_d8 = *(int *)(local_d8 + 0xa8)" (identifier "local_d8") (= "=") (pointer_expression "*(int *)(local_d8 + 0xa8)" (* "*") (cast_expression "(int *)(local_d8 + 0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d8 + 0xa8)" (( "(") (binary_expression "local_d8 + 0xa8" (identifier "local_d8") (+ "+") (number_literal "0xa8")) () ")"))))) (; ";")) (expression_statement "(*(code *)PTR_free_0004462c)();" (call_expression "(*(code *)PTR_free_0004462c)()" (parenthesized_expression "(*(code *)PTR_free_0004462c)" (( "(") (pointer_expression "*(code *)PTR_free_0004462c" (* "*") (cast_expression "(code *)PTR_free_0004462c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004462c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "(*(code *)PTR_free_0004462c)(param_1);" (call_expression "(*(code *)PTR_free_0004462c)(param_1)" (parenthesized_expression "(*(code *)PTR_free_0004462c)" (( "(") (pointer_expression "*(code *)PTR_free_0004462c" (* "*") (cast_expression "(code *)PTR_free_0004462c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004462c"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "puVar22 = puVar21;" (assignment_expression "puVar22 = puVar21" (identifier "puVar22") (= "=") (identifier "puVar21")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pEVar20 != param_2)" (( "(") (binary_expression "pEVar20 != param_2" (identifier "pEVar20") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (} "}")) (else_clause "else {\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" (else "else") (compound_statement "{\n    if (param_3 != 0) goto LAB_0001604c;\n    if (2 < (int)param_1) goto LAB_00015f84;\n    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);\nLAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;\nLAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);\n    if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }\n    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }\n    local_110 = &local_d4;\n    local_10c = 0;\n    uVar18 = copy(param_1,param_2);\n  }" ({ "{") (if_statement "if (param_3 != 0) goto LAB_0001604c;" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001604c;" (goto "goto") (statement_identifier "LAB_0001604c") (; ";"))) (if_statement "if (2 < (int)param_1) goto LAB_00015f84;" (if "if") (parenthesized_expression "(2 < (int)param_1)" (( "(") (binary_expression "2 < (int)param_1" (number_literal "2") (< "<") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) () ")")) (goto_statement "goto LAB_00015f84;" (goto "goto") (statement_identifier "LAB_00015f84") (; ";"))) (expression_statement "FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);" (call_expression "FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2)" (identifier "FUN_00014778") (argument_list "(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2)" (( "(") (pointer_expression "*(undefined4 *)(param_2 + (int)param_1 * 4 + -4)" (* "*") (cast_expression "(undefined4 *)(param_2 + (int)param_1 * 4 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + (int)param_1 * 4 + -4)" (( "(") (binary_expression "param_2 + (int)param_1 * 4 + -4" (binary_expression "param_2 + (int)param_1 * 4" (identifier "param_2") (+ "+") (binary_expression "(int)param_1 * 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-4")) () ")")))) (, ",") (identifier "auStack_d0") (, ",") (pointer_expression "&local_da" (& "&") (identifier "local_da")) (, ",") (identifier "bVar2") () ")"))) (; ";")) (labeled_statement "LAB_00015ccc:\n    param_1 = *(EVP_PKEY_CTX **)param_2;" (statement_identifier "LAB_00015ccc") (: ":") (expression_statement "param_1 = *(EVP_PKEY_CTX **)param_2;" (assignment_expression "param_1 = *(EVP_PKEY_CTX **)param_2" (identifier "param_1") (= "=") (pointer_expression "*(EVP_PKEY_CTX **)param_2" (* "*") (cast_expression "(EVP_PKEY_CTX **)param_2" (( "(") (type_descriptor "EVP_PKEY_CTX **" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (; ";"))) (labeled_statement "LAB_00015cd0:\n    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);" (statement_identifier "LAB_00015cd0") (: ":") (expression_statement "param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);" (assignment_expression "param_2 = *(EVP_PKEY_CTX **)(param_2 + 4)" (identifier "param_2") (= "=") (pointer_expression "*(EVP_PKEY_CTX **)(param_2 + 4)" (* "*") (cast_expression "(EVP_PKEY_CTX **)(param_2 + 4)" (( "(") (type_descriptor "EVP_PKEY_CTX **" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (if_statement "if (PTR_DAT_00044118[0x46e5] != '\0') {\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }" (if "if") (parenthesized_expression "(PTR_DAT_00044118[0x46e5] != '\0')" (( "(") (binary_expression "PTR_DAT_00044118[0x46e5] != '\0'" (subscript_expression "PTR_DAT_00044118[0x46e5]" (identifier "PTR_DAT_00044118") ([ "[") (number_literal "0x46e5") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);\n      (*(code *)PTR_error_00044598)(0,0,uVar10);\n      usage(1);\nLAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);\n      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);\n      return uVar18;\n    }" ({ "{") (expression_statement "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);" (assignment_expression "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_00044600" (* "*") (cast_expression "(code *)PTR_dcgettext_00044600" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_00044600"))) () ")")) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5)" (( "(") (number_literal "0") (, ",") (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1060" (identifier "PTR_s_option___H_follow_command_line_s_00044128") (+ "+") (number_literal "0x1060")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" (( "(") (pointer_expression "*(code *)PTR_error_00044598" (* "*") (cast_expression "(code *)PTR_error_00044598" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_00044598"))) () ")")) (argument_list "(0,0,uVar10)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "usage(1);" (call_expression "usage(1)" (identifier "usage") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (labeled_statement "LAB_0001604c:\n      uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);" (statement_identifier "LAB_0001604c") (: ":") (expression_statement "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);" (assignment_expression "uVar10 = (*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR_dcgettext_00044600)\n                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_00044600" (* "*") (cast_expression "(code *)PTR_dcgettext_00044600" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_00044600"))) () ")")) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5)" (( "(") (number_literal "0") (, ",") (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0" (identifier "PTR_s_option___H_follow_command_line_s_00044128") (+ "+") (number_literal "0xfe0")) (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);" (assignment_expression "uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10)" (identifier "uVar18") (= "=") (call_expression "(*(code *)PTR_error_00044598)(1,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" (( "(") (pointer_expression "*(code *)PTR_error_00044598" (* "*") (cast_expression "(code *)PTR_error_00044598" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_00044598"))) () ")")) (argument_list "(1,0,uVar10)" (( "(") (number_literal "1") (, ",") (number_literal "0") (, ",") (identifier "uVar10") () ")")))) (; ";")) (return_statement "return uVar18;" (return "return") (identifier "uVar18") (; ";")) (} "}"))) (if_statement "if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }" (if "if") (parenthesized_expression "((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000))))" (( "(") (binary_expression "(((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&\n       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))" (parenthesized_expression "(((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0))" (( "(") (binary_expression "((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&\n        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)" (parenthesized_expression "((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0))" (( "(") (binary_expression "(*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)" (parenthesized_expression "(*(char *)((int)param_5 + 0x16) != '\0')" (( "(") (binary_expression "*(char *)((int)param_5 + 0x16) != '\0'" (pointer_expression "*(char *)((int)param_5 + 0x16)" (* "*") (cast_expression "(char *)((int)param_5 + 0x16)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0x16)" (( "(") (binary_expression "(int)param_5 + 0x16" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0x16")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar19 = *param_5, iVar19 != 0)" (( "(") (comma_expression "iVar19 = *param_5, iVar19 != 0" (assignment_expression "iVar19 = *param_5" (identifier "iVar19") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (, ",") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)" (( "(") (comma_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0" (assignment_expression "iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2)" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR_strcmp_00044664)(param_1,param_2)" (parenthesized_expression "(*(code *)PTR_strcmp_00044664)" (( "(") (pointer_expression "*(code *)PTR_strcmp_00044664" (* "*") (cast_expression "(code *)PTR_strcmp_00044664" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcmp_00044664"))) () ")")) (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))" (( "(") (parenthesized_expression "(local_da == '\0' && ((local_b8 & 0xf000) == 0x8000))" (( "(") (binary_expression "local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)" (binary_expression "local_da == '\0'" (identifier "local_da") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "((local_b8 & 0xf000) == 0x8000)" (( "(") (binary_expression "(local_b8 & 0xf000) == 0x8000" (parenthesized_expression "(local_b8 & 0xf000)" (( "(") (binary_expression "local_b8 & 0xf000" (identifier "local_b8") (& "&") (number_literal "0xf000")) () ")")) (== "==") (number_literal "0x8000")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);\n      puVar3 = PTR_DAT_00044118;\n      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);\n      piVar15 = param_5;\n      do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);\n      *piVar14 = *piVar16;\n      *(undefined4 *)(puVar3 + 0x46a0) = 0;\n    }" ({ "{") (expression_statement "param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);" (assignment_expression "param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19)" (identifier "param_2") (= "=") (cast_expression "(EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19)" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "find_backup_file_name(param_2,iVar19)" (identifier "find_backup_file_name") (argument_list "(param_2,iVar19)" (( "(") (identifier "param_2") (, ",") (identifier "iVar19") () ")"))))) (; ";")) (expression_statement "puVar3 = PTR_DAT_00044118;" (assignment_expression "puVar3 = PTR_DAT_00044118" (identifier "puVar3") (= "=") (identifier "PTR_DAT_00044118")) (; ";")) (expression_statement "piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);" (assignment_expression "piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0)" (identifier "piVar13") (= "=") (cast_expression "(int *)(PTR_DAT_00044118 + 0x46a0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00044118 + 0x46a0)" (( "(") (binary_expression "PTR_DAT_00044118 + 0x46a0" (identifier "PTR_DAT_00044118") (+ "+") (number_literal "0x46a0")) () ")")))) (; ";")) (expression_statement "piVar15 = param_5;" (assignment_expression "piVar15 = param_5" (identifier "piVar15") (= "=") (identifier "param_5")) (; ";")) (do_statement "do {\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      } while (piVar16 != param_5 + 0x10);" (do "do") (compound_statement "{\n        piVar16 = piVar15 + 4;\n        piVar14 = piVar13 + 4;\n        iVar17 = piVar15[1];\n        iVar11 = piVar15[2];\n        iVar19 = piVar15[3];\n        *piVar13 = *piVar15;\n        piVar13[1] = iVar17;\n        piVar13[2] = iVar11;\n        piVar13[3] = iVar19;\n        piVar13 = piVar14;\n        piVar15 = piVar16;\n      }" ({ "{") (expression_statement "piVar16 = piVar15 + 4;" (assignment_expression "piVar16 = piVar15 + 4" (identifier "piVar16") (= "=") (binary_expression "piVar15 + 4" (identifier "piVar15") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar14 = piVar13 + 4;" (assignment_expression "piVar14 = piVar13 + 4" (identifier "piVar14") (= "=") (binary_expression "piVar13 + 4" (identifier "piVar13") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar17 = piVar15[1];" (assignment_expression "iVar17 = piVar15[1]" (identifier "iVar17") (= "=") (subscript_expression "piVar15[1]" (identifier "piVar15") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar11 = piVar15[2];" (assignment_expression "iVar11 = piVar15[2]" (identifier "iVar11") (= "=") (subscript_expression "piVar15[2]" (identifier "piVar15") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar19 = piVar15[3];" (assignment_expression "iVar19 = piVar15[3]" (identifier "iVar19") (= "=") (subscript_expression "piVar15[3]" (identifier "piVar15") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*piVar13 = *piVar15;" (assignment_expression "*piVar13 = *piVar15" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) (; ";")) (expression_statement "piVar13[1] = iVar17;" (assignment_expression "piVar13[1] = iVar17" (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "piVar13[2] = iVar11;" (assignment_expression "piVar13[2] = iVar11" (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "piVar13[3] = iVar19;" (assignment_expression "piVar13[3] = iVar19" (subscript_expression "piVar13[3]" (identifier "piVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "piVar13 = piVar14;" (assignment_expression "piVar13 = piVar14" (identifier "piVar13") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "piVar15 = piVar16;" (assignment_expression "piVar15 = piVar16" (identifier "piVar15") (= "=") (identifier "piVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar16 != param_5 + 0x10)" (( "(") (binary_expression "piVar16 != param_5 + 0x10" (identifier "piVar16") (!= "!=") (binary_expression "param_5 + 0x10" (identifier "param_5") (+ "+") (number_literal "0x10"))) () ")")) (; ";")) (expression_statement "*piVar14 = *piVar16;" (assignment_expression "*piVar14 = *piVar16" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0x46a0) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0x46a0) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0x46a0)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0x46a0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x46a0)" (( "(") (binary_expression "puVar3 + 0x46a0" (identifier "puVar3") (+ "+") (number_literal "0x46a0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_110 = &local_d4;" (assignment_expression "local_110 = &local_d4" (identifier "local_110") (= "=") (pointer_expression "&local_d4" (& "&") (identifier "local_d4"))) (; ";")) (expression_statement "local_10c = 0;" (assignment_expression "local_10c = 0" (identifier "local_10c") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar18 = copy(param_1,param_2);" (assignment_expression "uVar18 = copy(param_1,param_2)" (identifier "uVar18") (= "=") (call_expression "copy(param_1,param_2)" (identifier "copy") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (if_statement "if (local_2c == *(int *)puVar5) {\n    return uVar18;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar5)" (( "(") (binary_expression "local_2c == *(int *)puVar5" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar5" (* "*") (cast_expression "(int *)puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5")))) () ")")) (compound_statement "{\n    return uVar18;\n  }" ({ "{") (return_statement "return uVar18;" (return "return") (identifier "uVar18") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000445f4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000445f4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00015f20:\n  pEVar20 = param_2;" (statement_identifier "LAB_00015f20") (: ":") (expression_statement "pEVar20 = param_2;" (assignment_expression "pEVar20 = param_2" (identifier "pEVar20") (= "=") (identifier "param_2")) (; ";"))) (expression_statement "pcVar6 = (code *)PTR_dcgettext_00044600;" (assignment_expression "pcVar6 = (code *)PTR_dcgettext_00044600" (identifier "pcVar6") (= "=") (cast_expression "(code *)PTR_dcgettext_00044600" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_00044600"))) (; ";")) (if_statement "if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;" (if "if") (parenthesized_expression "(param_1 != (EVP_PKEY_CTX *)0x1)" (( "(") (binary_expression "param_1 != (EVP_PKEY_CTX *)0x1" (identifier "param_1") (!= "!=") (cast_expression "(EVP_PKEY_CTX *)0x1" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (goto_statement "goto LAB_00015fe0;" (goto "goto") (statement_identifier "LAB_00015fe0") (; ";"))) (expression_statement "pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);" (assignment_expression "pEVar20 = (EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" (identifier "pEVar20") (= "=") (cast_expression "(EVP_PKEY_CTX *)\n            (*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_dcgettext_00044600)\n                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_00044600" (* "*") (cast_expression "(code *)PTR_dcgettext_00044600" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_00044600"))) () ")")) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5)" (( "(") (number_literal "0") (, ",") (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4" (identifier "PTR_s_option___H_follow_command_line_s_00044128") (+ "+") (number_literal "0xfb4")) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)param_2);" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)param_2)" (identifier "uVar10") (= "=") (call_expression "quotearg_style(4,*(undefined4 *)param_2)" (identifier "quotearg_style") (argument_list "(4,*(undefined4 *)param_2)" (( "(") (number_literal "4") (, ",") (pointer_expression "*(undefined4 *)param_2" (* "*") (cast_expression "(undefined4 *)param_2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" (( "(") (pointer_expression "*(code *)PTR_error_00044598" (* "*") (cast_expression "(code *)PTR_error_00044598" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_00044598"))) () ")")) (argument_list "(0,0,pEVar20,uVar10)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "pEVar20") (, ",") (identifier "uVar10") () ")"))) (; ";")) (do_statement "do {\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  } while( true );" (do "do") (compound_statement "{\n    usage(1);\n    param_2 = pEVar20;\nLAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);\n    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));\n    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);\n    pcVar6 = (code *)PTR_usage_0004417c;\n    usage(1);\nLAB_00015fe0:\n    uVar10 = (*pcVar6)();\n    (*(code *)PTR_error_00044598)(0,0,uVar10);\n  }" ({ "{") (expression_statement "usage(1);" (call_expression "usage(1)" (identifier "usage") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "param_2 = pEVar20;" (assignment_expression "param_2 = pEVar20" (identifier "param_2") (= "=") (identifier "pEVar20")) (; ";")) (labeled_statement "LAB_00015f84:\n    pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);" (statement_identifier "LAB_00015f84") (: ":") (expression_statement "pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);" (assignment_expression "pEVar20 = (EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" (identifier "pEVar20") (= "=") (cast_expression "(EVP_PKEY_CTX *)\n              (*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" (( "(") (type_descriptor "EVP_PKEY_CTX *" (type_identifier "EVP_PKEY_CTX") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_dcgettext_00044600)\n                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_00044600)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_00044600" (* "*") (cast_expression "(code *)PTR_dcgettext_00044600" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_00044600"))) () ")")) (argument_list "(0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5)" (( "(") (number_literal "0") (, ",") (binary_expression "PTR_s_option___H_follow_command_line_s_00044128 + 0x1028" (identifier "PTR_s_option___H_follow_command_line_s_00044128") (+ "+") (number_literal "0x1028")) (, ",") (number_literal "5") () ")"))))) (; ";"))) (expression_statement "uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));" (assignment_expression "uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8))" (identifier "uVar10") (= "=") (call_expression "quotearg_style(4,*(undefined4 *)(param_2 + 8))" (identifier "quotearg_style") (argument_list "(4,*(undefined4 *)(param_2 + 8))" (( "(") (number_literal "4") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" (( "(") (pointer_expression "*(code *)PTR_error_00044598" (* "*") (cast_expression "(code *)PTR_error_00044598" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_00044598"))) () ")")) (argument_list "(0,0,pEVar20,uVar10)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "pEVar20") (, ",") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "pcVar6 = (code *)PTR_usage_0004417c;" (assignment_expression "pcVar6 = (code *)PTR_usage_0004417c" (identifier "pcVar6") (= "=") (cast_expression "(code *)PTR_usage_0004417c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_usage_0004417c"))) (; ";")) (expression_statement "usage(1);" (call_expression "usage(1)" (identifier "usage") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (labeled_statement "LAB_00015fe0:\n    uVar10 = (*pcVar6)();" (statement_identifier "LAB_00015fe0") (: ":") (expression_statement "uVar10 = (*pcVar6)();" (assignment_expression "uVar10 = (*pcVar6)()" (identifier "uVar10") (= "=") (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "(*(code *)PTR_error_00044598)(0,0,uVar10);" (call_expression "(*(code *)PTR_error_00044598)(0,0,uVar10)" (parenthesized_expression "(*(code *)PTR_error_00044598)" (( "(") (pointer_expression "*(code *)PTR_error_00044598" (* "*") (cast_expression "(code *)PTR_error_00044598" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_00044598"))) () ")")) (argument_list "(0,0,uVar10)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_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: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier) (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (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 (identifier) (identifier) (number_literal))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (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))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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 (identifier) (identifier) (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (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: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))))) (identifier) (pointer_expression argument: (identifier)) (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal) (identifier))))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (char_literal (escape_sequence))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) consequence: (compound_statement (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 (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal) (identifier) (identifier)))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal) (identifier))))) condition: (parenthesized_expression (true))))))

uint MASKED(EVP_PKEY_CTX *param_1,EVP_PKEY_CTX *param_2,int param_3,int param_4,int *param_5)

{
  char cVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  code *pcVar6;
  code *pcVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined4 uVar10;
  int iVar11;
  uint uVar12;
  int *piVar13;
  int *piVar14;
  int *piVar15;
  int *piVar16;
  int iVar17;
  EVP_PKEY_CTX *dst;
  uint uVar18;
  int iVar19;
  EVP_PKEY_CTX *pEVar20;
  undefined1 *puVar21;
  undefined1 *puVar22;
  undefined1 *puVar23;
  undefined1 auStack_120 [16];
  int *local_110;
  undefined4 local_10c;
  char local_da;
  undefined1 uStack_d9;
  int local_d8;
  int local_d4;
  undefined1 auStack_d0 [24];
  uint local_b8;
  int local_2c;
  
  puVar5 = PTR___stack_chk_guard_00044624;
  local_2c = *(int *)PTR___stack_chk_guard_00044624;
  local_da = '\0';
  if ((int)param_1 <= (int)(uint)(param_3 == 0)) goto LAB_00015f20;
  bVar2 = (param_5[5] & 0xffff00U) != 0;
  if (param_4 == 0) {
    iVar19 = (int)param_1 << 2;
    if (param_3 == 0) {
      if (param_1 == (EVP_PKEY_CTX *)0x1) goto LAB_00015ccc;
      pEVar20 = param_2 + (int)param_1 * 4 + -4;
      iVar19 = FUN_00014778(*(undefined4 *)pEVar20,auStack_d0,&local_da,bVar2);
      if (iVar19 == 0) {
        if (param_1 == (EVP_PKEY_CTX *)0x2) goto LAB_00015ccc;
        param_2 = (EVP_PKEY_CTX *)
                  (*(code *)PTR_dcgettext_00044600)
                            (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x103c,5);
        uVar10 = quotearg_style(4,*(undefined4 *)pEVar20);
        (*(code *)PTR_error_00044598)(1,0,param_2,uVar10);
      }
      param_1 = param_1 + -1;
      iVar19 = (int)param_1 * 4;
      param_3 = *(int *)(param_2 + iVar19);
      if (param_3 != 0) goto LAB_00015a40;
      param_1 = *(EVP_PKEY_CTX **)param_2;
      goto LAB_00015cd0;
    }
LAB_00015a40:
    if (param_1 != (EVP_PKEY_CTX *)0x1) {
      dest_info_init(param_5);
      src_info_init(param_5);
    }
    puVar4 = PTR_s_option___H_follow_command_line_s_00044128;
    puVar3 = PTR_DAT_00044118;
    pEVar20 = param_2 + iVar19;
    uVar18 = 1;
    pcVar6 = (code *)(PTR_00044124 + 0x4f50);
    pcVar7 = (code *)(PTR_00044124 + 0x48b0);
    puVar8 = PTR_s_option___H_follow_command_line_s_00044128 + 0xf90;
    puVar22 = auStack_120;
    do {
      dst = *(EVP_PKEY_CTX **)param_2;
      local_d4 = 0;
      if (puVar3[0x46e4] != '\0') {
        strip_trailing_slashes(dst);
      }
      if (puVar3[0x46e5] == '\0') {
        uVar10 = last_component(dst);
        iVar11 = (*(code *)PTR_strlen_00044558)(uVar10);
        iVar19 = -(iVar11 + 8U & 0xfffffff8);
        puVar23 = puVar22 + iVar19;
        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,uVar10,iVar11 + 1);
        strip_trailing_slashes(uVar10);
        iVar11 = (*(code *)PTR_strcmp_00044664)(uVar10,puVar4 + 0x105c);
        if (iVar11 == 0) {
          param_1 = (EVP_PKEY_CTX *)xstrdup(param_3);
          puVar23 = puVar22 + iVar19;
        }
        else {
          param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,0);
        }
LAB_00015c30:
        *(undefined4 *)(puVar23 + 0x14) = 0;
        *(undefined1 **)(puVar23 + 0x10) = &uStack_d9;
        uVar12 = copy(dst,param_1);
        uVar18 = uVar12 & uVar18;
        puVar21 = puVar23;
        if (puVar3[0x46e5] != '\0') {
          uVar12 = (*pcVar6)(param_1,local_d4 - (int)param_1,local_d8,param_5);
          uVar18 = uVar18 & uVar12;
          cVar1 = puVar3[0x46e5];
          goto LAB_00015b5c;
        }
      }
      else {
        iVar11 = (*(code *)PTR_strlen_00044558)(dst);
        iVar19 = -(iVar11 + 8U & 0xfffffff8);
        puVar23 = puVar22 + iVar19;
        puVar21 = puVar22 + iVar19;
        uVar10 = (*(code *)PTR_memcpy_00044628)(puVar22 + iVar19 + 0x18,dst,iVar11 + 1);
        strip_trailing_slashes(uVar10);
        param_1 = (EVP_PKEY_CTX *)file_name_concat(param_3,uVar10,&local_d4);
        puVar9 = puVar8;
        if (*(char *)((int)param_5 + 0x2e) == '\0') {
          puVar9 = (undefined *)0x0;
        }
        iVar11 = local_d4 - (int)param_1;
        *(int **)(puVar22 + iVar19 + 0x14) = param_5;
        *(char **)(puVar22 + iVar19 + 0x10) = &local_da;
        iVar19 = (*pcVar7)(param_1,iVar11,puVar9,&local_d8);
        if (iVar19 != 0) goto LAB_00015c30;
        cVar1 = puVar3[0x46e5];
        uVar18 = 0;
LAB_00015b5c:
        if (cVar1 != '\0') {
          while (local_d8 != 0) {
            local_d8 = *(int *)(local_d8 + 0xa8);
            (*(code *)PTR_free_0004462c)();
          }
        }
      }
      param_2 = param_2 + 4;
      (*(code *)PTR_free_0004462c)(param_1);
      puVar22 = puVar21;
    } while (pEVar20 != param_2);
  }
  else {
    if (param_3 != 0) goto LAB_0001604c;
    if (2 < (int)param_1) goto LAB_00015f84;
    FUN_00014778(*(undefined4 *)(param_2 + (int)param_1 * 4 + -4),auStack_d0,&local_da,bVar2);
LAB_00015ccc:
    param_1 = *(EVP_PKEY_CTX **)param_2;
LAB_00015cd0:
    param_2 = *(EVP_PKEY_CTX **)(param_2 + 4);
    if (PTR_DAT_00044118[0x46e5] != '\0') {
      uVar10 = (*(code *)PTR_dcgettext_00044600)
                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1060,5);
      (*(code *)PTR_error_00044598)(0,0,uVar10);
      usage(1);
LAB_0001604c:
      uVar10 = (*(code *)PTR_dcgettext_00044600)
                         (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfe0,5);
      uVar18 = (*(code *)PTR_error_00044598)(1,0,uVar10);
      return uVar18;
    }
    if ((((*(char *)((int)param_5 + 0x16) != '\0') && (iVar19 = *param_5, iVar19 != 0)) &&
        (iVar11 = (*(code *)PTR_strcmp_00044664)(param_1,param_2), iVar11 == 0)) &&
       ((local_da == '\0' && ((local_b8 & 0xf000) == 0x8000)))) {
      param_2 = (EVP_PKEY_CTX *)find_backup_file_name(param_2,iVar19);
      puVar3 = PTR_DAT_00044118;
      piVar13 = (int *)(PTR_DAT_00044118 + 0x46a0);
      piVar15 = param_5;
      do {
        piVar16 = piVar15 + 4;
        piVar14 = piVar13 + 4;
        iVar17 = piVar15[1];
        iVar11 = piVar15[2];
        iVar19 = piVar15[3];
        *piVar13 = *piVar15;
        piVar13[1] = iVar17;
        piVar13[2] = iVar11;
        piVar13[3] = iVar19;
        piVar13 = piVar14;
        piVar15 = piVar16;
      } while (piVar16 != param_5 + 0x10);
      *piVar14 = *piVar16;
      *(undefined4 *)(puVar3 + 0x46a0) = 0;
    }
    local_110 = &local_d4;
    local_10c = 0;
    uVar18 = copy(param_1,param_2);
  }
  if (local_2c == *(int *)puVar5) {
    return uVar18;
  }
  (*(code *)PTR___stack_chk_fail_000445f4)();
LAB_00015f20:
  pEVar20 = param_2;
  pcVar6 = (code *)PTR_dcgettext_00044600;
  if (param_1 != (EVP_PKEY_CTX *)0x1) goto LAB_00015fe0;
  pEVar20 = (EVP_PKEY_CTX *)
            (*(code *)PTR_dcgettext_00044600)
                      (0,PTR_s_option___H_follow_command_line_s_00044128 + 0xfb4,5);
  uVar10 = quotearg_style(4,*(undefined4 *)param_2);
  (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);
  do {
    usage(1);
    param_2 = pEVar20;
LAB_00015f84:
    pEVar20 = (EVP_PKEY_CTX *)
              (*(code *)PTR_dcgettext_00044600)
                        (0,PTR_s_option___H_follow_command_line_s_00044128 + 0x1028,5);
    uVar10 = quotearg_style(4,*(undefined4 *)(param_2 + 8));
    (*(code *)PTR_error_00044598)(0,0,pEVar20,uVar10);
    pcVar6 = (code *)PTR_usage_0004417c;
    usage(1);
LAB_00015fe0:
    uVar10 = (*pcVar6)();
    (*(code *)PTR_error_00044598)(0,0,uVar10);
  } while( true );
}

