
/* WARNING: Type propagation algorithm not settling */

void ssh2_write_pubkey(FILE *fp,char *comment,void *v_pub_blob,int pub_len,int keytype)

{
  bool bVar1;
  byte bVar4;
  int namelen;
  ssh_signkey *psVar2;
  int iVar3;
  void *blob;
  FILE *fp_00;
  int iVar5;
  byte *p;
  Filename *filename;
  undefined *len;
  undefined1 *puVar6;
  int *piVar7;
  byte *unaff_s1;
  byte *name;
  int iVar8;
  int unaff_s4;
  char *unaff_s6;
  undefined *puVar9;
  code *pcVar10;
  code *pcVar11;
  int iStack_f0;
  Filename *pFStack_ec;
  int iStack_e8;
  byte *pbStack_e4;
  int iStack_e0;
  code *pcStack_dc;
  undefined1 *puStack_c8;
  int iStack_c4;
  undefined *puStack_c0;
  byte bStack_b4;
  byte abStack_b3 [15];
  undefined1 auStack_a4 [45];
  undefined1 auStack_77 [3];
  int iStack_74;
  byte *pbStack_70;
  byte *pbStack_6c;
  FILE *pFStack_68;
  int iStack_64;
  int iStack_60;
  void *pvStack_5c;
  char *pcStack_58;
  code *pcStack_54;
  char buf [5];
  
  iVar5 = *(int *)PTR___stack_chk_guard_00080958;
  if (keytype == 9) {
    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp);
    if (comment != (char *)0x0) {
      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);
      bVar4 = *comment;
      if (bVar4 != 0) {
        unaff_s4 = 0x22;
        do {
          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {
            (*(code *)PTR_fputc_00080914)(0x5c,fp);
          }
          (*(code *)PTR_fputc_00080914)((int)*comment,fp);
          comment = (char *)((byte *)comment + 1);
          bVar4 = *comment;
        } while (bVar4 != 0);
      }
      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);
    }
    unaff_s1 = (byte *)(uint)(pub_len < 4);
    if (0 < pub_len) {
      bVar1 = unaff_s1 != (byte *)0x0;
      unaff_s1 = (byte *)0x3;
      if (bVar1) {
        unaff_s1 = (byte *)pub_len;
      }
      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);
      buf[4] = '\0';
      (*(code *)PTR_fputs_00080878)(buf,fp);
      unaff_s4 = 1;
      unaff_s6 = buf;
      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {
        if (3 < (int)comment) {
          comment = (char *)0x3;
        }
        (*(code *)PTR_base64_encode_atom_00080280)
                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);
        buf[4] = '\0';
        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);
        unaff_s4 = unaff_s4 + 1;
        unaff_s1 = unaff_s1 + (int)comment;
        if (0xf < unaff_s4) {
          (*(code *)PTR_fputc_00080914)(10,fp);
          unaff_s4 = 0;
        }
      }
      if (0 < unaff_s4) {
        (*(code *)PTR_fputc_00080914)(10,fp);
      }
    }
    len = (undefined *)0x1;
    p = PTR_DAT_00080134 + -0x48f4;
    (*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp);
  }
  else {
    if (keytype != 10) {
      len = PTR_DAT_00080134 + -0x4e7c;
      p = PTR_DAT_00080134 + -0x48d4;
      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);
      goto LAB_00049a18;
    }
    comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);
    len = (undefined *)0x1;
    (*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);
    p = (byte *)comment;
    (*(code *)PTR_safefree_000800c4)();
  }
  if (iVar5 == *(int *)PTR___stack_chk_guard_00080958) {
    return;
  }
LAB_00049a18:
  pcVar10 = ssh2_fingerprint_blob;
  puVar9 = PTR___stack_chk_fail_00080814;
  (*(code *)PTR___stack_chk_fail_00080814)();
  puStack_c0 = puVar9 + 0x3e64c;
  iStack_74 = **(int **)(puVar9 + 0x36f34);
  pbStack_70 = (byte *)comment;
  pbStack_6c = unaff_s1;
  pFStack_68 = fp;
  iStack_64 = pub_len;
  iStack_60 = unaff_s4;
  pvStack_5c = v_pub_blob;
  pcStack_58 = unaff_s6;
  pcStack_54 = pcVar10;
  MD5Simple(p,(uint)len,&bStack_b4);
  puStack_c8 = (undefined1 *)(uint)bStack_b4;
  name = abStack_b3;
  puVar6 = auStack_a4;
  iVar8 = *(int *)(puStack_c0 + -0x7f3c);
  iVar5 = *(int *)(puStack_c0 + -0x7f3c);
  do {
    iStack_c4 = iVar8 + -0x2908;
    (**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8);
    puVar6 = puVar6 + 3;
    puStack_c8 = (undefined1 *)(uint)*name;
    name = name + 1;
  } while (puVar6 != auStack_77);
  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;
  iVar8 = 1;
  (**(code **)(puStack_c0 + -0x7784))
            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);
  namelen = (**(code **)(puStack_c0 + -0x7ed8))
                      ((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8);
  if ((namelen < 1) || ((int)(len + -4) <= namelen)) {
    (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);
  }
  else {
    name = p + 4;
    psVar2 = find_pubkey_alg_len(namelen,(char *)name);
    iVar8 = namelen;
    if (psVar2 == (ssh_signkey *)0x0) {
      (**(code **)(puStack_c0 + -0x7fb8))
                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);
    }
    else {
      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);
      puStack_c8 = auStack_a4;
      (**(code **)(puStack_c0 + -0x7fb8))
                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);
    }
  }
  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {
    pcVar10 = *(code **)(puStack_c0 + -0x785c);
    pcVar11 = ssh2_fingerprint;
    iVar3 = iStack_74;
    (*pcVar10)();
    piVar7 = *(int **)(pcVar10 + 0x36d0c);
    pFStack_ec = (Filename *)*piVar7;
    iStack_e8 = namelen;
    pbStack_e4 = name;
    iStack_e0 = iVar5 + -0x48a8;
    pcStack_dc = pcVar11;
    blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0);
    ssh2_fingerprint_blob(blob,iStack_f0);
    (**(code **)(pcVar10 + 0x36478))(blob);
    if (pFStack_ec != (Filename *)*piVar7) {
      pcVar10 = *(code **)(pcVar10 + 0x36bc8);
      filename = pFStack_ec;
      (*pcVar10)();
      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);
      if (fp_00 != (FILE *)0x0) {
        key_type_fp(fp_00);
        (**(code **)(pcVar10 + 0x36bb4))(fp_00);
      }
      return;
    }
    return;
  }
  return;
}



/* WARNING: Type propagation algorithm not settling */

int ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)

{
  bool bVar1;
  byte bVar5;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  byte *pbVar6;
  undefined *puVar7;
  undefined1 *puVar8;
  int *piVar9;
  byte *unaff_s1;
  byte *pbVar10;
  int iVar11;
  int iVar12;
  int unaff_s4;
  undefined1 *unaff_s6;
  undefined *puVar13;
  code *pcVar14;
  code *pcVar15;
  undefined4 uStack_f0;
  int iStack_ec;
  int iStack_e8;
  byte *pbStack_e4;
  int iStack_e0;
  code *pcStack_dc;
  undefined1 *puStack_c8;
  int iStack_c4;
  undefined *puStack_c0;
  byte bStack_b4;
  byte abStack_b3 [15];
  undefined1 auStack_a4 [45];
  undefined1 auStack_77 [3];
  int iStack_74;
  byte *pbStack_70;
  byte *pbStack_6c;
  undefined4 uStack_68;
  byte *pbStack_64;
  int iStack_60;
  int iStack_5c;
  undefined1 *puStack_58;
  code *pcStack_54;
  undefined1 auStack_34 [4];
  undefined1 local_30;
  int local_2c;
  
  local_2c = *(int *)PTR___stack_chk_guard_00080958;
  if (param_5 == 9) {
    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);
    if (param_2 != (byte *)0x0) {
      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);
      bVar5 = *param_2;
      if (bVar5 != 0) {
        unaff_s4 = 0x22;
        do {
          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {
            (*(code *)PTR_fputc_00080914)(0x5c,param_1);
          }
          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);
          param_2 = param_2 + 1;
          bVar5 = *param_2;
        } while (bVar5 != 0);
      }
      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);
    }
    unaff_s1 = (byte *)(uint)((int)param_4 < 4);
    if (0 < (int)param_4) {
      bVar1 = unaff_s1 != (byte *)0x0;
      unaff_s1 = (byte *)0x3;
      if (bVar1) {
        unaff_s1 = param_4;
      }
      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);
      local_30 = 0;
      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);
      unaff_s4 = 1;
      unaff_s6 = auStack_34;
      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {
        if (3 < (int)param_2) {
          param_2 = (byte *)0x3;
        }
        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);
        local_30 = 0;
        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);
        unaff_s4 = unaff_s4 + 1;
        unaff_s1 = unaff_s1 + (int)param_2;
        if (0xf < unaff_s4) {
          (*(code *)PTR_fputc_00080914)(10,param_1);
          unaff_s4 = 0;
        }
      }
      if (0 < unaff_s4) {
        (*(code *)PTR_fputc_00080914)(10,param_1);
      }
    }
    puVar7 = (undefined *)0x1;
    pbVar6 = PTR_DAT_00080134 + -0x48f4;
    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);
  }
  else {
    if (param_5 != 10) {
      puVar7 = PTR_DAT_00080134 + -0x4e7c;
      pbVar6 = PTR_DAT_00080134 + -0x48d4;
      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);
      goto LAB_00049a18;
    }
    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);
    puVar7 = (undefined *)0x1;
    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);
    pbVar6 = param_2;
    (*(code *)PTR_safefree_000800c4)();
  }
  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {
    return *(int *)PTR___stack_chk_guard_00080958;
  }
LAB_00049a18:
  pcVar14 = ssh2_fingerprint_blob;
  puVar13 = PTR___stack_chk_fail_00080814;
  (*(code *)PTR___stack_chk_fail_00080814)();
  puStack_c0 = puVar13 + 0x3e64c;
  iStack_74 = **(int **)(puVar13 + 0x36f34);
  pbStack_70 = param_2;
  pbStack_6c = unaff_s1;
  uStack_68 = param_1;
  pbStack_64 = param_4;
  iStack_60 = unaff_s4;
  iStack_5c = param_3;
  puStack_58 = unaff_s6;
  pcStack_54 = pcVar14;
  MD5Simple();
  puStack_c8 = (undefined1 *)(uint)bStack_b4;
  pbVar10 = abStack_b3;
  puVar8 = auStack_a4;
  iVar12 = *(int *)(puStack_c0 + -0x7f3c);
  iVar11 = *(int *)(puStack_c0 + -0x7f3c);
  do {
    iStack_c4 = iVar12 + -0x2908;
    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);
    puVar8 = puVar8 + 3;
    puStack_c8 = (undefined1 *)(uint)*pbVar10;
    pbVar10 = pbVar10 + 1;
  } while (puVar8 != auStack_77);
  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;
  iVar12 = 1;
  (**(code **)(puStack_c0 + -0x7784))
            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);
  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))
                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |
                     (uint)pbVar6[2] << 8);
  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {
    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);
  }
  else {
    pbVar10 = pbVar6 + 4;
    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);
    iVar12 = iVar2;
    if (iVar3 == 0) {
      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))
                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);
    }
    else {
      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);
      puStack_c8 = auStack_a4;
      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))
                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);
    }
  }
  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {
    pcVar14 = *(code **)(puStack_c0 + -0x785c);
    pcVar15 = ssh2_fingerprint;
    iVar3 = iStack_74;
    (*pcVar14)();
    piVar9 = *(int **)(pcVar14 + 0x36d0c);
    iStack_ec = *piVar9;
    iStack_e8 = iVar2;
    pbStack_e4 = pbVar10;
    iStack_e0 = iVar11 + -0x48a8;
    pcStack_dc = pcVar15;
    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);
    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);
    (**(code **)(pcVar14 + 0x36478))(uVar4);
    if (iStack_ec != *piVar9) {
      pcVar14 = *(code **)(pcVar14 + 0x36bc8);
      (*pcVar14)();
      iVar11 = f_open();
      if (iVar11 == 0) {
        iVar12 = 0;
      }
      else {
        iVar12 = FUN_000462f8(iVar11);
        (**(code **)(pcVar14 + 0x36bb4))(iVar11);
      }
      return iVar12;
    }
    return iVar11;
  }
  return iVar3;
}


lui gp,0x4
addiu gp,gp,-0x1680
addu gp,gp,t9
addiu sp,sp,-0x50
sw ra,0x4c(sp)
sw s7,0x48(sp)
sw s6,0x44(sp)
sw s5,0x40(sp)
sw s4,0x3c(sp)
sw s3,0x38(sp)
sw s2,0x34(sp)
sw s1,0x30(sp)
sw s0,0x2c(sp)
sw gp,0x10(sp)
or s2,a0,zero
or s0,a1,zero
or s5,a2,zero
or s3,a3,zero
lw v0,0x60(sp)
lw v1,-0x7718(gp)
lw v1,0x0(v1)
sw v1,0x24(sp)
li v1,0x9
beq v0,v1,0x000497f0
_li v1,0xa
bne v0,v1,0x000499f0
_or a2,a3,zero
or a1,s5,zero
or a0,s0,zero
lw t9,-0x7ca8(gp)
addiu t9,t9,0x5444
bal 0x00045444
_nop
lw gp,0x10(sp)
or s0,v0,zero
or a3,v0,zero
lw a2,-0x7f3c(gp)
addiu a2,a2,-0x26a4
li a1,0x1
or a0,s2,zero
lw t9,-0x78f8(gp)
jalr t9
_nop
lw gp,0x10(sp)
or a0,s0,zero
lw t9,-0x7fac(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw v1,0x24(sp)
lw v0,-0x7718(gp)
lw v0,0x0(v0)
bne v1,v0,0x00049a18
_lw ra,0x4c(sp)
lw s7,0x48(sp)
lw s6,0x44(sp)
lw s5,0x40(sp)
lw s4,0x3c(sp)
lw s3,0x38(sp)
lw s2,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x50
or a3,a0,zero
li a2,0x20
li a1,0x1
lw a0,-0x7f3c(gp)
addiu a0,a0,-0x4928
lw t9,-0x7764(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq s0,zero,0x000498c8
_or a3,s2,zero
li a2,0xa
li a1,0x1
lw a0,-0x7f3c(gp)
addiu a0,a0,-0x4904
lw t9,-0x7764(gp)
jalr t9
_nop
lw gp,0x10(sp)
lb v0,0x0(s0)
beq v0,zero,0x000498a4
_li s1,0x5c
b 0x0004988c
_li s4,0x22
or a0,s1,zero
lw t9,-0x775c(gp)
jalr t9
_nop
lw gp,0x10(sp)
or a1,s2,zero
lb a0,0x0(s0)
lw t9,-0x775c(gp)
jalr t9
_nop
lw gp,0x10(sp)
addiu s0,s0,0x1
lb v0,0x0(s0)
beq v0,zero,0x000498a8
_or a3,s2,zero
beq v0,s1,0x00049850
_or a1,s2,zero
bne v0,s4,0x00049868
_or a0,s1,zero
b 0x00049854
_nop
or a3,s2,zero
li a2,0x2
li a1,0x1
lw a0,-0x7f3c(gp)
addiu a0,a0,-0x48f8
lw t9,-0x7764(gp)
jalr t9
_nop
lw gp,0x10(sp)
blez s3,0x000499a8
_slti s1,s3,0x4
li v0,0x3
movn v0,s3,s1
or s1,v0,zero
addiu s0,sp,0x1c
or a2,s0,zero
or a1,v0,zero
or a0,s5,zero
lw t9,-0x7df0(gp)
jalr t9
_nop
lw gp,0x10(sp)
sb zero,0x20(sp)
or a1,s2,zero
or a0,s0,zero
lw t9,-0x77f8(gp)
jalr t9
_nop
lw gp,0x10(sp)
li s4,0x1
li s7,0x3
addiu s6,sp,0x1c
slt v0,s1,s3
beq v0,zero,0x000499a0
_subu s0,s3,s1
slti v0,s0,0x4
movz s0,s7,v0
or a2,s6,zero
or a1,s0,zero
addu a0,s5,s1
lw t9,-0x7df0(gp)
jalr t9
_nop
lw gp,0x10(sp)
sb zero,0x20(sp)
or a1,s2,zero
or a0,s6,zero
lw t9,-0x77f8(gp)
jalr t9
_nop
lw gp,0x10(sp)
addiu s4,s4,0x1
slti v0,s4,0x10
bne v0,zero,0x00049924
_addu s1,s1,s0
or a1,s2,zero
li a0,0xa
lw t9,-0x775c(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x00049924
_or s4,zero,zero
bgtz s4,0x000499d4
_or a1,s2,zero
or a3,s2,zero
li a2,0x1e
li a1,0x1
lw a0,-0x7f3c(gp)
addiu a0,a0,-0x48f4
lw t9,-0x7764(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x000497b4
_nop
li a0,0xa
lw t9,-0x775c(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x000499ac
_or a3,s2,zero
lw a3,-0x7f3c(gp)
addiu a3,a3,-0x46e4
li a2,0x640
lw a1,-0x7f3c(gp)
addiu a1,a1,-0x4e7c
lw a0,-0x7f3c(gp)
addiu a0,a0,-0x48d4
lw t9,-0x7988(gp)
jalr t9
_nop
lw t9,-0x785c(gp)
jalr t9
_nop
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)\n\n{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}\n\n" comment (function_definition "int ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)\n\n{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "byte *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int unaff_s4;" primitive_type identifier ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined4 uStack_f0;" type_identifier identifier ;) (declaration "int iStack_ec;" primitive_type identifier ;) (declaration "int iStack_e8;" primitive_type identifier ;) (declaration "byte *pbStack_e4;" type_identifier (pointer_declarator "*pbStack_e4" * identifier) ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "code *pcStack_dc;" type_identifier (pointer_declarator "*pcStack_dc" * identifier) ;) (declaration "undefined1 *puStack_c8;" type_identifier (pointer_declarator "*puStack_c8" * identifier) ;) (declaration "int iStack_c4;" primitive_type identifier ;) (declaration "undefined *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "byte bStack_b4;" type_identifier identifier ;) (declaration "byte abStack_b3 [15];" type_identifier (array_declarator "abStack_b3 [15]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_a4 [45];" type_identifier (array_declarator "auStack_a4 [45]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_77 [3];" type_identifier (array_declarator "auStack_77 [3]" identifier [ number_literal ]) ;) (declaration "int iStack_74;" primitive_type identifier ;) (declaration "byte *pbStack_70;" type_identifier (pointer_declarator "*pbStack_70" * identifier) ;) (declaration "byte *pbStack_6c;" type_identifier (pointer_declarator "*pbStack_6c" * identifier) ;) (declaration "undefined4 uStack_68;" type_identifier identifier ;) (declaration "byte *pbStack_64;" type_identifier (pointer_declarator "*pbStack_64" * identifier) ;) (declaration "int iStack_60;" primitive_type identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "undefined1 *puStack_58;" type_identifier (pointer_declarator "*puStack_58" * identifier) ;) (declaration "code *pcStack_54;" type_identifier (pointer_declarator "*pcStack_54" * identifier) ;) (declaration "undefined1 auStack_34 [4];" type_identifier (array_declarator "auStack_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00080958;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00080958" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" if (parenthesized_expression "(param_5 == 9)" ( (binary_expression "param_5 == 9" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }" { (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x4928,1,0x20,param_1)" ( (binary_expression "PTR_DAT_00080134 + -0x4928" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) (if_statement "if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }" if (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }" { (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x4904,1,10,param_1)" ( (binary_expression "PTR_DAT_00080134 + -0x4904" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) (expression_statement "bVar5 = *param_2;" (assignment_expression "bVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }" { (expression_statement "unaff_s4 = 0x22;" (assignment_expression "unaff_s4 = 0x22" identifier = number_literal) ;) (do_statement "do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);" do (compound_statement "{\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        }" { (if_statement "if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }" if (parenthesized_expression "((bVar5 == 0x5c) || (bVar5 == 0x22))" ( (binary_expression "(bVar5 == 0x5c) || (bVar5 == 0x22)" (parenthesized_expression "(bVar5 == 0x5c)" ( (binary_expression "bVar5 == 0x5c" identifier == number_literal) )) || (parenthesized_expression "(bVar5 == 0x22)" ( (binary_expression "bVar5 == 0x22" identifier == number_literal) ))) )) (compound_statement "{\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }" { (expression_statement "(*(code *)PTR_fputc_00080914)(0x5c,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(0x5c,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x5c,param_1)" ( number_literal , identifier ))) ;) })) (expression_statement "(*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)(char)*param_2,param_1)" ( (cast_expression "(int)(char)*param_2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier))) , identifier ))) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "bVar5 = *param_2;" (assignment_expression "bVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) while (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) ;) })) (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x48f8,1,2,param_1)" ( (binary_expression "PTR_DAT_00080134 + -0x48f8" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) })) (expression_statement "unaff_s1 = (byte *)(uint)((int)param_4 < 4);" (assignment_expression "unaff_s1 = (byte *)(uint)((int)param_4 < 4)" identifier = (cast_expression "(byte *)(uint)((int)param_4 < 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)param_4 < 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_4 < 4)" ( (binary_expression "(int)param_4 < 4" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (if_statement "if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }" if (parenthesized_expression "(0 < (int)param_4)" ( (binary_expression "0 < (int)param_4" number_literal < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }" { (expression_statement "bVar1 = unaff_s1 != (byte *)0x0;" (assignment_expression "bVar1 = unaff_s1 != (byte *)0x0" identifier = (binary_expression "unaff_s1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "unaff_s1 = (byte *)0x3;" (assignment_expression "unaff_s1 = (byte *)0x3" identifier = (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (bVar1) {\n        unaff_s1 = param_4;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        unaff_s1 = param_4;\n      }" { (expression_statement "unaff_s1 = param_4;" (assignment_expression "unaff_s1 = param_4" identifier = identifier) ;) })) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" ( (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" * (cast_expression "(code *)PTR_base64_encode_atom_00080280" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,unaff_s1,auStack_34)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_fputs_00080878)(auStack_34,param_1);" (call_expression "(*(code *)PTR_fputs_00080878)(auStack_34,param_1)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" ( (pointer_expression "*(code *)PTR_fputs_00080878" * (cast_expression "(code *)PTR_fputs_00080878" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_34,param_1)" ( identifier , identifier ))) ;) (expression_statement "unaff_s4 = 1;" (assignment_expression "unaff_s4 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = auStack_34;" (assignment_expression "unaff_s6 = auStack_34" identifier = identifier) ;) (while_statement "while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }" while (parenthesized_expression "(param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4)" ( (comma_expression "param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4" (assignment_expression "param_2 = param_4 + -(int)unaff_s1" identifier = (binary_expression "param_4 + -(int)unaff_s1" identifier + (unary_expression "-(int)unaff_s1" - (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)))) , (binary_expression "(int)unaff_s1 < (int)param_4" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }" { (if_statement "if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }" if (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          param_2 = (byte *)0x3;\n        }" { (expression_statement "param_2 = (byte *)0x3;" (assignment_expression "param_2 = (byte *)0x3" identifier = (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" ( (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" * (cast_expression "(code *)PTR_base64_encode_atom_00080280" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s1 + param_3,param_2,unaff_s6)" ( (binary_expression "unaff_s1 + param_3" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_fputs_00080878)(unaff_s6,param_1);" (call_expression "(*(code *)PTR_fputs_00080878)(unaff_s6,param_1)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" ( (pointer_expression "*(code *)PTR_fputs_00080878" * (cast_expression "(code *)PTR_fputs_00080878" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s6,param_1)" ( identifier , identifier ))) ;) (expression_statement "unaff_s4 = unaff_s4 + 1;" (assignment_expression "unaff_s4 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s1 = unaff_s1 + (int)param_2;" (assignment_expression "unaff_s1 = unaff_s1 + (int)param_2" identifier = (binary_expression "unaff_s1 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }" if (parenthesized_expression "(0xf < unaff_s4)" ( (binary_expression "0xf < unaff_s4" number_literal < identifier) )) (compound_statement "{\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }" { (expression_statement "(*(code *)PTR_fputc_00080914)(10,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(10,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(10,param_1)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s4 = 0;" (assignment_expression "unaff_s4 = 0" identifier = number_literal) ;) })) })) (if_statement "if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }" if (parenthesized_expression "(0 < unaff_s4)" ( (binary_expression "0 < unaff_s4" number_literal < identifier) )) (compound_statement "{\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }" { (expression_statement "(*(code *)PTR_fputc_00080914)(10,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(10,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(10,param_1)" ( number_literal , identifier ))) ;) })) })) (expression_statement "puVar7 = (undefined *)0x1;" (assignment_expression "puVar7 = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar6 = PTR_DAT_00080134 + -0x48f4;" (assignment_expression "pbVar6 = PTR_DAT_00080134 + -0x48f4" identifier = (binary_expression "PTR_DAT_00080134 + -0x48f4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar6,1,0x1e,param_1)" ( identifier , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" else (compound_statement "{\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" { (if_statement "if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" if (parenthesized_expression "(param_5 != 10)" ( (binary_expression "param_5 != 10" identifier != number_literal) )) (compound_statement "{\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" { (expression_statement "puVar7 = PTR_DAT_00080134 + -0x4e7c;" (assignment_expression "puVar7 = PTR_DAT_00080134 + -0x4e7c" identifier = (binary_expression "PTR_DAT_00080134 + -0x4e7c" identifier + number_literal)) ;) (expression_statement "pbVar6 = PTR_DAT_00080134 + -0x48d4;" (assignment_expression "pbVar6 = PTR_DAT_00080134 + -0x48d4" identifier = (binary_expression "PTR_DAT_00080134 + -0x48d4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);" (call_expression "(*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4)" (parenthesized_expression "(*(code *)PTR___assert_fail_000806e8)" ( (pointer_expression "*(code *)PTR___assert_fail_000806e8" * (cast_expression "(code *)PTR___assert_fail_000806e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4)" ( identifier , identifier , number_literal , (binary_expression "PTR_DAT_00080134 + -0x46e4" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00049a18;" goto statement_identifier ;) })) (expression_statement "param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);" (assignment_expression "param_2 = (byte *)FUN_00045444(param_2,param_3,param_4)" identifier = (cast_expression "(byte *)FUN_00045444(param_2,param_3,param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00045444(param_2,param_3,param_4)" identifier (argument_list "(param_2,param_3,param_4)" ( identifier , identifier , identifier ))))) ;) (expression_statement "puVar7 = (undefined *)0x1;" (assignment_expression "puVar7 = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);" (call_expression "(*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00080778)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00080778" * (cast_expression "(code *)PTR___fprintf_chk_00080778" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2)" ( identifier , number_literal , (binary_expression "PTR_DAT_00080134 + -0x26a4" identifier + number_literal) , identifier ))) ;) (expression_statement "pbVar6 = param_2;" (assignment_expression "pbVar6 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR_safefree_000800c4)();" (call_expression "(*(code *)PTR_safefree_000800c4)()" (parenthesized_expression "(*(code *)PTR_safefree_000800c4)" ( (pointer_expression "*(code *)PTR_safefree_000800c4" * (cast_expression "(code *)PTR_safefree_000800c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_00080958)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_00080958" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }" { (return_statement "return *(int *)PTR___stack_chk_guard_00080958;" return (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (labeled_statement "LAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;" statement_identifier : (expression_statement "pcVar14 = ssh2_fingerprint_blob;" (assignment_expression "pcVar14 = ssh2_fingerprint_blob" identifier = identifier) ;)) (expression_statement "puVar13 = PTR___stack_chk_fail_00080814;" (assignment_expression "puVar13 = PTR___stack_chk_fail_00080814" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00080814)();" (call_expression "(*(code *)PTR___stack_chk_fail_00080814)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00080814)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00080814" * (cast_expression "(code *)PTR___stack_chk_fail_00080814" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_c0 = puVar13 + 0x3e64c;" (assignment_expression "puStack_c0 = puVar13 + 0x3e64c" identifier = (binary_expression "puVar13 + 0x3e64c" identifier + number_literal)) ;) (expression_statement "iStack_74 = **(int **)(puVar13 + 0x36f34);" (assignment_expression "iStack_74 = **(int **)(puVar13 + 0x36f34)" identifier = (pointer_expression "**(int **)(puVar13 + 0x36f34)" * (pointer_expression "*(int **)(puVar13 + 0x36f34)" * (cast_expression "(int **)(puVar13 + 0x36f34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x36f34)" ( (binary_expression "puVar13 + 0x36f34" identifier + number_literal) )))))) ;) (expression_statement "pbStack_70 = param_2;" (assignment_expression "pbStack_70 = param_2" identifier = identifier) ;) (expression_statement "pbStack_6c = unaff_s1;" (assignment_expression "pbStack_6c = unaff_s1" identifier = identifier) ;) (expression_statement "uStack_68 = param_1;" (assignment_expression "uStack_68 = param_1" identifier = identifier) ;) (expression_statement "pbStack_64 = param_4;" (assignment_expression "pbStack_64 = param_4" identifier = identifier) ;) (expression_statement "iStack_60 = unaff_s4;" (assignment_expression "iStack_60 = unaff_s4" identifier = identifier) ;) (expression_statement "iStack_5c = param_3;" (assignment_expression "iStack_5c = param_3" identifier = identifier) ;) (expression_statement "puStack_58 = unaff_s6;" (assignment_expression "puStack_58 = unaff_s6" identifier = identifier) ;) (expression_statement "pcStack_54 = pcVar14;" (assignment_expression "pcStack_54 = pcVar14" identifier = identifier) ;) (expression_statement "MD5Simple();" (call_expression "MD5Simple()" identifier (argument_list "()" ( ))) ;) (expression_statement "puStack_c8 = (undefined1 *)(uint)bStack_b4;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)bStack_b4" identifier = (cast_expression "(undefined1 *)(uint)bStack_b4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bStack_b4" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pbVar10 = abStack_b3;" (assignment_expression "pbVar10 = abStack_b3" identifier = identifier) ;) (expression_statement "puVar8 = auStack_a4;" (assignment_expression "puVar8 = auStack_a4" identifier = identifier) ;) (expression_statement "iVar12 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar12 = *(int *)(puStack_c0 + -0x7f3c)" identifier = (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar11 = *(int *)(puStack_c0 + -0x7f3c)" identifier = (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) ))))) ;) (do_statement "do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);" do (compound_statement "{\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  }" { (expression_statement "iStack_c4 = iVar12 + -0x2908;" (assignment_expression "iStack_c4 = iVar12 + -0x2908" identifier = (binary_expression "iVar12 + -0x2908" identifier + number_literal)) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7784)" * (pointer_expression "*(code **)(puStack_c0 + -0x7784)" * (cast_expression "(code **)(puStack_c0 + -0x7784)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7784)" ( (binary_expression "puStack_c0 + -0x7784" identifier + number_literal) ))))) )) (argument_list "(puVar8,1,0xffffffff,iVar11 + -0x48a8)" ( identifier , number_literal , number_literal , (binary_expression "iVar11 + -0x48a8" identifier + number_literal) ))) ;) (expression_statement "puVar8 = puVar8 + 3;" (assignment_expression "puVar8 = puVar8 + 3" identifier = (binary_expression "puVar8 + 3" identifier + number_literal)) ;) (expression_statement "puStack_c8 = (undefined1 *)(uint)*pbVar10;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)*pbVar10" identifier = (binary_expression "(undefined1 *)(uint)*pbVar10" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != auStack_77)" ( (binary_expression "puVar8 != auStack_77" identifier != identifier) )) ;) (expression_statement "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;" (assignment_expression "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0" identifier = (binary_expression "*(int *)(puStack_c0 + -0x7fc8) + 0x48d0" (pointer_expression "*(int *)(puStack_c0 + -0x7fc8)" * (cast_expression "(int *)(puStack_c0 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fc8)" ( (binary_expression "puStack_c0 + -0x7fc8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7784)" * (pointer_expression "*(code **)(puStack_c0 + -0x7784)" * (cast_expression "(code **)(puStack_c0 + -0x7784)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7784)" ( (binary_expression "puStack_c0 + -0x7784" identifier + number_literal) ))))) )) (argument_list "(auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" ( identifier , number_literal , number_literal , (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a8" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);" (assignment_expression "iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7ed8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7ed8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7ed8)" * (cast_expression "(code **)(puStack_c0 + -0x7ed8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7ed8)" ( (binary_expression "puStack_c0 + -0x7ed8" identifier + number_literal) ))))) )) (argument_list "((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" ( (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8" (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3]" (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10" (binary_expression "(uint)*pbVar6 << 0x18" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)pbVar6[1] << 0x10" (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)pbVar6[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[3]" identifier [ number_literal ]))) | (binary_expression "(uint)pbVar6[2] << 8" (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ])) << number_literal)) )))) ;) (if_statement "if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" if (parenthesized_expression "((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2))" ( (binary_expression "(iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)" (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) || (parenthesized_expression "((int)(puVar7 + -4) <= iVar2)" ( (binary_expression "(int)(puVar7 + -4) <= iVar2" (cast_expression "(int)(puVar7 + -4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar7 + -4)" ( (binary_expression "puVar7 + -4" identifier + number_literal) ))) <= identifier) ))) )) (compound_statement "{\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }" { (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7f74))(auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7f74))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7f74)" * (pointer_expression "*(code **)(puStack_c0 + -0x7f74)" * (cast_expression "(code **)(puStack_c0 + -0x7f74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7f74)" ( (binary_expression "puStack_c0 + -0x7f74" identifier + number_literal) ))))) )) (argument_list "(auStack_a4)" ( identifier )))) ;) }) (else_clause "else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" else (compound_statement "{\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" { (expression_statement "pbVar10 = pbVar6 + 4;" (assignment_expression "pbVar10 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "iVar3 = find_pubkey_alg_len(iVar2,pbVar10);" (assignment_expression "iVar3 = find_pubkey_alg_len(iVar2,pbVar10)" identifier = (call_expression "find_pubkey_alg_len(iVar2,pbVar10)" identifier (argument_list "(iVar2,pbVar10)" ( identifier , identifier )))) ;) (expression_statement "iVar12 = iVar2;" (assignment_expression "iVar12 = iVar2" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }" { (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" * (cast_expression "(code **)(puStack_c0 + -0x7fb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7fb8)" ( (binary_expression "puStack_c0 + -0x7fb8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" ( (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x4894" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" else (compound_statement "{\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" { (expression_statement "uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);" (assignment_expression "uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7)" identifier = (call_expression "(**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7)" (parenthesized_expression "(**(code **)(iVar3 + 0x24))" ( (pointer_expression "**(code **)(iVar3 + 0x24)" * (pointer_expression "*(code **)(iVar3 + 0x24)" * (cast_expression "(code **)(iVar3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (argument_list "(iVar3,pbVar6,puVar7)" ( identifier , identifier , identifier )))) ;) (expression_statement "puStack_c8 = auStack_a4;" (assignment_expression "puStack_c8 = auStack_a4" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" * (cast_expression "(code **)(puStack_c0 + -0x7fb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7fb8)" ( (binary_expression "puStack_c0 + -0x7fb8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" ( (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a0" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier )))) ;) }))) }))) (if_statement "if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }" if (parenthesized_expression "(iStack_74 != **(int **)(puStack_c0 + -0x7718))" ( (binary_expression "iStack_74 != **(int **)(puStack_c0 + -0x7718)" identifier != (pointer_expression "**(int **)(puStack_c0 + -0x7718)" * (pointer_expression "*(int **)(puStack_c0 + -0x7718)" * (cast_expression "(int **)(puStack_c0 + -0x7718)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7718)" ( (binary_expression "puStack_c0 + -0x7718" identifier + number_literal) )))))) )) (compound_statement "{\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }" { (expression_statement "pcVar14 = *(code **)(puStack_c0 + -0x785c);" (assignment_expression "pcVar14 = *(code **)(puStack_c0 + -0x785c)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x785c)" * (cast_expression "(code **)(puStack_c0 + -0x785c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x785c)" ( (binary_expression "puStack_c0 + -0x785c" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = ssh2_fingerprint;" (assignment_expression "pcVar15 = ssh2_fingerprint" identifier = identifier) ;) (expression_statement "iVar3 = iStack_74;" (assignment_expression "iVar3 = iStack_74" identifier = identifier) ;) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(pcVar14 + 0x36d0c);" (assignment_expression "piVar9 = *(int **)(pcVar14 + 0x36d0c)" identifier = (pointer_expression "*(int **)(pcVar14 + 0x36d0c)" * (cast_expression "(int **)(pcVar14 + 0x36d0c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36d0c)" ( (binary_expression "pcVar14 + 0x36d0c" identifier + number_literal) ))))) ;) (expression_statement "iStack_ec = *piVar9;" (assignment_expression "iStack_ec = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iStack_e8 = iVar2;" (assignment_expression "iStack_e8 = iVar2" identifier = identifier) ;) (expression_statement "pbStack_e4 = pbVar10;" (assignment_expression "pbStack_e4 = pbVar10" identifier = identifier) ;) (expression_statement "iStack_e0 = iVar11 + -0x48a8;" (assignment_expression "iStack_e0 = iVar11 + -0x48a8" identifier = (binary_expression "iVar11 + -0x48a8" identifier + number_literal)) ;) (expression_statement "pcStack_dc = pcVar15;" (assignment_expression "pcStack_dc = pcVar15" identifier = identifier) ;) (expression_statement "uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);" (assignment_expression "uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0)" identifier = (call_expression "(**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0)" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" ( (pointer_expression "**(code **)(iVar3 + 0xc)" * (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) )) (argument_list "(iVar12,&uStack_f0)" ( identifier , (pointer_expression "&uStack_f0" & identifier) )))) ;) (expression_statement "iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);" (assignment_expression "iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0)" identifier = (call_expression "ssh2_fingerprint_blob(uVar4,uStack_f0)" identifier (argument_list "(uVar4,uStack_f0)" ( identifier , identifier )))) ;) (expression_statement "(**(code **)(pcVar14 + 0x36478))(uVar4);" (call_expression "(**(code **)(pcVar14 + 0x36478))(uVar4)" (parenthesized_expression "(**(code **)(pcVar14 + 0x36478))" ( (pointer_expression "**(code **)(pcVar14 + 0x36478)" * (pointer_expression "*(code **)(pcVar14 + 0x36478)" * (cast_expression "(code **)(pcVar14 + 0x36478)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36478)" ( (binary_expression "pcVar14 + 0x36478" identifier + number_literal) ))))) )) (argument_list "(uVar4)" ( identifier ))) ;) (if_statement "if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }" if (parenthesized_expression "(iStack_ec != *piVar9)" ( (binary_expression "iStack_ec != *piVar9" identifier != (pointer_expression "*piVar9" * identifier)) )) (compound_statement "{\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }" { (expression_statement "pcVar14 = *(code **)(pcVar14 + 0x36bc8);" (assignment_expression "pcVar14 = *(code **)(pcVar14 + 0x36bc8)" identifier = (pointer_expression "*(code **)(pcVar14 + 0x36bc8)" * (cast_expression "(code **)(pcVar14 + 0x36bc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36bc8)" ( (binary_expression "pcVar14 + 0x36bc8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar11 = f_open();" (assignment_expression "iVar11 = f_open()" identifier = (call_expression "f_open()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar12 = 0;\n      }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" else (compound_statement "{\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" { (expression_statement "iVar12 = FUN_000462f8(iVar11);" (assignment_expression "iVar12 = FUN_000462f8(iVar11)" identifier = (call_expression "FUN_000462f8(iVar11)" identifier (argument_list "(iVar11)" ( identifier )))) ;) (expression_statement "(**(code **)(pcVar14 + 0x36bb4))(iVar11);" (call_expression "(**(code **)(pcVar14 + 0x36bb4))(iVar11)" (parenthesized_expression "(**(code **)(pcVar14 + 0x36bb4))" ( (pointer_expression "**(code **)(pcVar14 + 0x36bb4)" * (pointer_expression "*(code **)(pcVar14 + 0x36bb4)" * (cast_expression "(code **)(pcVar14 + 0x36bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36bb4)" ( (binary_expression "pcVar14 + 0x36bb4" identifier + number_literal) ))))) )) (argument_list "(iVar11)" ( identifier ))) ;) }))) (return_statement "return iVar12;" return identifier ;) })) (return_statement "return iVar11;" return identifier ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nvoid ssh2_write_pubkey(FILE *fp,char *comment,void *v_pub_blob,int pub_len,int keytype)\n\n{\n  bool bVar1;\n  byte bVar4;\n  int namelen;\n  ssh_signkey *psVar2;\n  int iVar3;\n  void *blob;\n  FILE *fp_00;\n  int iVar5;\n  byte *p;\n  Filename *filename;\n  undefined *len;\n  undefined1 *puVar6;\n  int *piVar7;\n  byte *unaff_s1;\n  byte *name;\n  int iVar8;\n  int unaff_s4;\n  char *unaff_s6;\n  undefined *puVar9;\n  code *pcVar10;\n  code *pcVar11;\n  int iStack_f0;\n  Filename *pFStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  FILE *pFStack_68;\n  int iStack_64;\n  int iStack_60;\n  void *pvStack_5c;\n  char *pcStack_58;\n  code *pcStack_54;\n  char buf [5];\n  \n  iVar5 = *(int *)PTR___stack_chk_guard_00080958;\n  if (keytype == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp);\n    if (comment != (char *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);\n      bVar4 = *comment;\n      if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);\n    }\n    unaff_s1 = (byte *)(uint)(pub_len < 4);\n    if (0 < pub_len) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);\n      buf[4] = '\0';\n      (*(code *)PTR_fputs_00080878)(buf,fp);\n      unaff_s4 = 1;\n      unaff_s6 = buf;\n      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }\n    }\n    len = (undefined *)0x1;\n    p = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp);\n  }\n  else {\n    if (keytype != 10) {\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);\n    len = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);\n    p = (byte *)comment;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (iVar5 == *(int *)PTR___stack_chk_guard_00080958) {\n    return;\n  }\nLAB_00049a18:\n  pcVar10 = ssh2_fingerprint_blob;\n  puVar9 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar9 + 0x3e64c;\n  iStack_74 = **(int **)(puVar9 + 0x36f34);\n  pbStack_70 = (byte *)comment;\n  pbStack_6c = unaff_s1;\n  pFStack_68 = fp;\n  iStack_64 = pub_len;\n  iStack_60 = unaff_s4;\n  pvStack_5c = v_pub_blob;\n  pcStack_58 = unaff_s6;\n  pcStack_54 = pcVar10;\n  MD5Simple(p,(uint)len,&bStack_b4);\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  name = abStack_b3;\n  puVar6 = auStack_a4;\n  iVar8 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar5 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar8 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8);\n    puVar6 = puVar6 + 3;\n    puStack_c8 = (undefined1 *)(uint)*name;\n    name = name + 1;\n  } while (puVar6 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar8 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  namelen = (**(code **)(puStack_c0 + -0x7ed8))\n                      ((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8);\n  if ((namelen < 1) || ((int)(len + -4) <= namelen)) {\n    (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    name = p + 4;\n    psVar2 = find_pubkey_alg_len(namelen,(char *)name);\n    iVar8 = namelen;\n    if (psVar2 == (ssh_signkey *)0x0) {\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }\n    else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar10 = *(code **)(puStack_c0 + -0x785c);\n    pcVar11 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar10)();\n    piVar7 = *(int **)(pcVar10 + 0x36d0c);\n    pFStack_ec = (Filename *)*piVar7;\n    iStack_e8 = namelen;\n    pbStack_e4 = name;\n    iStack_e0 = iVar5 + -0x48a8;\n    pcStack_dc = pcVar11;\n    blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0);\n    ssh2_fingerprint_blob(blob,iStack_f0);\n    (**(code **)(pcVar10 + 0x36478))(blob);\n    if (pFStack_ec != (Filename *)*piVar7) {\n      pcVar10 = *(code **)(pcVar10 + 0x36bc8);\n      filename = pFStack_ec;\n      (*pcVar10)();\n      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);\n      if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }\n      return;\n    }\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void ssh2_write_pubkey(FILE *fp,char *comment,void *v_pub_blob,int pub_len,int keytype)\n\n{\n  bool bVar1;\n  byte bVar4;\n  int namelen;\n  ssh_signkey *psVar2;\n  int iVar3;\n  void *blob;\n  FILE *fp_00;\n  int iVar5;\n  byte *p;\n  Filename *filename;\n  undefined *len;\n  undefined1 *puVar6;\n  int *piVar7;\n  byte *unaff_s1;\n  byte *name;\n  int iVar8;\n  int unaff_s4;\n  char *unaff_s6;\n  undefined *puVar9;\n  code *pcVar10;\n  code *pcVar11;\n  int iStack_f0;\n  Filename *pFStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  FILE *pFStack_68;\n  int iStack_64;\n  int iStack_60;\n  void *pvStack_5c;\n  char *pcStack_58;\n  code *pcStack_54;\n  char buf [5];\n  \n  iVar5 = *(int *)PTR___stack_chk_guard_00080958;\n  if (keytype == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp);\n    if (comment != (char *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);\n      bVar4 = *comment;\n      if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);\n    }\n    unaff_s1 = (byte *)(uint)(pub_len < 4);\n    if (0 < pub_len) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);\n      buf[4] = '\0';\n      (*(code *)PTR_fputs_00080878)(buf,fp);\n      unaff_s4 = 1;\n      unaff_s6 = buf;\n      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }\n    }\n    len = (undefined *)0x1;\n    p = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp);\n  }\n  else {\n    if (keytype != 10) {\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);\n    len = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);\n    p = (byte *)comment;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (iVar5 == *(int *)PTR___stack_chk_guard_00080958) {\n    return;\n  }\nLAB_00049a18:\n  pcVar10 = ssh2_fingerprint_blob;\n  puVar9 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar9 + 0x3e64c;\n  iStack_74 = **(int **)(puVar9 + 0x36f34);\n  pbStack_70 = (byte *)comment;\n  pbStack_6c = unaff_s1;\n  pFStack_68 = fp;\n  iStack_64 = pub_len;\n  iStack_60 = unaff_s4;\n  pvStack_5c = v_pub_blob;\n  pcStack_58 = unaff_s6;\n  pcStack_54 = pcVar10;\n  MD5Simple(p,(uint)len,&bStack_b4);\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  name = abStack_b3;\n  puVar6 = auStack_a4;\n  iVar8 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar5 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar8 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8);\n    puVar6 = puVar6 + 3;\n    puStack_c8 = (undefined1 *)(uint)*name;\n    name = name + 1;\n  } while (puVar6 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar8 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  namelen = (**(code **)(puStack_c0 + -0x7ed8))\n                      ((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8);\n  if ((namelen < 1) || ((int)(len + -4) <= namelen)) {\n    (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    name = p + 4;\n    psVar2 = find_pubkey_alg_len(namelen,(char *)name);\n    iVar8 = namelen;\n    if (psVar2 == (ssh_signkey *)0x0) {\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }\n    else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar10 = *(code **)(puStack_c0 + -0x785c);\n    pcVar11 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar10)();\n    piVar7 = *(int **)(pcVar10 + 0x36d0c);\n    pFStack_ec = (Filename *)*piVar7;\n    iStack_e8 = namelen;\n    pbStack_e4 = name;\n    iStack_e0 = iVar5 + -0x48a8;\n    pcStack_dc = pcVar11;\n    blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0);\n    ssh2_fingerprint_blob(blob,iStack_f0);\n    (**(code **)(pcVar10 + 0x36478))(blob);\n    if (pFStack_ec != (Filename *)*piVar7) {\n      pcVar10 = *(code **)(pcVar10 + 0x36bc8);\n      filename = pFStack_ec;\n      (*pcVar10)();\n      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);\n      if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }\n      return;\n    }\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ssh2_write_pubkey(FILE *fp,char *comment,void *v_pub_blob,int pub_len,int keytype)" identifier (parameter_list "(FILE *fp,char *comment,void *v_pub_blob,int pub_len,int keytype)" ( (parameter_declaration "FILE *fp" type_identifier (pointer_declarator "*fp" * identifier)) , (parameter_declaration "char *comment" primitive_type (pointer_declarator "*comment" * identifier)) , (parameter_declaration "void *v_pub_blob" primitive_type (pointer_declarator "*v_pub_blob" * identifier)) , (parameter_declaration "int pub_len" primitive_type identifier) , (parameter_declaration "int keytype" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  byte bVar4;\n  int namelen;\n  ssh_signkey *psVar2;\n  int iVar3;\n  void *blob;\n  FILE *fp_00;\n  int iVar5;\n  byte *p;\n  Filename *filename;\n  undefined *len;\n  undefined1 *puVar6;\n  int *piVar7;\n  byte *unaff_s1;\n  byte *name;\n  int iVar8;\n  int unaff_s4;\n  char *unaff_s6;\n  undefined *puVar9;\n  code *pcVar10;\n  code *pcVar11;\n  int iStack_f0;\n  Filename *pFStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  FILE *pFStack_68;\n  int iStack_64;\n  int iStack_60;\n  void *pvStack_5c;\n  char *pcStack_58;\n  code *pcStack_54;\n  char buf [5];\n  \n  iVar5 = *(int *)PTR___stack_chk_guard_00080958;\n  if (keytype == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp);\n    if (comment != (char *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);\n      bVar4 = *comment;\n      if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);\n    }\n    unaff_s1 = (byte *)(uint)(pub_len < 4);\n    if (0 < pub_len) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);\n      buf[4] = '\0';\n      (*(code *)PTR_fputs_00080878)(buf,fp);\n      unaff_s4 = 1;\n      unaff_s6 = buf;\n      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }\n    }\n    len = (undefined *)0x1;\n    p = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp);\n  }\n  else {\n    if (keytype != 10) {\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);\n    len = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);\n    p = (byte *)comment;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (iVar5 == *(int *)PTR___stack_chk_guard_00080958) {\n    return;\n  }\nLAB_00049a18:\n  pcVar10 = ssh2_fingerprint_blob;\n  puVar9 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar9 + 0x3e64c;\n  iStack_74 = **(int **)(puVar9 + 0x36f34);\n  pbStack_70 = (byte *)comment;\n  pbStack_6c = unaff_s1;\n  pFStack_68 = fp;\n  iStack_64 = pub_len;\n  iStack_60 = unaff_s4;\n  pvStack_5c = v_pub_blob;\n  pcStack_58 = unaff_s6;\n  pcStack_54 = pcVar10;\n  MD5Simple(p,(uint)len,&bStack_b4);\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  name = abStack_b3;\n  puVar6 = auStack_a4;\n  iVar8 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar5 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar8 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8);\n    puVar6 = puVar6 + 3;\n    puStack_c8 = (undefined1 *)(uint)*name;\n    name = name + 1;\n  } while (puVar6 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar8 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  namelen = (**(code **)(puStack_c0 + -0x7ed8))\n                      ((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8);\n  if ((namelen < 1) || ((int)(len + -4) <= namelen)) {\n    (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    name = p + 4;\n    psVar2 = find_pubkey_alg_len(namelen,(char *)name);\n    iVar8 = namelen;\n    if (psVar2 == (ssh_signkey *)0x0) {\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }\n    else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar10 = *(code **)(puStack_c0 + -0x785c);\n    pcVar11 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar10)();\n    piVar7 = *(int **)(pcVar10 + 0x36d0c);\n    pFStack_ec = (Filename *)*piVar7;\n    iStack_e8 = namelen;\n    pbStack_e4 = name;\n    iStack_e0 = iVar5 + -0x48a8;\n    pcStack_dc = pcVar11;\n    blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0);\n    ssh2_fingerprint_blob(blob,iStack_f0);\n    (**(code **)(pcVar10 + 0x36478))(blob);\n    if (pFStack_ec != (Filename *)*piVar7) {\n      pcVar10 = *(code **)(pcVar10 + 0x36bc8);\n      filename = pFStack_ec;\n      (*pcVar10)();\n      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);\n      if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }\n      return;\n    }\n    return;\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int namelen;" primitive_type identifier ;) (declaration "ssh_signkey *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "void *blob;" primitive_type (pointer_declarator "*blob" * identifier) ;) (declaration "FILE *fp_00;" type_identifier (pointer_declarator "*fp_00" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "Filename *filename;" type_identifier (pointer_declarator "*filename" * identifier) ;) (declaration "undefined *len;" type_identifier (pointer_declarator "*len" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "byte *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "byte *name;" type_identifier (pointer_declarator "*name" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int unaff_s4;" primitive_type identifier ;) (declaration "char *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int iStack_f0;" primitive_type identifier ;) (declaration "Filename *pFStack_ec;" type_identifier (pointer_declarator "*pFStack_ec" * identifier) ;) (declaration "int iStack_e8;" primitive_type identifier ;) (declaration "byte *pbStack_e4;" type_identifier (pointer_declarator "*pbStack_e4" * identifier) ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "code *pcStack_dc;" type_identifier (pointer_declarator "*pcStack_dc" * identifier) ;) (declaration "undefined1 *puStack_c8;" type_identifier (pointer_declarator "*puStack_c8" * identifier) ;) (declaration "int iStack_c4;" primitive_type identifier ;) (declaration "undefined *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "byte bStack_b4;" type_identifier identifier ;) (declaration "byte abStack_b3 [15];" type_identifier (array_declarator "abStack_b3 [15]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_a4 [45];" type_identifier (array_declarator "auStack_a4 [45]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_77 [3];" type_identifier (array_declarator "auStack_77 [3]" identifier [ number_literal ]) ;) (declaration "int iStack_74;" primitive_type identifier ;) (declaration "byte *pbStack_70;" type_identifier (pointer_declarator "*pbStack_70" * identifier) ;) (declaration "byte *pbStack_6c;" type_identifier (pointer_declarator "*pbStack_6c" * identifier) ;) (declaration "FILE *pFStack_68;" type_identifier (pointer_declarator "*pFStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "int iStack_60;" primitive_type identifier ;) (declaration "void *pvStack_5c;" primitive_type (pointer_declarator "*pvStack_5c" * identifier) ;) (declaration "char *pcStack_58;" primitive_type (pointer_declarator "*pcStack_58" * identifier) ;) (declaration "code *pcStack_54;" type_identifier (pointer_declarator "*pcStack_54" * identifier) ;) (declaration "char buf [5];" primitive_type (array_declarator "buf [5]" identifier [ number_literal ]) ;) (expression_statement "iVar5 = *(int *)PTR___stack_chk_guard_00080958;" (assignment_expression "iVar5 = *(int *)PTR___stack_chk_guard_00080958" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (keytype == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp);\n    if (comment != (char *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);\n      bVar4 = *comment;\n      if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);\n    }\n    unaff_s1 = (byte *)(uint)(pub_len < 4);\n    if (0 < pub_len) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);\n      buf[4] = '\0';\n      (*(code *)PTR_fputs_00080878)(buf,fp);\n      unaff_s4 = 1;\n      unaff_s6 = buf;\n      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }\n    }\n    len = (undefined *)0x1;\n    p = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp);\n  }\n  else {\n    if (keytype != 10) {\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);\n    len = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);\n    p = (byte *)comment;\n    (*(code *)PTR_safefree_000800c4)();\n  }" if (parenthesized_expression "(keytype == 9)" ( (binary_expression "keytype == 9" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp);\n    if (comment != (char *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);\n      bVar4 = *comment;\n      if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);\n    }\n    unaff_s1 = (byte *)(uint)(pub_len < 4);\n    if (0 < pub_len) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);\n      buf[4] = '\0';\n      (*(code *)PTR_fputs_00080878)(buf,fp);\n      unaff_s4 = 1;\n      unaff_s6 = buf;\n      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }\n    }\n    len = (undefined *)0x1;\n    p = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp);\n  }" { (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,fp)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x4928,1,0x20,fp)" ( (binary_expression "PTR_DAT_00080134 + -0x4928" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) (if_statement "if (comment != (char *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);\n      bVar4 = *comment;\n      if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);\n    }" if (parenthesized_expression "(comment != (char *)0x0)" ( (binary_expression "comment != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);\n      bVar4 = *comment;\n      if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);\n    }" { (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,fp)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x4904,1,10,fp)" ( (binary_expression "PTR_DAT_00080134 + -0x4904" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) (expression_statement "bVar4 = *comment;" (assignment_expression "bVar4 = *comment" identifier = (pointer_expression "*comment" * identifier)) ;) (if_statement "if (bVar4 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);\n      }" { (expression_statement "unaff_s4 = 0x22;" (assignment_expression "unaff_s4 = 0x22" identifier = number_literal) ;) (do_statement "do {\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        } while (bVar4 != 0);" do (compound_statement "{\n          if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }\n          (*(code *)PTR_fputc_00080914)((int)*comment,fp);\n          comment = (char *)((byte *)comment + 1);\n          bVar4 = *comment;\n        }" { (if_statement "if ((bVar4 == 0x5c) || (bVar4 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }" if (parenthesized_expression "((bVar4 == 0x5c) || (bVar4 == 0x22))" ( (binary_expression "(bVar4 == 0x5c) || (bVar4 == 0x22)" (parenthesized_expression "(bVar4 == 0x5c)" ( (binary_expression "bVar4 == 0x5c" identifier == number_literal) )) || (parenthesized_expression "(bVar4 == 0x22)" ( (binary_expression "bVar4 == 0x22" identifier == number_literal) ))) )) (compound_statement "{\n            (*(code *)PTR_fputc_00080914)(0x5c,fp);\n          }" { (expression_statement "(*(code *)PTR_fputc_00080914)(0x5c,fp);" (call_expression "(*(code *)PTR_fputc_00080914)(0x5c,fp)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x5c,fp)" ( number_literal , identifier ))) ;) })) (expression_statement "(*(code *)PTR_fputc_00080914)((int)*comment,fp);" (call_expression "(*(code *)PTR_fputc_00080914)((int)*comment,fp)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)*comment,fp)" ( (cast_expression "(int)*comment" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*comment" * identifier)) , identifier ))) ;) (expression_statement "comment = (char *)((byte *)comment + 1);" (assignment_expression "comment = (char *)((byte *)comment + 1)" identifier = (cast_expression "(char *)((byte *)comment + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)comment + 1)" ( (binary_expression "(byte *)comment + 1" (cast_expression "(byte *)comment" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar4 = *comment;" (assignment_expression "bVar4 = *comment" identifier = (pointer_expression "*comment" * identifier)) ;) }) while (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) ;) })) (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,fp)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x48f8,1,2,fp)" ( (binary_expression "PTR_DAT_00080134 + -0x48f8" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) })) (expression_statement "unaff_s1 = (byte *)(uint)(pub_len < 4);" (assignment_expression "unaff_s1 = (byte *)(uint)(pub_len < 4)" identifier = (cast_expression "(byte *)(uint)(pub_len < 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pub_len < 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pub_len < 4)" ( (binary_expression "pub_len < 4" identifier < number_literal) ))))) ;) (if_statement "if (0 < pub_len) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);\n      buf[4] = '\0';\n      (*(code *)PTR_fputs_00080878)(buf,fp);\n      unaff_s4 = 1;\n      unaff_s6 = buf;\n      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }\n    }" if (parenthesized_expression "(0 < pub_len)" ( (binary_expression "0 < pub_len" number_literal < identifier) )) (compound_statement "{\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);\n      buf[4] = '\0';\n      (*(code *)PTR_fputs_00080878)(buf,fp);\n      unaff_s4 = 1;\n      unaff_s6 = buf;\n      while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }\n    }" { (expression_statement "bVar1 = unaff_s1 != (byte *)0x0;" (assignment_expression "bVar1 = unaff_s1 != (byte *)0x0" identifier = (binary_expression "unaff_s1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "unaff_s1 = (byte *)0x3;" (assignment_expression "unaff_s1 = (byte *)0x3" identifier = (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (bVar1) {\n        unaff_s1 = (byte *)pub_len;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        unaff_s1 = (byte *)pub_len;\n      }" { (expression_statement "unaff_s1 = (byte *)pub_len;" (assignment_expression "unaff_s1 = (byte *)pub_len" identifier = (cast_expression "(byte *)pub_len" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)(v_pub_blob,unaff_s1,buf)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" ( (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" * (cast_expression "(code *)PTR_base64_encode_atom_00080280" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(v_pub_blob,unaff_s1,buf)" ( identifier , identifier , identifier ))) ;) (expression_statement "buf[4] = '\0';" (assignment_expression "buf[4] = '\0'" (subscript_expression "buf[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*(code *)PTR_fputs_00080878)(buf,fp);" (call_expression "(*(code *)PTR_fputs_00080878)(buf,fp)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" ( (pointer_expression "*(code *)PTR_fputs_00080878" * (cast_expression "(code *)PTR_fputs_00080878" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(buf,fp)" ( identifier , identifier ))) ;) (expression_statement "unaff_s4 = 1;" (assignment_expression "unaff_s4 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = buf;" (assignment_expression "unaff_s6 = buf" identifier = identifier) ;) (while_statement "while (comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len) {\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }" while (parenthesized_expression "(comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len)" ( (comma_expression "comment = (char *)(pub_len - (int)unaff_s1), (int)unaff_s1 < pub_len" (assignment_expression "comment = (char *)(pub_len - (int)unaff_s1)" identifier = (cast_expression "(char *)(pub_len - (int)unaff_s1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pub_len - (int)unaff_s1)" ( (binary_expression "pub_len - (int)unaff_s1" identifier - (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) , (binary_expression "(int)unaff_s1 < pub_len" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) )) (compound_statement "{\n        if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);\n        buf[4] = '\0';\n        (*(code *)PTR_fputs_00080878)(unaff_s6,fp);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)comment;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }\n      }" { (if_statement "if (3 < (int)comment) {\n          comment = (char *)0x3;\n        }" if (parenthesized_expression "(3 < (int)comment)" ( (binary_expression "3 < (int)comment" number_literal < (cast_expression "(int)comment" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          comment = (char *)0x3;\n        }" { (expression_statement "comment = (char *)0x3;" (assignment_expression "comment = (char *)0x3" identifier = (cast_expression "(char *)0x3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)\n                  ((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" ( (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" * (cast_expression "(code *)PTR_base64_encode_atom_00080280" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((byte *)((int)v_pub_blob + (int)unaff_s1),comment,unaff_s6)" ( (cast_expression "(byte *)((int)v_pub_blob + (int)unaff_s1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)v_pub_blob + (int)unaff_s1)" ( (binary_expression "(int)v_pub_blob + (int)unaff_s1" (cast_expression "(int)v_pub_blob" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , identifier , identifier ))) ;) (expression_statement "buf[4] = '\0';" (assignment_expression "buf[4] = '\0'" (subscript_expression "buf[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*(code *)PTR_fputs_00080878)(unaff_s6,fp);" (call_expression "(*(code *)PTR_fputs_00080878)(unaff_s6,fp)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" ( (pointer_expression "*(code *)PTR_fputs_00080878" * (cast_expression "(code *)PTR_fputs_00080878" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s6,fp)" ( identifier , identifier ))) ;) (expression_statement "unaff_s4 = unaff_s4 + 1;" (assignment_expression "unaff_s4 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s1 = unaff_s1 + (int)comment;" (assignment_expression "unaff_s1 = unaff_s1 + (int)comment" identifier = (binary_expression "unaff_s1 + (int)comment" identifier + (cast_expression "(int)comment" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }" if (parenthesized_expression "(0xf < unaff_s4)" ( (binary_expression "0xf < unaff_s4" number_literal < identifier) )) (compound_statement "{\n          (*(code *)PTR_fputc_00080914)(10,fp);\n          unaff_s4 = 0;\n        }" { (expression_statement "(*(code *)PTR_fputc_00080914)(10,fp);" (call_expression "(*(code *)PTR_fputc_00080914)(10,fp)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(10,fp)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s4 = 0;" (assignment_expression "unaff_s4 = 0" identifier = number_literal) ;) })) })) (if_statement "if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }" if (parenthesized_expression "(0 < unaff_s4)" ( (binary_expression "0 < unaff_s4" number_literal < identifier) )) (compound_statement "{\n        (*(code *)PTR_fputc_00080914)(10,fp);\n      }" { (expression_statement "(*(code *)PTR_fputc_00080914)(10,fp);" (call_expression "(*(code *)PTR_fputc_00080914)(10,fp)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(10,fp)" ( number_literal , identifier ))) ;) })) })) (expression_statement "len = (undefined *)0x1;" (assignment_expression "len = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p = PTR_DAT_00080134 + -0x48f4;" (assignment_expression "p = PTR_DAT_00080134 + -0x48f4" identifier = (binary_expression "PTR_DAT_00080134 + -0x48f4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp);" (call_expression "(*(code *)PTR_fwrite_0008090c)(p,1,0x1e,fp)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p,1,0x1e,fp)" ( identifier , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    if (keytype != 10) {\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);\n    len = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);\n    p = (byte *)comment;\n    (*(code *)PTR_safefree_000800c4)();\n  }" else (compound_statement "{\n    if (keytype != 10) {\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);\n    len = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);\n    p = (byte *)comment;\n    (*(code *)PTR_safefree_000800c4)();\n  }" { (if_statement "if (keytype != 10) {\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" if (parenthesized_expression "(keytype != 10)" ( (binary_expression "keytype != 10" identifier != number_literal) )) (compound_statement "{\n      len = PTR_DAT_00080134 + -0x4e7c;\n      p = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" { (expression_statement "len = PTR_DAT_00080134 + -0x4e7c;" (assignment_expression "len = PTR_DAT_00080134 + -0x4e7c" identifier = (binary_expression "PTR_DAT_00080134 + -0x4e7c" identifier + number_literal)) ;) (expression_statement "p = PTR_DAT_00080134 + -0x48d4;" (assignment_expression "p = PTR_DAT_00080134 + -0x48d4" identifier = (binary_expression "PTR_DAT_00080134 + -0x48d4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4);" (call_expression "(*(code *)PTR___assert_fail_000806e8)(p,len,0x640,PTR_DAT_00080134 + -0x46e4)" (parenthesized_expression "(*(code *)PTR___assert_fail_000806e8)" ( (pointer_expression "*(code *)PTR___assert_fail_000806e8" * (cast_expression "(code *)PTR___assert_fail_000806e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p,len,0x640,PTR_DAT_00080134 + -0x46e4)" ( identifier , identifier , number_literal , (binary_expression "PTR_DAT_00080134 + -0x46e4" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00049a18;" goto statement_identifier ;) })) (expression_statement "comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len);" (assignment_expression "comment = ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len)" identifier = (call_expression "ssh2_pubkey_openssh_str_internal(comment,v_pub_blob,pub_len)" identifier (argument_list "(comment,v_pub_blob,pub_len)" ( identifier , identifier , identifier )))) ;) (expression_statement "len = (undefined *)0x1;" (assignment_expression "len = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment);" (call_expression "(*(code *)PTR___fprintf_chk_00080778)(fp,1,PTR_DAT_00080134 + -0x26a4,comment)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00080778)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00080778" * (cast_expression "(code *)PTR___fprintf_chk_00080778" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(fp,1,PTR_DAT_00080134 + -0x26a4,comment)" ( identifier , number_literal , (binary_expression "PTR_DAT_00080134 + -0x26a4" identifier + number_literal) , identifier ))) ;) (expression_statement "p = (byte *)comment;" (assignment_expression "p = (byte *)comment" identifier = (cast_expression "(byte *)comment" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_safefree_000800c4)();" (call_expression "(*(code *)PTR_safefree_000800c4)()" (parenthesized_expression "(*(code *)PTR_safefree_000800c4)" ( (pointer_expression "*(code *)PTR_safefree_000800c4" * (cast_expression "(code *)PTR_safefree_000800c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (if_statement "if (iVar5 == *(int *)PTR___stack_chk_guard_00080958) {\n    return;\n  }" if (parenthesized_expression "(iVar5 == *(int *)PTR___stack_chk_guard_00080958)" ( (binary_expression "iVar5 == *(int *)PTR___stack_chk_guard_00080958" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00049a18:\n  pcVar10 = ssh2_fingerprint_blob;" statement_identifier : (expression_statement "pcVar10 = ssh2_fingerprint_blob;" (assignment_expression "pcVar10 = ssh2_fingerprint_blob" identifier = identifier) ;)) (expression_statement "puVar9 = PTR___stack_chk_fail_00080814;" (assignment_expression "puVar9 = PTR___stack_chk_fail_00080814" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00080814)();" (call_expression "(*(code *)PTR___stack_chk_fail_00080814)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00080814)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00080814" * (cast_expression "(code *)PTR___stack_chk_fail_00080814" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_c0 = puVar9 + 0x3e64c;" (assignment_expression "puStack_c0 = puVar9 + 0x3e64c" identifier = (binary_expression "puVar9 + 0x3e64c" identifier + number_literal)) ;) (expression_statement "iStack_74 = **(int **)(puVar9 + 0x36f34);" (assignment_expression "iStack_74 = **(int **)(puVar9 + 0x36f34)" identifier = (pointer_expression "**(int **)(puVar9 + 0x36f34)" * (pointer_expression "*(int **)(puVar9 + 0x36f34)" * (cast_expression "(int **)(puVar9 + 0x36f34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x36f34)" ( (binary_expression "puVar9 + 0x36f34" identifier + number_literal) )))))) ;) (expression_statement "pbStack_70 = (byte *)comment;" (assignment_expression "pbStack_70 = (byte *)comment" identifier = (cast_expression "(byte *)comment" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbStack_6c = unaff_s1;" (assignment_expression "pbStack_6c = unaff_s1" identifier = identifier) ;) (expression_statement "pFStack_68 = fp;" (assignment_expression "pFStack_68 = fp" identifier = identifier) ;) (expression_statement "iStack_64 = pub_len;" (assignment_expression "iStack_64 = pub_len" identifier = identifier) ;) (expression_statement "iStack_60 = unaff_s4;" (assignment_expression "iStack_60 = unaff_s4" identifier = identifier) ;) (expression_statement "pvStack_5c = v_pub_blob;" (assignment_expression "pvStack_5c = v_pub_blob" identifier = identifier) ;) (expression_statement "pcStack_58 = unaff_s6;" (assignment_expression "pcStack_58 = unaff_s6" identifier = identifier) ;) (expression_statement "pcStack_54 = pcVar10;" (assignment_expression "pcStack_54 = pcVar10" identifier = identifier) ;) (expression_statement "MD5Simple(p,(uint)len,&bStack_b4);" (call_expression "MD5Simple(p,(uint)len,&bStack_b4)" identifier (argument_list "(p,(uint)len,&bStack_b4)" ( identifier , (cast_expression "(uint)len" ( (type_descriptor "uint" type_identifier) ) identifier) , (pointer_expression "&bStack_b4" & identifier) ))) ;) (expression_statement "puStack_c8 = (undefined1 *)(uint)bStack_b4;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)bStack_b4" identifier = (cast_expression "(undefined1 *)(uint)bStack_b4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bStack_b4" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "name = abStack_b3;" (assignment_expression "name = abStack_b3" identifier = identifier) ;) (expression_statement "puVar6 = auStack_a4;" (assignment_expression "puVar6 = auStack_a4" identifier = identifier) ;) (expression_statement "iVar8 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar8 = *(int *)(puStack_c0 + -0x7f3c)" identifier = (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar5 = *(int *)(puStack_c0 + -0x7f3c)" identifier = (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) ))))) ;) (do_statement "do {\n    iStack_c4 = iVar8 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8);\n    puVar6 = puVar6 + 3;\n    puStack_c8 = (undefined1 *)(uint)*name;\n    name = name + 1;\n  } while (puVar6 != auStack_77);" do (compound_statement "{\n    iStack_c4 = iVar8 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8);\n    puVar6 = puVar6 + 3;\n    puStack_c8 = (undefined1 *)(uint)*name;\n    name = name + 1;\n  }" { (expression_statement "iStack_c4 = iVar8 + -0x2908;" (assignment_expression "iStack_c4 = iVar8 + -0x2908" identifier = (binary_expression "iVar8 + -0x2908" identifier + number_literal)) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))(puVar6,1,0xffffffff,iVar5 + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7784)" * (pointer_expression "*(code **)(puStack_c0 + -0x7784)" * (cast_expression "(code **)(puStack_c0 + -0x7784)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7784)" ( (binary_expression "puStack_c0 + -0x7784" identifier + number_literal) ))))) )) (argument_list "(puVar6,1,0xffffffff,iVar5 + -0x48a8)" ( identifier , number_literal , number_literal , (binary_expression "iVar5 + -0x48a8" identifier + number_literal) ))) ;) (expression_statement "puVar6 = puVar6 + 3;" (assignment_expression "puVar6 = puVar6 + 3" identifier = (binary_expression "puVar6 + 3" identifier + number_literal)) ;) (expression_statement "puStack_c8 = (undefined1 *)(uint)*name;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)*name" identifier = (binary_expression "(undefined1 *)(uint)*name" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "name = name + 1;" (assignment_expression "name = name + 1" identifier = (binary_expression "name + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != auStack_77)" ( (binary_expression "puVar6 != auStack_77" identifier != identifier) )) ;) (expression_statement "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;" (assignment_expression "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0" identifier = (binary_expression "*(int *)(puStack_c0 + -0x7fc8) + 0x48d0" (pointer_expression "*(int *)(puStack_c0 + -0x7fc8)" * (cast_expression "(int *)(puStack_c0 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fc8)" ( (binary_expression "puStack_c0 + -0x7fc8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7784)" * (pointer_expression "*(code **)(puStack_c0 + -0x7784)" * (cast_expression "(code **)(puStack_c0 + -0x7784)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7784)" ( (binary_expression "puStack_c0 + -0x7784" identifier + number_literal) ))))) )) (argument_list "(auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" ( identifier , number_literal , number_literal , (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a8" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "namelen = (**(code **)(puStack_c0 + -0x7ed8))\n                      ((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8);" (assignment_expression "namelen = (**(code **)(puStack_c0 + -0x7ed8))\n                      ((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7ed8))\n                      ((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7ed8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7ed8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7ed8)" * (cast_expression "(code **)(puStack_c0 + -0x7ed8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7ed8)" ( (binary_expression "puStack_c0 + -0x7ed8" identifier + number_literal) ))))) )) (argument_list "((uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8)" ( (binary_expression "(uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3] | (uint)p[2] << 8" (binary_expression "(uint)*p << 0x18 | (uint)p[1] << 0x10 | (uint)p[3]" (binary_expression "(uint)*p << 0x18 | (uint)p[1] << 0x10" (binary_expression "(uint)*p << 0x18" (binary_expression "(uint)*p" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)p[1] << 0x10" (cast_expression "(uint)p[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)p[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[3]" identifier [ number_literal ]))) | (binary_expression "(uint)p[2] << 8" (cast_expression "(uint)p[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[2]" identifier [ number_literal ])) << number_literal)) )))) ;) (if_statement "if ((namelen < 1) || ((int)(len + -4) <= namelen)) {\n    (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    name = p + 4;\n    psVar2 = find_pubkey_alg_len(namelen,(char *)name);\n    iVar8 = namelen;\n    if (psVar2 == (ssh_signkey *)0x0) {\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }\n    else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }\n  }" if (parenthesized_expression "((namelen < 1) || ((int)(len + -4) <= namelen))" ( (binary_expression "(namelen < 1) || ((int)(len + -4) <= namelen)" (parenthesized_expression "(namelen < 1)" ( (binary_expression "namelen < 1" identifier < number_literal) )) || (parenthesized_expression "((int)(len + -4) <= namelen)" ( (binary_expression "(int)(len + -4) <= namelen" (cast_expression "(int)(len + -4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(len + -4)" ( (binary_expression "len + -4" identifier + number_literal) ))) <= identifier) ))) )) (compound_statement "{\n    (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }" { (expression_statement "(**(code **)(puStack_c0 + -0x7f74))(auStack_a4);" (call_expression "(**(code **)(puStack_c0 + -0x7f74))(auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7f74))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7f74)" * (pointer_expression "*(code **)(puStack_c0 + -0x7f74)" * (cast_expression "(code **)(puStack_c0 + -0x7f74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7f74)" ( (binary_expression "puStack_c0 + -0x7f74" identifier + number_literal) ))))) )) (argument_list "(auStack_a4)" ( identifier ))) ;) }) (else_clause "else {\n    name = p + 4;\n    psVar2 = find_pubkey_alg_len(namelen,(char *)name);\n    iVar8 = namelen;\n    if (psVar2 == (ssh_signkey *)0x0) {\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }\n    else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }\n  }" else (compound_statement "{\n    name = p + 4;\n    psVar2 = find_pubkey_alg_len(namelen,(char *)name);\n    iVar8 = namelen;\n    if (psVar2 == (ssh_signkey *)0x0) {\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }\n    else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }\n  }" { (expression_statement "name = p + 4;" (assignment_expression "name = p + 4" identifier = (binary_expression "p + 4" identifier + number_literal)) ;) (expression_statement "psVar2 = find_pubkey_alg_len(namelen,(char *)name);" (assignment_expression "psVar2 = find_pubkey_alg_len(namelen,(char *)name)" identifier = (call_expression "find_pubkey_alg_len(namelen,(char *)name)" identifier (argument_list "(namelen,(char *)name)" ( identifier , (cast_expression "(char *)name" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar8 = namelen;" (assignment_expression "iVar8 = namelen" identifier = identifier) ;) (if_statement "if (psVar2 == (ssh_signkey *)0x0) {\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }\n    else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }" if (parenthesized_expression "(psVar2 == (ssh_signkey *)0x0)" ( (binary_expression "psVar2 == (ssh_signkey *)0x0" identifier == (cast_expression "(ssh_signkey *)0x0" ( (type_descriptor "ssh_signkey *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);\n    }" { (expression_statement "(**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4);" (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" * (cast_expression "(code **)(puStack_c0 + -0x7fb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7fb8)" ( (binary_expression "puStack_c0 + -0x7fb8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x4894,namelen,name,auStack_a4)" ( (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x4894" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }" else (compound_statement "{\n      iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);\n      puStack_c8 = auStack_a4;\n      (**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);\n    }" { (expression_statement "iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len);" (assignment_expression "iVar3 = (*psVar2->pubkey_bits)(psVar2,p,(int)len)" identifier = (call_expression "(*psVar2->pubkey_bits)(psVar2,p,(int)len)" (parenthesized_expression "(*psVar2->pubkey_bits)" ( (pointer_expression "*psVar2->pubkey_bits" * (field_expression "psVar2->pubkey_bits" identifier -> field_identifier)) )) (argument_list "(psVar2,p,(int)len)" ( identifier , identifier , (cast_expression "(int)len" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "puStack_c8 = auStack_a4;" (assignment_expression "puStack_c8 = auStack_a4" identifier = identifier) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3);" (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" * (cast_expression "(code **)(puStack_c0 + -0x7fb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7fb8)" ( (binary_expression "puStack_c0 + -0x7fb8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,namelen,name,iVar3)" ( (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a0" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier ))) ;) }))) }))) (if_statement "if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar10 = *(code **)(puStack_c0 + -0x785c);\n    pcVar11 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar10)();\n    piVar7 = *(int **)(pcVar10 + 0x36d0c);\n    pFStack_ec = (Filename *)*piVar7;\n    iStack_e8 = namelen;\n    pbStack_e4 = name;\n    iStack_e0 = iVar5 + -0x48a8;\n    pcStack_dc = pcVar11;\n    blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0);\n    ssh2_fingerprint_blob(blob,iStack_f0);\n    (**(code **)(pcVar10 + 0x36478))(blob);\n    if (pFStack_ec != (Filename *)*piVar7) {\n      pcVar10 = *(code **)(pcVar10 + 0x36bc8);\n      filename = pFStack_ec;\n      (*pcVar10)();\n      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);\n      if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }\n      return;\n    }\n    return;\n  }" if (parenthesized_expression "(iStack_74 != **(int **)(puStack_c0 + -0x7718))" ( (binary_expression "iStack_74 != **(int **)(puStack_c0 + -0x7718)" identifier != (pointer_expression "**(int **)(puStack_c0 + -0x7718)" * (pointer_expression "*(int **)(puStack_c0 + -0x7718)" * (cast_expression "(int **)(puStack_c0 + -0x7718)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7718)" ( (binary_expression "puStack_c0 + -0x7718" identifier + number_literal) )))))) )) (compound_statement "{\n    pcVar10 = *(code **)(puStack_c0 + -0x785c);\n    pcVar11 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar10)();\n    piVar7 = *(int **)(pcVar10 + 0x36d0c);\n    pFStack_ec = (Filename *)*piVar7;\n    iStack_e8 = namelen;\n    pbStack_e4 = name;\n    iStack_e0 = iVar5 + -0x48a8;\n    pcStack_dc = pcVar11;\n    blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0);\n    ssh2_fingerprint_blob(blob,iStack_f0);\n    (**(code **)(pcVar10 + 0x36478))(blob);\n    if (pFStack_ec != (Filename *)*piVar7) {\n      pcVar10 = *(code **)(pcVar10 + 0x36bc8);\n      filename = pFStack_ec;\n      (*pcVar10)();\n      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);\n      if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }\n      return;\n    }\n    return;\n  }" { (expression_statement "pcVar10 = *(code **)(puStack_c0 + -0x785c);" (assignment_expression "pcVar10 = *(code **)(puStack_c0 + -0x785c)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x785c)" * (cast_expression "(code **)(puStack_c0 + -0x785c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x785c)" ( (binary_expression "puStack_c0 + -0x785c" identifier + number_literal) ))))) ;) (expression_statement "pcVar11 = ssh2_fingerprint;" (assignment_expression "pcVar11 = ssh2_fingerprint" identifier = identifier) ;) (expression_statement "iVar3 = iStack_74;" (assignment_expression "iVar3 = iStack_74" identifier = identifier) ;) (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(pcVar10 + 0x36d0c);" (assignment_expression "piVar7 = *(int **)(pcVar10 + 0x36d0c)" identifier = (pointer_expression "*(int **)(pcVar10 + 0x36d0c)" * (cast_expression "(int **)(pcVar10 + 0x36d0c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x36d0c)" ( (binary_expression "pcVar10 + 0x36d0c" identifier + number_literal) ))))) ;) (expression_statement "pFStack_ec = (Filename *)*piVar7;" (assignment_expression "pFStack_ec = (Filename *)*piVar7" identifier = (cast_expression "(Filename *)*piVar7" ( (type_descriptor "Filename *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (expression_statement "iStack_e8 = namelen;" (assignment_expression "iStack_e8 = namelen" identifier = identifier) ;) (expression_statement "pbStack_e4 = name;" (assignment_expression "pbStack_e4 = name" identifier = identifier) ;) (expression_statement "iStack_e0 = iVar5 + -0x48a8;" (assignment_expression "iStack_e0 = iVar5 + -0x48a8" identifier = (binary_expression "iVar5 + -0x48a8" identifier + number_literal)) ;) (expression_statement "pcStack_dc = pcVar11;" (assignment_expression "pcStack_dc = pcVar11" identifier = identifier) ;) (expression_statement "blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0);" (assignment_expression "blob = (void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0)" identifier = (cast_expression "(void *)(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar3 + 0xc))(iVar8,&iStack_f0)" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" ( (pointer_expression "**(code **)(iVar3 + 0xc)" * (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) )) (argument_list "(iVar8,&iStack_f0)" ( identifier , (pointer_expression "&iStack_f0" & identifier) ))))) ;) (expression_statement "ssh2_fingerprint_blob(blob,iStack_f0);" (call_expression "ssh2_fingerprint_blob(blob,iStack_f0)" identifier (argument_list "(blob,iStack_f0)" ( identifier , identifier ))) ;) (expression_statement "(**(code **)(pcVar10 + 0x36478))(blob);" (call_expression "(**(code **)(pcVar10 + 0x36478))(blob)" (parenthesized_expression "(**(code **)(pcVar10 + 0x36478))" ( (pointer_expression "**(code **)(pcVar10 + 0x36478)" * (pointer_expression "*(code **)(pcVar10 + 0x36478)" * (cast_expression "(code **)(pcVar10 + 0x36478)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x36478)" ( (binary_expression "pcVar10 + 0x36478" identifier + number_literal) ))))) )) (argument_list "(blob)" ( identifier ))) ;) (if_statement "if (pFStack_ec != (Filename *)*piVar7) {\n      pcVar10 = *(code **)(pcVar10 + 0x36bc8);\n      filename = pFStack_ec;\n      (*pcVar10)();\n      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);\n      if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }\n      return;\n    }" if (parenthesized_expression "(pFStack_ec != (Filename *)*piVar7)" ( (binary_expression "pFStack_ec != (Filename *)*piVar7" identifier != (cast_expression "(Filename *)*piVar7" ( (type_descriptor "Filename *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) )) (compound_statement "{\n      pcVar10 = *(code **)(pcVar10 + 0x36bc8);\n      filename = pFStack_ec;\n      (*pcVar10)();\n      fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);\n      if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }\n      return;\n    }" { (expression_statement "pcVar10 = *(code **)(pcVar10 + 0x36bc8);" (assignment_expression "pcVar10 = *(code **)(pcVar10 + 0x36bc8)" identifier = (pointer_expression "*(code **)(pcVar10 + 0x36bc8)" * (cast_expression "(code **)(pcVar10 + 0x36bc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x36bc8)" ( (binary_expression "pcVar10 + 0x36bc8" identifier + number_literal) ))))) ;) (expression_statement "filename = pFStack_ec;" (assignment_expression "filename = pFStack_ec" identifier = identifier) ;) (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0);" (assignment_expression "fp_00 = f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0)" identifier = (call_expression "f_open(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0)" identifier (argument_list "(filename,(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4),0)" ( identifier , (cast_expression "(char *)(*(int *)(pcVar10 + 0x363a8) + 0x6fc4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar10 + 0x363a8) + 0x6fc4)" ( (binary_expression "*(int *)(pcVar10 + 0x363a8) + 0x6fc4" (pointer_expression "*(int *)(pcVar10 + 0x363a8)" * (cast_expression "(int *)(pcVar10 + 0x363a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar10 + 0x363a8)" ( (binary_expression "pcVar10 + 0x363a8" identifier + number_literal) )))) + number_literal) ))) , number_literal )))) ;) (if_statement "if (fp_00 != (FILE *)0x0) {\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }" if (parenthesized_expression "(fp_00 != (FILE *)0x0)" ( (binary_expression "fp_00 != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        key_type_fp(fp_00);\n        (**(code **)(pcVar10 + 0x36bb4))(fp_00);\n      }" { (expression_statement "key_type_fp(fp_00);" (call_expression "key_type_fp(fp_00)" identifier (argument_list "(fp_00)" ( identifier ))) ;) (expression_statement "(**(code **)(pcVar10 + 0x36bb4))(fp_00);" (call_expression "(**(code **)(pcVar10 + 0x36bb4))(fp_00)" (parenthesized_expression "(**(code **)(pcVar10 + 0x36bb4))" ( (pointer_expression "**(code **)(pcVar10 + 0x36bb4)" * (pointer_expression "*(code **)(pcVar10 + 0x36bb4)" * (cast_expression "(code **)(pcVar10 + 0x36bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar10 + 0x36bb4)" ( (binary_expression "pcVar10 + 0x36bb4" identifier + number_literal) ))))) )) (argument_list "(fp_00)" ( identifier ))) ;) })) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "int ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)\n\n{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}\n\n" (function_definition "int ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)\n\n{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}" primitive_type (function_declarator "ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "byte *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int unaff_s4;" primitive_type identifier ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined4 uStack_f0;" type_identifier identifier ;) (declaration "int iStack_ec;" primitive_type identifier ;) (declaration "int iStack_e8;" primitive_type identifier ;) (declaration "byte *pbStack_e4;" type_identifier (pointer_declarator "*pbStack_e4" * identifier) ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "code *pcStack_dc;" type_identifier (pointer_declarator "*pcStack_dc" * identifier) ;) (declaration "undefined1 *puStack_c8;" type_identifier (pointer_declarator "*puStack_c8" * identifier) ;) (declaration "int iStack_c4;" primitive_type identifier ;) (declaration "undefined *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "byte bStack_b4;" type_identifier identifier ;) (declaration "byte abStack_b3 [15];" type_identifier (array_declarator "abStack_b3 [15]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_a4 [45];" type_identifier (array_declarator "auStack_a4 [45]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_77 [3];" type_identifier (array_declarator "auStack_77 [3]" identifier [ number_literal ]) ;) (declaration "int iStack_74;" primitive_type identifier ;) (declaration "byte *pbStack_70;" type_identifier (pointer_declarator "*pbStack_70" * identifier) ;) (declaration "byte *pbStack_6c;" type_identifier (pointer_declarator "*pbStack_6c" * identifier) ;) (declaration "undefined4 uStack_68;" type_identifier identifier ;) (declaration "byte *pbStack_64;" type_identifier (pointer_declarator "*pbStack_64" * identifier) ;) (declaration "int iStack_60;" primitive_type identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "undefined1 *puStack_58;" type_identifier (pointer_declarator "*puStack_58" * identifier) ;) (declaration "code *pcStack_54;" type_identifier (pointer_declarator "*pcStack_54" * identifier) ;) (declaration "undefined1 auStack_34 [4];" type_identifier (array_declarator "auStack_34 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00080958;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00080958" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" if (parenthesized_expression "(param_5 == 9)" ( (binary_expression "param_5 == 9" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }" { (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x4928,1,0x20,param_1)" ( (binary_expression "PTR_DAT_00080134 + -0x4928" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) (if_statement "if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }" if (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }" { (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x4904,1,10,param_1)" ( (binary_expression "PTR_DAT_00080134 + -0x4904" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) (expression_statement "bVar5 = *param_2;" (assignment_expression "bVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }" { (expression_statement "unaff_s4 = 0x22;" (assignment_expression "unaff_s4 = 0x22" identifier = number_literal) ;) (do_statement "do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);" do (compound_statement "{\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        }" { (if_statement "if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }" if (parenthesized_expression "((bVar5 == 0x5c) || (bVar5 == 0x22))" ( (binary_expression "(bVar5 == 0x5c) || (bVar5 == 0x22)" (parenthesized_expression "(bVar5 == 0x5c)" ( (binary_expression "bVar5 == 0x5c" identifier == number_literal) )) || (parenthesized_expression "(bVar5 == 0x22)" ( (binary_expression "bVar5 == 0x22" identifier == number_literal) ))) )) (compound_statement "{\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }" { (expression_statement "(*(code *)PTR_fputc_00080914)(0x5c,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(0x5c,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x5c,param_1)" ( number_literal , identifier ))) ;) })) (expression_statement "(*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)(char)*param_2,param_1)" ( (cast_expression "(int)(char)*param_2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_2" * identifier))) , identifier ))) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "bVar5 = *param_2;" (assignment_expression "bVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) while (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) ;) })) (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00080134 + -0x48f8,1,2,param_1)" ( (binary_expression "PTR_DAT_00080134 + -0x48f8" identifier + number_literal) , number_literal , number_literal , identifier ))) ;) })) (expression_statement "unaff_s1 = (byte *)(uint)((int)param_4 < 4);" (assignment_expression "unaff_s1 = (byte *)(uint)((int)param_4 < 4)" identifier = (cast_expression "(byte *)(uint)((int)param_4 < 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)param_4 < 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_4 < 4)" ( (binary_expression "(int)param_4 < 4" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (if_statement "if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }" if (parenthesized_expression "(0 < (int)param_4)" ( (binary_expression "0 < (int)param_4" number_literal < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }" { (expression_statement "bVar1 = unaff_s1 != (byte *)0x0;" (assignment_expression "bVar1 = unaff_s1 != (byte *)0x0" identifier = (binary_expression "unaff_s1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "unaff_s1 = (byte *)0x3;" (assignment_expression "unaff_s1 = (byte *)0x3" identifier = (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (bVar1) {\n        unaff_s1 = param_4;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        unaff_s1 = param_4;\n      }" { (expression_statement "unaff_s1 = param_4;" (assignment_expression "unaff_s1 = param_4" identifier = identifier) ;) })) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" ( (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" * (cast_expression "(code *)PTR_base64_encode_atom_00080280" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,unaff_s1,auStack_34)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_fputs_00080878)(auStack_34,param_1);" (call_expression "(*(code *)PTR_fputs_00080878)(auStack_34,param_1)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" ( (pointer_expression "*(code *)PTR_fputs_00080878" * (cast_expression "(code *)PTR_fputs_00080878" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_34,param_1)" ( identifier , identifier ))) ;) (expression_statement "unaff_s4 = 1;" (assignment_expression "unaff_s4 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = auStack_34;" (assignment_expression "unaff_s6 = auStack_34" identifier = identifier) ;) (while_statement "while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }" while (parenthesized_expression "(param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4)" ( (comma_expression "param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4" (assignment_expression "param_2 = param_4 + -(int)unaff_s1" identifier = (binary_expression "param_4 + -(int)unaff_s1" identifier + (unary_expression "-(int)unaff_s1" - (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)))) , (binary_expression "(int)unaff_s1 < (int)param_4" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }" { (if_statement "if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }" if (parenthesized_expression "(3 < (int)param_2)" ( (binary_expression "3 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          param_2 = (byte *)0x3;\n        }" { (expression_statement "param_2 = (byte *)0x3;" (assignment_expression "param_2 = (byte *)0x3" identifier = (cast_expression "(byte *)0x3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" ( (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" * (cast_expression "(code *)PTR_base64_encode_atom_00080280" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s1 + param_3,param_2,unaff_s6)" ( (binary_expression "unaff_s1 + param_3" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_fputs_00080878)(unaff_s6,param_1);" (call_expression "(*(code *)PTR_fputs_00080878)(unaff_s6,param_1)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" ( (pointer_expression "*(code *)PTR_fputs_00080878" * (cast_expression "(code *)PTR_fputs_00080878" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s6,param_1)" ( identifier , identifier ))) ;) (expression_statement "unaff_s4 = unaff_s4 + 1;" (assignment_expression "unaff_s4 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s1 = unaff_s1 + (int)param_2;" (assignment_expression "unaff_s1 = unaff_s1 + (int)param_2" identifier = (binary_expression "unaff_s1 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }" if (parenthesized_expression "(0xf < unaff_s4)" ( (binary_expression "0xf < unaff_s4" number_literal < identifier) )) (compound_statement "{\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }" { (expression_statement "(*(code *)PTR_fputc_00080914)(10,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(10,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(10,param_1)" ( number_literal , identifier ))) ;) (expression_statement "unaff_s4 = 0;" (assignment_expression "unaff_s4 = 0" identifier = number_literal) ;) })) })) (if_statement "if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }" if (parenthesized_expression "(0 < unaff_s4)" ( (binary_expression "0 < unaff_s4" number_literal < identifier) )) (compound_statement "{\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }" { (expression_statement "(*(code *)PTR_fputc_00080914)(10,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(10,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" ( (pointer_expression "*(code *)PTR_fputc_00080914" * (cast_expression "(code *)PTR_fputc_00080914" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(10,param_1)" ( number_literal , identifier ))) ;) })) })) (expression_statement "puVar7 = (undefined *)0x1;" (assignment_expression "puVar7 = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar6 = PTR_DAT_00080134 + -0x48f4;" (assignment_expression "pbVar6 = PTR_DAT_00080134 + -0x48f4" identifier = (binary_expression "PTR_DAT_00080134 + -0x48f4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" ( (pointer_expression "*(code *)PTR_fwrite_0008090c" * (cast_expression "(code *)PTR_fwrite_0008090c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar6,1,0x1e,param_1)" ( identifier , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" else (compound_statement "{\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" { (if_statement "if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" if (parenthesized_expression "(param_5 != 10)" ( (binary_expression "param_5 != 10" identifier != number_literal) )) (compound_statement "{\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" { (expression_statement "puVar7 = PTR_DAT_00080134 + -0x4e7c;" (assignment_expression "puVar7 = PTR_DAT_00080134 + -0x4e7c" identifier = (binary_expression "PTR_DAT_00080134 + -0x4e7c" identifier + number_literal)) ;) (expression_statement "pbVar6 = PTR_DAT_00080134 + -0x48d4;" (assignment_expression "pbVar6 = PTR_DAT_00080134 + -0x48d4" identifier = (binary_expression "PTR_DAT_00080134 + -0x48d4" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);" (call_expression "(*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4)" (parenthesized_expression "(*(code *)PTR___assert_fail_000806e8)" ( (pointer_expression "*(code *)PTR___assert_fail_000806e8" * (cast_expression "(code *)PTR___assert_fail_000806e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4)" ( identifier , identifier , number_literal , (binary_expression "PTR_DAT_00080134 + -0x46e4" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00049a18;" goto statement_identifier ;) })) (expression_statement "param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);" (assignment_expression "param_2 = (byte *)FUN_00045444(param_2,param_3,param_4)" identifier = (cast_expression "(byte *)FUN_00045444(param_2,param_3,param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00045444(param_2,param_3,param_4)" identifier (argument_list "(param_2,param_3,param_4)" ( identifier , identifier , identifier ))))) ;) (expression_statement "puVar7 = (undefined *)0x1;" (assignment_expression "puVar7 = (undefined *)0x1" identifier = (cast_expression "(undefined *)0x1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);" (call_expression "(*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00080778)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00080778" * (cast_expression "(code *)PTR___fprintf_chk_00080778" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2)" ( identifier , number_literal , (binary_expression "PTR_DAT_00080134 + -0x26a4" identifier + number_literal) , identifier ))) ;) (expression_statement "pbVar6 = param_2;" (assignment_expression "pbVar6 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR_safefree_000800c4)();" (call_expression "(*(code *)PTR_safefree_000800c4)()" (parenthesized_expression "(*(code *)PTR_safefree_000800c4)" ( (pointer_expression "*(code *)PTR_safefree_000800c4" * (cast_expression "(code *)PTR_safefree_000800c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_00080958)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_00080958" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }" { (return_statement "return *(int *)PTR___stack_chk_guard_00080958;" return (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" * (cast_expression "(int *)PTR___stack_chk_guard_00080958" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (labeled_statement "LAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;" statement_identifier : (expression_statement "pcVar14 = ssh2_fingerprint_blob;" (assignment_expression "pcVar14 = ssh2_fingerprint_blob" identifier = identifier) ;)) (expression_statement "puVar13 = PTR___stack_chk_fail_00080814;" (assignment_expression "puVar13 = PTR___stack_chk_fail_00080814" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00080814)();" (call_expression "(*(code *)PTR___stack_chk_fail_00080814)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00080814)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00080814" * (cast_expression "(code *)PTR___stack_chk_fail_00080814" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_c0 = puVar13 + 0x3e64c;" (assignment_expression "puStack_c0 = puVar13 + 0x3e64c" identifier = (binary_expression "puVar13 + 0x3e64c" identifier + number_literal)) ;) (expression_statement "iStack_74 = **(int **)(puVar13 + 0x36f34);" (assignment_expression "iStack_74 = **(int **)(puVar13 + 0x36f34)" identifier = (pointer_expression "**(int **)(puVar13 + 0x36f34)" * (pointer_expression "*(int **)(puVar13 + 0x36f34)" * (cast_expression "(int **)(puVar13 + 0x36f34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x36f34)" ( (binary_expression "puVar13 + 0x36f34" identifier + number_literal) )))))) ;) (expression_statement "pbStack_70 = param_2;" (assignment_expression "pbStack_70 = param_2" identifier = identifier) ;) (expression_statement "pbStack_6c = unaff_s1;" (assignment_expression "pbStack_6c = unaff_s1" identifier = identifier) ;) (expression_statement "uStack_68 = param_1;" (assignment_expression "uStack_68 = param_1" identifier = identifier) ;) (expression_statement "pbStack_64 = param_4;" (assignment_expression "pbStack_64 = param_4" identifier = identifier) ;) (expression_statement "iStack_60 = unaff_s4;" (assignment_expression "iStack_60 = unaff_s4" identifier = identifier) ;) (expression_statement "iStack_5c = param_3;" (assignment_expression "iStack_5c = param_3" identifier = identifier) ;) (expression_statement "puStack_58 = unaff_s6;" (assignment_expression "puStack_58 = unaff_s6" identifier = identifier) ;) (expression_statement "pcStack_54 = pcVar14;" (assignment_expression "pcStack_54 = pcVar14" identifier = identifier) ;) (expression_statement "MD5Simple();" (call_expression "MD5Simple()" identifier (argument_list "()" ( ))) ;) (expression_statement "puStack_c8 = (undefined1 *)(uint)bStack_b4;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)bStack_b4" identifier = (cast_expression "(undefined1 *)(uint)bStack_b4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bStack_b4" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pbVar10 = abStack_b3;" (assignment_expression "pbVar10 = abStack_b3" identifier = identifier) ;) (expression_statement "puVar8 = auStack_a4;" (assignment_expression "puVar8 = auStack_a4" identifier = identifier) ;) (expression_statement "iVar12 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar12 = *(int *)(puStack_c0 + -0x7f3c)" identifier = (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar11 = *(int *)(puStack_c0 + -0x7f3c)" identifier = (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) ))))) ;) (do_statement "do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);" do (compound_statement "{\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  }" { (expression_statement "iStack_c4 = iVar12 + -0x2908;" (assignment_expression "iStack_c4 = iVar12 + -0x2908" identifier = (binary_expression "iVar12 + -0x2908" identifier + number_literal)) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7784)" * (pointer_expression "*(code **)(puStack_c0 + -0x7784)" * (cast_expression "(code **)(puStack_c0 + -0x7784)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7784)" ( (binary_expression "puStack_c0 + -0x7784" identifier + number_literal) ))))) )) (argument_list "(puVar8,1,0xffffffff,iVar11 + -0x48a8)" ( identifier , number_literal , number_literal , (binary_expression "iVar11 + -0x48a8" identifier + number_literal) ))) ;) (expression_statement "puVar8 = puVar8 + 3;" (assignment_expression "puVar8 = puVar8 + 3" identifier = (binary_expression "puVar8 + 3" identifier + number_literal)) ;) (expression_statement "puStack_c8 = (undefined1 *)(uint)*pbVar10;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)*pbVar10" identifier = (binary_expression "(undefined1 *)(uint)*pbVar10" (cast_expression "(undefined1 *)(uint)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != auStack_77)" ( (binary_expression "puVar8 != auStack_77" identifier != identifier) )) ;) (expression_statement "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;" (assignment_expression "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0" identifier = (binary_expression "*(int *)(puStack_c0 + -0x7fc8) + 0x48d0" (pointer_expression "*(int *)(puStack_c0 + -0x7fc8)" * (cast_expression "(int *)(puStack_c0 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7fc8)" ( (binary_expression "puStack_c0 + -0x7fc8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7784)" * (pointer_expression "*(code **)(puStack_c0 + -0x7784)" * (cast_expression "(code **)(puStack_c0 + -0x7784)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7784)" ( (binary_expression "puStack_c0 + -0x7784" identifier + number_literal) ))))) )) (argument_list "(auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" ( identifier , number_literal , number_literal , (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a8" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);" (assignment_expression "iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7ed8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7ed8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7ed8)" * (cast_expression "(code **)(puStack_c0 + -0x7ed8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7ed8)" ( (binary_expression "puStack_c0 + -0x7ed8" identifier + number_literal) ))))) )) (argument_list "((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" ( (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8" (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3]" (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10" (binary_expression "(uint)*pbVar6 << 0x18" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) | (binary_expression "(uint)pbVar6[1] << 0x10" (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ])) << number_literal)) | (cast_expression "(uint)pbVar6[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[3]" identifier [ number_literal ]))) | (binary_expression "(uint)pbVar6[2] << 8" (cast_expression "(uint)pbVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[2]" identifier [ number_literal ])) << number_literal)) )))) ;) (if_statement "if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" if (parenthesized_expression "((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2))" ( (binary_expression "(iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)" (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) || (parenthesized_expression "((int)(puVar7 + -4) <= iVar2)" ( (binary_expression "(int)(puVar7 + -4) <= iVar2" (cast_expression "(int)(puVar7 + -4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar7 + -4)" ( (binary_expression "puVar7 + -4" identifier + number_literal) ))) <= identifier) ))) )) (compound_statement "{\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }" { (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7f74))(auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7f74))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7f74)" * (pointer_expression "*(code **)(puStack_c0 + -0x7f74)" * (cast_expression "(code **)(puStack_c0 + -0x7f74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7f74)" ( (binary_expression "puStack_c0 + -0x7f74" identifier + number_literal) ))))) )) (argument_list "(auStack_a4)" ( identifier )))) ;) }) (else_clause "else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" else (compound_statement "{\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" { (expression_statement "pbVar10 = pbVar6 + 4;" (assignment_expression "pbVar10 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "iVar3 = find_pubkey_alg_len(iVar2,pbVar10);" (assignment_expression "iVar3 = find_pubkey_alg_len(iVar2,pbVar10)" identifier = (call_expression "find_pubkey_alg_len(iVar2,pbVar10)" identifier (argument_list "(iVar2,pbVar10)" ( identifier , identifier )))) ;) (expression_statement "iVar12 = iVar2;" (assignment_expression "iVar12 = iVar2" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }" { (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" * (cast_expression "(code **)(puStack_c0 + -0x7fb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7fb8)" ( (binary_expression "puStack_c0 + -0x7fb8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" ( (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x4894" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" else (compound_statement "{\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" { (expression_statement "uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);" (assignment_expression "uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7)" identifier = (call_expression "(**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7)" (parenthesized_expression "(**(code **)(iVar3 + 0x24))" ( (pointer_expression "**(code **)(iVar3 + 0x24)" * (pointer_expression "*(code **)(iVar3 + 0x24)" * (cast_expression "(code **)(iVar3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (argument_list "(iVar3,pbVar6,puVar7)" ( identifier , identifier , identifier )))) ;) (expression_statement "puStack_c8 = auStack_a4;" (assignment_expression "puStack_c8 = auStack_a4" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" identifier = (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" ( (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" * (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" * (cast_expression "(code **)(puStack_c0 + -0x7fb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7fb8)" ( (binary_expression "puStack_c0 + -0x7fb8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" ( (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a0" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" * (cast_expression "(int *)(puStack_c0 + -0x7f3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_c0 + -0x7f3c)" ( (binary_expression "puStack_c0 + -0x7f3c" identifier + number_literal) )))) + number_literal) , identifier , identifier , identifier )))) ;) }))) }))) (if_statement "if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }" if (parenthesized_expression "(iStack_74 != **(int **)(puStack_c0 + -0x7718))" ( (binary_expression "iStack_74 != **(int **)(puStack_c0 + -0x7718)" identifier != (pointer_expression "**(int **)(puStack_c0 + -0x7718)" * (pointer_expression "*(int **)(puStack_c0 + -0x7718)" * (cast_expression "(int **)(puStack_c0 + -0x7718)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x7718)" ( (binary_expression "puStack_c0 + -0x7718" identifier + number_literal) )))))) )) (compound_statement "{\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }" { (expression_statement "pcVar14 = *(code **)(puStack_c0 + -0x785c);" (assignment_expression "pcVar14 = *(code **)(puStack_c0 + -0x785c)" identifier = (pointer_expression "*(code **)(puStack_c0 + -0x785c)" * (cast_expression "(code **)(puStack_c0 + -0x785c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_c0 + -0x785c)" ( (binary_expression "puStack_c0 + -0x785c" identifier + number_literal) ))))) ;) (expression_statement "pcVar15 = ssh2_fingerprint;" (assignment_expression "pcVar15 = ssh2_fingerprint" identifier = identifier) ;) (expression_statement "iVar3 = iStack_74;" (assignment_expression "iVar3 = iStack_74" identifier = identifier) ;) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(pcVar14 + 0x36d0c);" (assignment_expression "piVar9 = *(int **)(pcVar14 + 0x36d0c)" identifier = (pointer_expression "*(int **)(pcVar14 + 0x36d0c)" * (cast_expression "(int **)(pcVar14 + 0x36d0c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36d0c)" ( (binary_expression "pcVar14 + 0x36d0c" identifier + number_literal) ))))) ;) (expression_statement "iStack_ec = *piVar9;" (assignment_expression "iStack_ec = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iStack_e8 = iVar2;" (assignment_expression "iStack_e8 = iVar2" identifier = identifier) ;) (expression_statement "pbStack_e4 = pbVar10;" (assignment_expression "pbStack_e4 = pbVar10" identifier = identifier) ;) (expression_statement "iStack_e0 = iVar11 + -0x48a8;" (assignment_expression "iStack_e0 = iVar11 + -0x48a8" identifier = (binary_expression "iVar11 + -0x48a8" identifier + number_literal)) ;) (expression_statement "pcStack_dc = pcVar15;" (assignment_expression "pcStack_dc = pcVar15" identifier = identifier) ;) (expression_statement "uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);" (assignment_expression "uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0)" identifier = (call_expression "(**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0)" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" ( (pointer_expression "**(code **)(iVar3 + 0xc)" * (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) )) (argument_list "(iVar12,&uStack_f0)" ( identifier , (pointer_expression "&uStack_f0" & identifier) )))) ;) (expression_statement "iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);" (assignment_expression "iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0)" identifier = (call_expression "ssh2_fingerprint_blob(uVar4,uStack_f0)" identifier (argument_list "(uVar4,uStack_f0)" ( identifier , identifier )))) ;) (expression_statement "(**(code **)(pcVar14 + 0x36478))(uVar4);" (call_expression "(**(code **)(pcVar14 + 0x36478))(uVar4)" (parenthesized_expression "(**(code **)(pcVar14 + 0x36478))" ( (pointer_expression "**(code **)(pcVar14 + 0x36478)" * (pointer_expression "*(code **)(pcVar14 + 0x36478)" * (cast_expression "(code **)(pcVar14 + 0x36478)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36478)" ( (binary_expression "pcVar14 + 0x36478" identifier + number_literal) ))))) )) (argument_list "(uVar4)" ( identifier ))) ;) (if_statement "if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }" if (parenthesized_expression "(iStack_ec != *piVar9)" ( (binary_expression "iStack_ec != *piVar9" identifier != (pointer_expression "*piVar9" * identifier)) )) (compound_statement "{\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }" { (expression_statement "pcVar14 = *(code **)(pcVar14 + 0x36bc8);" (assignment_expression "pcVar14 = *(code **)(pcVar14 + 0x36bc8)" identifier = (pointer_expression "*(code **)(pcVar14 + 0x36bc8)" * (cast_expression "(code **)(pcVar14 + 0x36bc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36bc8)" ( (binary_expression "pcVar14 + 0x36bc8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar11 = f_open();" (assignment_expression "iVar11 = f_open()" identifier = (call_expression "f_open()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar12 = 0;\n      }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" else (compound_statement "{\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" { (expression_statement "iVar12 = FUN_000462f8(iVar11);" (assignment_expression "iVar12 = FUN_000462f8(iVar11)" identifier = (call_expression "FUN_000462f8(iVar11)" identifier (argument_list "(iVar11)" ( identifier )))) ;) (expression_statement "(**(code **)(pcVar14 + 0x36bb4))(iVar11);" (call_expression "(**(code **)(pcVar14 + 0x36bb4))(iVar11)" (parenthesized_expression "(**(code **)(pcVar14 + 0x36bb4))" ( (pointer_expression "**(code **)(pcVar14 + 0x36bb4)" * (pointer_expression "*(code **)(pcVar14 + 0x36bb4)" * (cast_expression "(code **)(pcVar14 + 0x36bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar14 + 0x36bb4)" ( (binary_expression "pcVar14 + 0x36bb4" identifier + number_literal) ))))) )) (argument_list "(iVar11)" ( identifier ))) ;) }))) (return_statement "return iVar12;" return identifier ;) })) (return_statement "return iVar11;" return identifier ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , IDENT ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (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 ( (binary_expression IDENT + LIT) , LIT , LIT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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 , LIT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT , (binary_expression IDENT + LIT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT)) | (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT , IDENT )))) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) }))) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "int ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)\n\n{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "ssh2_write_pubkey(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)" (identifier "ssh2_write_pubkey") (parameter_list "(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "byte *param_4" (type_identifier "byte") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  bool bVar1;\n  byte bVar5;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  byte *pbVar6;\n  undefined *puVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  byte *unaff_s1;\n  byte *pbVar10;\n  int iVar11;\n  int iVar12;\n  int unaff_s4;\n  undefined1 *unaff_s6;\n  undefined *puVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uStack_f0;\n  int iStack_ec;\n  int iStack_e8;\n  byte *pbStack_e4;\n  int iStack_e0;\n  code *pcStack_dc;\n  undefined1 *puStack_c8;\n  int iStack_c4;\n  undefined *puStack_c0;\n  byte bStack_b4;\n  byte abStack_b3 [15];\n  undefined1 auStack_a4 [45];\n  undefined1 auStack_77 [3];\n  int iStack_74;\n  byte *pbStack_70;\n  byte *pbStack_6c;\n  undefined4 uStack_68;\n  byte *pbStack_64;\n  int iStack_60;\n  int iStack_5c;\n  undefined1 *puStack_58;\n  code *pcStack_54;\n  undefined1 auStack_34 [4];\n  undefined1 local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_00080958;\n  if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }\n  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }\nLAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;\n  puVar13 = PTR___stack_chk_fail_00080814;\n  (*(code *)PTR___stack_chk_fail_00080814)();\n  puStack_c0 = puVar13 + 0x3e64c;\n  iStack_74 = **(int **)(puVar13 + 0x36f34);\n  pbStack_70 = param_2;\n  pbStack_6c = unaff_s1;\n  uStack_68 = param_1;\n  pbStack_64 = param_4;\n  iStack_60 = unaff_s4;\n  iStack_5c = param_3;\n  puStack_58 = unaff_s6;\n  pcStack_54 = pcVar14;\n  MD5Simple();\n  puStack_c8 = (undefined1 *)(uint)bStack_b4;\n  pbVar10 = abStack_b3;\n  puVar8 = auStack_a4;\n  iVar12 = *(int *)(puStack_c0 + -0x7f3c);\n  iVar11 = *(int *)(puStack_c0 + -0x7f3c);\n  do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);\n  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;\n  iVar12 = 1;\n  (**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);\n  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);\n  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }\n  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }\n  return iVar3;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "byte *unaff_s1;" (type_identifier "byte") (pointer_declarator "*unaff_s1" (* "*") (identifier "unaff_s1")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int unaff_s4;" (primitive_type "int") (identifier "unaff_s4") (; ";")) (declaration "undefined1 *unaff_s6;" (type_identifier "undefined1") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "code *pcVar14;" (type_identifier "code") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "undefined4 uStack_f0;" (type_identifier "undefined4") (identifier "uStack_f0") (; ";")) (declaration "int iStack_ec;" (primitive_type "int") (identifier "iStack_ec") (; ";")) (declaration "int iStack_e8;" (primitive_type "int") (identifier "iStack_e8") (; ";")) (declaration "byte *pbStack_e4;" (type_identifier "byte") (pointer_declarator "*pbStack_e4" (* "*") (identifier "pbStack_e4")) (; ";")) (declaration "int iStack_e0;" (primitive_type "int") (identifier "iStack_e0") (; ";")) (declaration "code *pcStack_dc;" (type_identifier "code") (pointer_declarator "*pcStack_dc" (* "*") (identifier "pcStack_dc")) (; ";")) (declaration "undefined1 *puStack_c8;" (type_identifier "undefined1") (pointer_declarator "*puStack_c8" (* "*") (identifier "puStack_c8")) (; ";")) (declaration "int iStack_c4;" (primitive_type "int") (identifier "iStack_c4") (; ";")) (declaration "undefined *puStack_c0;" (type_identifier "undefined") (pointer_declarator "*puStack_c0" (* "*") (identifier "puStack_c0")) (; ";")) (declaration "byte bStack_b4;" (type_identifier "byte") (identifier "bStack_b4") (; ";")) (declaration "byte abStack_b3 [15];" (type_identifier "byte") (array_declarator "abStack_b3 [15]" (identifier "abStack_b3") ([ "[") (number_literal "15") (] "]")) (; ";")) (declaration "undefined1 auStack_a4 [45];" (type_identifier "undefined1") (array_declarator "auStack_a4 [45]" (identifier "auStack_a4") ([ "[") (number_literal "45") (] "]")) (; ";")) (declaration "undefined1 auStack_77 [3];" (type_identifier "undefined1") (array_declarator "auStack_77 [3]" (identifier "auStack_77") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "int iStack_74;" (primitive_type "int") (identifier "iStack_74") (; ";")) (declaration "byte *pbStack_70;" (type_identifier "byte") (pointer_declarator "*pbStack_70" (* "*") (identifier "pbStack_70")) (; ";")) (declaration "byte *pbStack_6c;" (type_identifier "byte") (pointer_declarator "*pbStack_6c" (* "*") (identifier "pbStack_6c")) (; ";")) (declaration "undefined4 uStack_68;" (type_identifier "undefined4") (identifier "uStack_68") (; ";")) (declaration "byte *pbStack_64;" (type_identifier "byte") (pointer_declarator "*pbStack_64" (* "*") (identifier "pbStack_64")) (; ";")) (declaration "int iStack_60;" (primitive_type "int") (identifier "iStack_60") (; ";")) (declaration "int iStack_5c;" (primitive_type "int") (identifier "iStack_5c") (; ";")) (declaration "undefined1 *puStack_58;" (type_identifier "undefined1") (pointer_declarator "*puStack_58" (* "*") (identifier "puStack_58")) (; ";")) (declaration "code *pcStack_54;" (type_identifier "code") (pointer_declarator "*pcStack_54" (* "*") (identifier "pcStack_54")) (; ";")) (declaration "undefined1 auStack_34 [4];" (type_identifier "undefined1") (array_declarator "auStack_34 [4]" (identifier "auStack_34") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 local_30;" (type_identifier "undefined1") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00080958;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00080958" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00080958" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00080958")))) (; ";")) (if_statement "if (param_5 == 9) {\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }\n  else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" (if "if") (parenthesized_expression "(param_5 == 9)" (( "(") (binary_expression "param_5 == 9" (identifier "param_5") (== "==") (number_literal "9")) () ")")) (compound_statement "{\n    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);\n    if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }\n    unaff_s1 = (byte *)(uint)((int)param_4 < 4);\n    if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }\n    puVar7 = (undefined *)0x1;\n    pbVar6 = PTR_DAT_00080134 + -0x48f4;\n    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);\n  }" ({ "{") (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" (( "(") (pointer_expression "*(code *)PTR_fwrite_0008090c" (* "*") (cast_expression "(code *)PTR_fwrite_0008090c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fwrite_0008090c"))) () ")")) (argument_list "(PTR_DAT_00080134 + -0x4928,1,0x20,param_1)" (( "(") (binary_expression "PTR_DAT_00080134 + -0x4928" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x4928")) (, ",") (number_literal "1") (, ",") (number_literal "0x20") (, ",") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (param_2 != (byte *)0x0) {\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }" (if "if") (parenthesized_expression "(param_2 != (byte *)0x0)" (( "(") (binary_expression "param_2 != (byte *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);\n      bVar5 = *param_2;\n      if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }\n      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);\n    }" ({ "{") (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" (( "(") (pointer_expression "*(code *)PTR_fwrite_0008090c" (* "*") (cast_expression "(code *)PTR_fwrite_0008090c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fwrite_0008090c"))) () ")")) (argument_list "(PTR_DAT_00080134 + -0x4904,1,10,param_1)" (( "(") (binary_expression "PTR_DAT_00080134 + -0x4904" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x4904")) (, ",") (number_literal "1") (, ",") (number_literal "10") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "bVar5 = *param_2;" (assignment_expression "bVar5 = *param_2" (identifier "bVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (bVar5 != 0) {\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }" (if "if") (parenthesized_expression "(bVar5 != 0)" (( "(") (binary_expression "bVar5 != 0" (identifier "bVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        unaff_s4 = 0x22;\n        do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);\n      }" ({ "{") (expression_statement "unaff_s4 = 0x22;" (assignment_expression "unaff_s4 = 0x22" (identifier "unaff_s4") (= "=") (number_literal "0x22")) (; ";")) (do_statement "do {\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        } while (bVar5 != 0);" (do "do") (compound_statement "{\n          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }\n          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);\n          param_2 = param_2 + 1;\n          bVar5 = *param_2;\n        }" ({ "{") (if_statement "if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }" (if "if") (parenthesized_expression "((bVar5 == 0x5c) || (bVar5 == 0x22))" (( "(") (binary_expression "(bVar5 == 0x5c) || (bVar5 == 0x22)" (parenthesized_expression "(bVar5 == 0x5c)" (( "(") (binary_expression "bVar5 == 0x5c" (identifier "bVar5") (== "==") (number_literal "0x5c")) () ")")) (|| "||") (parenthesized_expression "(bVar5 == 0x22)" (( "(") (binary_expression "bVar5 == 0x22" (identifier "bVar5") (== "==") (number_literal "0x22")) () ")"))) () ")")) (compound_statement "{\n            (*(code *)PTR_fputc_00080914)(0x5c,param_1);\n          }" ({ "{") (expression_statement "(*(code *)PTR_fputc_00080914)(0x5c,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(0x5c,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" (( "(") (pointer_expression "*(code *)PTR_fputc_00080914" (* "*") (cast_expression "(code *)PTR_fputc_00080914" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fputc_00080914"))) () ")")) (argument_list "(0x5c,param_1)" (( "(") (number_literal "0x5c") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" (( "(") (pointer_expression "*(code *)PTR_fputc_00080914" (* "*") (cast_expression "(code *)PTR_fputc_00080914" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fputc_00080914"))) () ")")) (argument_list "((int)(char)*param_2,param_1)" (( "(") (cast_expression "(int)(char)*param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar5 = *param_2;" (assignment_expression "bVar5 = *param_2" (identifier "bVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar5 != 0)" (( "(") (binary_expression "bVar5 != 0" (identifier "bVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" (( "(") (pointer_expression "*(code *)PTR_fwrite_0008090c" (* "*") (cast_expression "(code *)PTR_fwrite_0008090c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fwrite_0008090c"))) () ")")) (argument_list "(PTR_DAT_00080134 + -0x48f8,1,2,param_1)" (( "(") (binary_expression "PTR_DAT_00080134 + -0x48f8" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x48f8")) (, ",") (number_literal "1") (, ",") (number_literal "2") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "unaff_s1 = (byte *)(uint)((int)param_4 < 4);" (assignment_expression "unaff_s1 = (byte *)(uint)((int)param_4 < 4)" (identifier "unaff_s1") (= "=") (cast_expression "(byte *)(uint)((int)param_4 < 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)((int)param_4 < 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)param_4 < 4)" (( "(") (binary_expression "(int)param_4 < 4" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (< "<") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (0 < (int)param_4) {\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }" (if "if") (parenthesized_expression "(0 < (int)param_4)" (( "(") (binary_expression "0 < (int)param_4" (number_literal "0") (< "<") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")) (compound_statement "{\n      bVar1 = unaff_s1 != (byte *)0x0;\n      unaff_s1 = (byte *)0x3;\n      if (bVar1) {\n        unaff_s1 = param_4;\n      }\n      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);\n      local_30 = 0;\n      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);\n      unaff_s4 = 1;\n      unaff_s6 = auStack_34;\n      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }\n      if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }\n    }" ({ "{") (expression_statement "bVar1 = unaff_s1 != (byte *)0x0;" (assignment_expression "bVar1 = unaff_s1 != (byte *)0x0" (identifier "bVar1") (= "=") (binary_expression "unaff_s1 != (byte *)0x0" (identifier "unaff_s1") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "unaff_s1 = (byte *)0x3;" (assignment_expression "unaff_s1 = (byte *)0x3" (identifier "unaff_s1") (= "=") (cast_expression "(byte *)0x3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (if_statement "if (bVar1) {\n        unaff_s1 = param_4;\n      }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n        unaff_s1 = param_4;\n      }" ({ "{") (expression_statement "unaff_s1 = param_4;" (assignment_expression "unaff_s1 = param_4" (identifier "unaff_s1") (= "=") (identifier "param_4")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" (( "(") (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" (* "*") (cast_expression "(code *)PTR_base64_encode_atom_00080280" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_base64_encode_atom_00080280"))) () ")")) (argument_list "(param_3,unaff_s1,auStack_34)" (( "(") (identifier "param_3") (, ",") (identifier "unaff_s1") (, ",") (identifier "auStack_34") () ")"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)PTR_fputs_00080878)(auStack_34,param_1);" (call_expression "(*(code *)PTR_fputs_00080878)(auStack_34,param_1)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" (( "(") (pointer_expression "*(code *)PTR_fputs_00080878" (* "*") (cast_expression "(code *)PTR_fputs_00080878" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fputs_00080878"))) () ")")) (argument_list "(auStack_34,param_1)" (( "(") (identifier "auStack_34") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "unaff_s4 = 1;" (assignment_expression "unaff_s4 = 1" (identifier "unaff_s4") (= "=") (number_literal "1")) (; ";")) (expression_statement "unaff_s6 = auStack_34;" (assignment_expression "unaff_s6 = auStack_34" (identifier "unaff_s6") (= "=") (identifier "auStack_34")) (; ";")) (while_statement "while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }" (while "while") (parenthesized_expression "(param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4)" (( "(") (comma_expression "param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4" (assignment_expression "param_2 = param_4 + -(int)unaff_s1" (identifier "param_2") (= "=") (binary_expression "param_4 + -(int)unaff_s1" (identifier "param_4") (+ "+") (unary_expression "-(int)unaff_s1" (- "-") (cast_expression "(int)unaff_s1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s1"))))) (, ",") (binary_expression "(int)unaff_s1 < (int)param_4" (cast_expression "(int)unaff_s1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s1")) (< "<") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")))) () ")")) (compound_statement "{\n        if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }\n        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);\n        local_30 = 0;\n        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);\n        unaff_s4 = unaff_s4 + 1;\n        unaff_s1 = unaff_s1 + (int)param_2;\n        if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }\n      }" ({ "{") (if_statement "if (3 < (int)param_2) {\n          param_2 = (byte *)0x3;\n        }" (if "if") (parenthesized_expression "(3 < (int)param_2)" (( "(") (binary_expression "3 < (int)param_2" (number_literal "3") (< "<") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")")) (compound_statement "{\n          param_2 = (byte *)0x3;\n        }" ({ "{") (expression_statement "param_2 = (byte *)0x3;" (assignment_expression "param_2 = (byte *)0x3" (identifier "param_2") (= "=") (cast_expression "(byte *)0x3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);" (call_expression "(*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6)" (parenthesized_expression "(*(code *)PTR_base64_encode_atom_00080280)" (( "(") (pointer_expression "*(code *)PTR_base64_encode_atom_00080280" (* "*") (cast_expression "(code *)PTR_base64_encode_atom_00080280" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_base64_encode_atom_00080280"))) () ")")) (argument_list "(unaff_s1 + param_3,param_2,unaff_s6)" (( "(") (binary_expression "unaff_s1 + param_3" (identifier "unaff_s1") (+ "+") (identifier "param_3")) (, ",") (identifier "param_2") (, ",") (identifier "unaff_s6") () ")"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)PTR_fputs_00080878)(unaff_s6,param_1);" (call_expression "(*(code *)PTR_fputs_00080878)(unaff_s6,param_1)" (parenthesized_expression "(*(code *)PTR_fputs_00080878)" (( "(") (pointer_expression "*(code *)PTR_fputs_00080878" (* "*") (cast_expression "(code *)PTR_fputs_00080878" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fputs_00080878"))) () ")")) (argument_list "(unaff_s6,param_1)" (( "(") (identifier "unaff_s6") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "unaff_s4 = unaff_s4 + 1;" (assignment_expression "unaff_s4 = unaff_s4 + 1" (identifier "unaff_s4") (= "=") (binary_expression "unaff_s4 + 1" (identifier "unaff_s4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s1 = unaff_s1 + (int)param_2;" (assignment_expression "unaff_s1 = unaff_s1 + (int)param_2" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + (int)param_2" (identifier "unaff_s1") (+ "+") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (if_statement "if (0xf < unaff_s4) {\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }" (if "if") (parenthesized_expression "(0xf < unaff_s4)" (( "(") (binary_expression "0xf < unaff_s4" (number_literal "0xf") (< "<") (identifier "unaff_s4")) () ")")) (compound_statement "{\n          (*(code *)PTR_fputc_00080914)(10,param_1);\n          unaff_s4 = 0;\n        }" ({ "{") (expression_statement "(*(code *)PTR_fputc_00080914)(10,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(10,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" (( "(") (pointer_expression "*(code *)PTR_fputc_00080914" (* "*") (cast_expression "(code *)PTR_fputc_00080914" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fputc_00080914"))) () ")")) (argument_list "(10,param_1)" (( "(") (number_literal "10") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "unaff_s4 = 0;" (assignment_expression "unaff_s4 = 0" (identifier "unaff_s4") (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (0 < unaff_s4) {\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }" (if "if") (parenthesized_expression "(0 < unaff_s4)" (( "(") (binary_expression "0 < unaff_s4" (number_literal "0") (< "<") (identifier "unaff_s4")) () ")")) (compound_statement "{\n        (*(code *)PTR_fputc_00080914)(10,param_1);\n      }" ({ "{") (expression_statement "(*(code *)PTR_fputc_00080914)(10,param_1);" (call_expression "(*(code *)PTR_fputc_00080914)(10,param_1)" (parenthesized_expression "(*(code *)PTR_fputc_00080914)" (( "(") (pointer_expression "*(code *)PTR_fputc_00080914" (* "*") (cast_expression "(code *)PTR_fputc_00080914" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fputc_00080914"))) () ")")) (argument_list "(10,param_1)" (( "(") (number_literal "10") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar7 = (undefined *)0x1;" (assignment_expression "puVar7 = (undefined *)0x1" (identifier "puVar7") (= "=") (cast_expression "(undefined *)0x1" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "pbVar6 = PTR_DAT_00080134 + -0x48f4;" (assignment_expression "pbVar6 = PTR_DAT_00080134 + -0x48f4" (identifier "pbVar6") (= "=") (binary_expression "PTR_DAT_00080134 + -0x48f4" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x48f4"))) (; ";")) (expression_statement "(*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);" (call_expression "(*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1)" (parenthesized_expression "(*(code *)PTR_fwrite_0008090c)" (( "(") (pointer_expression "*(code *)PTR_fwrite_0008090c" (* "*") (cast_expression "(code *)PTR_fwrite_0008090c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fwrite_0008090c"))) () ")")) (argument_list "(pbVar6,1,0x1e,param_1)" (( "(") (identifier "pbVar6") (, ",") (number_literal "1") (, ",") (number_literal "0x1e") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" (else "else") (compound_statement "{\n    if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }\n    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);\n    puVar7 = (undefined *)0x1;\n    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);\n    pbVar6 = param_2;\n    (*(code *)PTR_safefree_000800c4)();\n  }" ({ "{") (if_statement "if (param_5 != 10) {\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" (if "if") (parenthesized_expression "(param_5 != 10)" (( "(") (binary_expression "param_5 != 10" (identifier "param_5") (!= "!=") (number_literal "10")) () ")")) (compound_statement "{\n      puVar7 = PTR_DAT_00080134 + -0x4e7c;\n      pbVar6 = PTR_DAT_00080134 + -0x48d4;\n      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);\n      goto LAB_00049a18;\n    }" ({ "{") (expression_statement "puVar7 = PTR_DAT_00080134 + -0x4e7c;" (assignment_expression "puVar7 = PTR_DAT_00080134 + -0x4e7c" (identifier "puVar7") (= "=") (binary_expression "PTR_DAT_00080134 + -0x4e7c" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x4e7c"))) (; ";")) (expression_statement "pbVar6 = PTR_DAT_00080134 + -0x48d4;" (assignment_expression "pbVar6 = PTR_DAT_00080134 + -0x48d4" (identifier "pbVar6") (= "=") (binary_expression "PTR_DAT_00080134 + -0x48d4" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x48d4"))) (; ";")) (expression_statement "(*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);" (call_expression "(*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4)" (parenthesized_expression "(*(code *)PTR___assert_fail_000806e8)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_000806e8" (* "*") (cast_expression "(code *)PTR___assert_fail_000806e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_000806e8"))) () ")")) (argument_list "(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4)" (( "(") (identifier "pbVar6") (, ",") (identifier "puVar7") (, ",") (number_literal "0x640") (, ",") (binary_expression "PTR_DAT_00080134 + -0x46e4" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x46e4")) () ")"))) (; ";")) (goto_statement "goto LAB_00049a18;" (goto "goto") (statement_identifier "LAB_00049a18") (; ";")) (} "}"))) (expression_statement "param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);" (assignment_expression "param_2 = (byte *)FUN_00045444(param_2,param_3,param_4)" (identifier "param_2") (= "=") (cast_expression "(byte *)FUN_00045444(param_2,param_3,param_4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00045444(param_2,param_3,param_4)" (identifier "FUN_00045444") (argument_list "(param_2,param_3,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))))) (; ";")) (expression_statement "puVar7 = (undefined *)0x1;" (assignment_expression "puVar7 = (undefined *)0x1" (identifier "puVar7") (= "=") (cast_expression "(undefined *)0x1" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "(*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);" (call_expression "(*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00080778)" (( "(") (pointer_expression "*(code *)PTR___fprintf_chk_00080778" (* "*") (cast_expression "(code *)PTR___fprintf_chk_00080778" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fprintf_chk_00080778"))) () ")")) (argument_list "(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2)" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (binary_expression "PTR_DAT_00080134 + -0x26a4" (identifier "PTR_DAT_00080134") (+ "+") (number_literal "-0x26a4")) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "pbVar6 = param_2;" (assignment_expression "pbVar6 = param_2" (identifier "pbVar6") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(*(code *)PTR_safefree_000800c4)();" (call_expression "(*(code *)PTR_safefree_000800c4)()" (parenthesized_expression "(*(code *)PTR_safefree_000800c4)" (( "(") (pointer_expression "*(code *)PTR_safefree_000800c4" (* "*") (cast_expression "(code *)PTR_safefree_000800c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safefree_000800c4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_00080958)" (( "(") (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_00080958" (identifier "local_2c") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00080958" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00080958")))) () ")")) (compound_statement "{\n    return *(int *)PTR___stack_chk_guard_00080958;\n  }" ({ "{") (return_statement "return *(int *)PTR___stack_chk_guard_00080958;" (return "return") (pointer_expression "*(int *)PTR___stack_chk_guard_00080958" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00080958" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00080958"))) (; ";")) (} "}"))) (labeled_statement "LAB_00049a18:\n  pcVar14 = ssh2_fingerprint_blob;" (statement_identifier "LAB_00049a18") (: ":") (expression_statement "pcVar14 = ssh2_fingerprint_blob;" (assignment_expression "pcVar14 = ssh2_fingerprint_blob" (identifier "pcVar14") (= "=") (identifier "ssh2_fingerprint_blob")) (; ";"))) (expression_statement "puVar13 = PTR___stack_chk_fail_00080814;" (assignment_expression "puVar13 = PTR___stack_chk_fail_00080814" (identifier "puVar13") (= "=") (identifier "PTR___stack_chk_fail_00080814")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00080814)();" (call_expression "(*(code *)PTR___stack_chk_fail_00080814)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00080814)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00080814" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00080814" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00080814"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_c0 = puVar13 + 0x3e64c;" (assignment_expression "puStack_c0 = puVar13 + 0x3e64c" (identifier "puStack_c0") (= "=") (binary_expression "puVar13 + 0x3e64c" (identifier "puVar13") (+ "+") (number_literal "0x3e64c"))) (; ";")) (expression_statement "iStack_74 = **(int **)(puVar13 + 0x36f34);" (assignment_expression "iStack_74 = **(int **)(puVar13 + 0x36f34)" (identifier "iStack_74") (= "=") (pointer_expression "**(int **)(puVar13 + 0x36f34)" (* "*") (pointer_expression "*(int **)(puVar13 + 0x36f34)" (* "*") (cast_expression "(int **)(puVar13 + 0x36f34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x36f34)" (( "(") (binary_expression "puVar13 + 0x36f34" (identifier "puVar13") (+ "+") (number_literal "0x36f34")) () ")")))))) (; ";")) (expression_statement "pbStack_70 = param_2;" (assignment_expression "pbStack_70 = param_2" (identifier "pbStack_70") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbStack_6c = unaff_s1;" (assignment_expression "pbStack_6c = unaff_s1" (identifier "pbStack_6c") (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "uStack_68 = param_1;" (assignment_expression "uStack_68 = param_1" (identifier "uStack_68") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pbStack_64 = param_4;" (assignment_expression "pbStack_64 = param_4" (identifier "pbStack_64") (= "=") (identifier "param_4")) (; ";")) (expression_statement "iStack_60 = unaff_s4;" (assignment_expression "iStack_60 = unaff_s4" (identifier "iStack_60") (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "iStack_5c = param_3;" (assignment_expression "iStack_5c = param_3" (identifier "iStack_5c") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puStack_58 = unaff_s6;" (assignment_expression "puStack_58 = unaff_s6" (identifier "puStack_58") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "pcStack_54 = pcVar14;" (assignment_expression "pcStack_54 = pcVar14" (identifier "pcStack_54") (= "=") (identifier "pcVar14")) (; ";")) (expression_statement "MD5Simple();" (call_expression "MD5Simple()" (identifier "MD5Simple") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_c8 = (undefined1 *)(uint)bStack_b4;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)bStack_b4" (identifier "puStack_c8") (= "=") (cast_expression "(undefined1 *)(uint)bStack_b4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bStack_b4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bStack_b4")))) (; ";")) (expression_statement "pbVar10 = abStack_b3;" (assignment_expression "pbVar10 = abStack_b3" (identifier "pbVar10") (= "=") (identifier "abStack_b3")) (; ";")) (expression_statement "puVar8 = auStack_a4;" (assignment_expression "puVar8 = auStack_a4" (identifier "puVar8") (= "=") (identifier "auStack_a4")) (; ";")) (expression_statement "iVar12 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar12 = *(int *)(puStack_c0 + -0x7f3c)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7f3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7f3c)" (( "(") (binary_expression "puStack_c0 + -0x7f3c" (identifier "puStack_c0") (+ "+") (number_literal "-0x7f3c")) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(puStack_c0 + -0x7f3c);" (assignment_expression "iVar11 = *(int *)(puStack_c0 + -0x7f3c)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7f3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7f3c)" (( "(") (binary_expression "puStack_c0 + -0x7f3c" (identifier "puStack_c0") (+ "+") (number_literal "-0x7f3c")) () ")"))))) (; ";")) (do_statement "do {\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  } while (puVar8 != auStack_77);" (do "do") (compound_statement "{\n    iStack_c4 = iVar12 + -0x2908;\n    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);\n    puVar8 = puVar8 + 3;\n    puStack_c8 = (undefined1 *)(uint)*pbVar10;\n    pbVar10 = pbVar10 + 1;\n  }" ({ "{") (expression_statement "iStack_c4 = iVar12 + -0x2908;" (assignment_expression "iStack_c4 = iVar12 + -0x2908" (identifier "iStack_c4") (= "=") (binary_expression "iVar12 + -0x2908" (identifier "iVar12") (+ "+") (number_literal "-0x2908"))) (; ";")) (expression_statement "(**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7784)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7784)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7784)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7784)" (( "(") (binary_expression "puStack_c0 + -0x7784" (identifier "puStack_c0") (+ "+") (number_literal "-0x7784")) () ")"))))) () ")")) (argument_list "(puVar8,1,0xffffffff,iVar11 + -0x48a8)" (( "(") (identifier "puVar8") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (binary_expression "iVar11 + -0x48a8" (identifier "iVar11") (+ "+") (number_literal "-0x48a8")) () ")"))) (; ";")) (expression_statement "puVar8 = puVar8 + 3;" (assignment_expression "puVar8 = puVar8 + 3" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 3" (identifier "puVar8") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puStack_c8 = (undefined1 *)(uint)*pbVar10;" (assignment_expression "puStack_c8 = (undefined1 *)(uint)*pbVar10" (identifier "puStack_c8") (= "=") (binary_expression "(undefined1 *)(uint)*pbVar10" (cast_expression "(undefined1 *)(uint)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != auStack_77)" (( "(") (binary_expression "puVar8 != auStack_77" (identifier "puVar8") (!= "!=") (identifier "auStack_77")) () ")")) (; ";")) (expression_statement "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;" (assignment_expression "iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0" (identifier "iStack_c4") (= "=") (binary_expression "*(int *)(puStack_c0 + -0x7fc8) + 0x48d0" (pointer_expression "*(int *)(puStack_c0 + -0x7fc8)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fc8)" (( "(") (binary_expression "puStack_c0 + -0x7fc8" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "0x48d0"))) (; ";")) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" (identifier "iVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);" (call_expression "(**(code **)(puStack_c0 + -0x7784))\n            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7784))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7784)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7784)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7784)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7784)" (( "(") (binary_expression "puStack_c0 + -0x7784" (identifier "puStack_c0") (+ "+") (number_literal "-0x7784")) () ")"))))) () ")")) (argument_list "(auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8)" (( "(") (identifier "auStack_77") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a8" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7f3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7f3c)" (( "(") (binary_expression "puStack_c0 + -0x7f3c" (identifier "puStack_c0") (+ "+") (number_literal "-0x7f3c")) () ")")))) (+ "+") (number_literal "-0x48a8")) () ")"))) (; ";")) (expression_statement "iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8);" (assignment_expression "iVar2 = (**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(puStack_c0 + -0x7ed8))\n                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7ed8))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7ed8)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7ed8)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7ed8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7ed8)" (( "(") (binary_expression "puStack_c0 + -0x7ed8" (identifier "puStack_c0") (+ "+") (number_literal "-0x7ed8")) () ")"))))) () ")")) (argument_list "((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8)" (( "(") (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |\n                     (uint)pbVar6[2] << 8" (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3]" (binary_expression "(uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10" (binary_expression "(uint)*pbVar6 << 0x18" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)pbVar6[1] << 0x10" (cast_expression "(uint)pbVar6[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]"))) (<< "<<") (number_literal "0x10"))) (| "|") (cast_expression "(uint)pbVar6[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[3]" (identifier "pbVar6") ([ "[") (number_literal "3") (] "]")))) (| "|") (binary_expression "(uint)pbVar6[2] << 8" (cast_expression "(uint)pbVar6[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[2]" (identifier "pbVar6") ([ "[") (number_literal "2") (] "]"))) (<< "<<") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }\n  else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" (if "if") (parenthesized_expression "((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2))" (( "(") (binary_expression "(iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)" (parenthesized_expression "(iVar2 < 1)" (( "(") (binary_expression "iVar2 < 1" (identifier "iVar2") (< "<") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "((int)(puVar7 + -4) <= iVar2)" (( "(") (binary_expression "(int)(puVar7 + -4) <= iVar2" (cast_expression "(int)(puVar7 + -4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar7 + -4)" (( "(") (binary_expression "puVar7 + -4" (identifier "puVar7") (+ "+") (number_literal "-4")) () ")"))) (<= "<=") (identifier "iVar2")) () ")"))) () ")")) (compound_statement "{\n    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);\n  }" ({ "{") (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puStack_c0 + -0x7f74))(auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7f74))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7f74)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7f74)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7f74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7f74)" (( "(") (binary_expression "puStack_c0 + -0x7f74" (identifier "puStack_c0") (+ "+") (number_literal "-0x7f74")) () ")"))))) () ")")) (argument_list "(auStack_a4)" (( "(") (identifier "auStack_a4") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" (else "else") (compound_statement "{\n    pbVar10 = pbVar6 + 4;\n    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);\n    iVar12 = iVar2;\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }\n  }" ({ "{") (expression_statement "pbVar10 = pbVar6 + 4;" (assignment_expression "pbVar10 = pbVar6 + 4" (identifier "pbVar10") (= "=") (binary_expression "pbVar6 + 4" (identifier "pbVar6") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar3 = find_pubkey_alg_len(iVar2,pbVar10);" (assignment_expression "iVar3 = find_pubkey_alg_len(iVar2,pbVar10)" (identifier "iVar3") (= "=") (call_expression "find_pubkey_alg_len(iVar2,pbVar10)" (identifier "find_pubkey_alg_len") (argument_list "(iVar2,pbVar10)" (( "(") (identifier "iVar2") (, ",") (identifier "pbVar10") () ")")))) (; ";")) (expression_statement "iVar12 = iVar2;" (assignment_expression "iVar12 = iVar2" (identifier "iVar12") (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar3 == 0) {\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }\n    else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);\n    }" ({ "{") (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7fb8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fb8)" (( "(") (binary_expression "puStack_c0 + -0x7fb8" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fb8")) () ")"))))) () ")")) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x4894" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7f3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7f3c)" (( "(") (binary_expression "puStack_c0 + -0x7f3c" (identifier "puStack_c0") (+ "+") (number_literal "-0x7f3c")) () ")")))) (+ "+") (number_literal "-0x4894")) (, ",") (identifier "iVar2") (, ",") (identifier "pbVar10") (, ",") (identifier "auStack_a4") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" (else "else") (compound_statement "{\n      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);\n      puStack_c8 = auStack_a4;\n      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);\n    }" ({ "{") (expression_statement "uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);" (assignment_expression "uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7)" (identifier "uVar4") (= "=") (call_expression "(**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7)" (parenthesized_expression "(**(code **)(iVar3 + 0x24))" (( "(") (pointer_expression "**(code **)(iVar3 + 0x24)" (* "*") (pointer_expression "*(code **)(iVar3 + 0x24)" (* "*") (cast_expression "(code **)(iVar3 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(iVar3,pbVar6,puVar7)" (( "(") (identifier "iVar3") (, ",") (identifier "pbVar6") (, ",") (identifier "puVar7") () ")")))) (; ";")) (expression_statement "puStack_c8 = auStack_a4;" (assignment_expression "puStack_c8 = auStack_a4" (identifier "puStack_c8") (= "=") (identifier "auStack_a4")) (; ";")) (expression_statement "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);" (assignment_expression "iVar3 = (**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puStack_c0 + -0x7fb8))\n                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" (parenthesized_expression "(**(code **)(puStack_c0 + -0x7fb8))" (( "(") (pointer_expression "**(code **)(puStack_c0 + -0x7fb8)" (* "*") (pointer_expression "*(code **)(puStack_c0 + -0x7fb8)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x7fb8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7fb8)" (( "(") (binary_expression "puStack_c0 + -0x7fb8" (identifier "puStack_c0") (+ "+") (number_literal "-0x7fb8")) () ")"))))) () ")")) (argument_list "(*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4)" (( "(") (binary_expression "*(int *)(puStack_c0 + -0x7f3c) + -0x48a0" (pointer_expression "*(int *)(puStack_c0 + -0x7f3c)" (* "*") (cast_expression "(int *)(puStack_c0 + -0x7f3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puStack_c0 + -0x7f3c)" (( "(") (binary_expression "puStack_c0 + -0x7f3c" (identifier "puStack_c0") (+ "+") (number_literal "-0x7f3c")) () ")")))) (+ "+") (number_literal "-0x48a0")) (, ",") (identifier "iVar2") (, ",") (identifier "pbVar10") (, ",") (identifier "uVar4") () ")")))) (; ";")) (} "}")))) (} "}")))) (if_statement "if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }" (if "if") (parenthesized_expression "(iStack_74 != **(int **)(puStack_c0 + -0x7718))" (( "(") (binary_expression "iStack_74 != **(int **)(puStack_c0 + -0x7718)" (identifier "iStack_74") (!= "!=") (pointer_expression "**(int **)(puStack_c0 + -0x7718)" (* "*") (pointer_expression "*(int **)(puStack_c0 + -0x7718)" (* "*") (cast_expression "(int **)(puStack_c0 + -0x7718)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x7718)" (( "(") (binary_expression "puStack_c0 + -0x7718" (identifier "puStack_c0") (+ "+") (number_literal "-0x7718")) () ")")))))) () ")")) (compound_statement "{\n    pcVar14 = *(code **)(puStack_c0 + -0x785c);\n    pcVar15 = ssh2_fingerprint;\n    iVar3 = iStack_74;\n    (*pcVar14)();\n    piVar9 = *(int **)(pcVar14 + 0x36d0c);\n    iStack_ec = *piVar9;\n    iStack_e8 = iVar2;\n    pbStack_e4 = pbVar10;\n    iStack_e0 = iVar11 + -0x48a8;\n    pcStack_dc = pcVar15;\n    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);\n    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);\n    (**(code **)(pcVar14 + 0x36478))(uVar4);\n    if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }\n    return iVar11;\n  }" ({ "{") (expression_statement "pcVar14 = *(code **)(puStack_c0 + -0x785c);" (assignment_expression "pcVar14 = *(code **)(puStack_c0 + -0x785c)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(puStack_c0 + -0x785c)" (* "*") (cast_expression "(code **)(puStack_c0 + -0x785c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puStack_c0 + -0x785c)" (( "(") (binary_expression "puStack_c0 + -0x785c" (identifier "puStack_c0") (+ "+") (number_literal "-0x785c")) () ")"))))) (; ";")) (expression_statement "pcVar15 = ssh2_fingerprint;" (assignment_expression "pcVar15 = ssh2_fingerprint" (identifier "pcVar15") (= "=") (identifier "ssh2_fingerprint")) (; ";")) (expression_statement "iVar3 = iStack_74;" (assignment_expression "iVar3 = iStack_74" (identifier "iVar3") (= "=") (identifier "iStack_74")) (; ";")) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar9 = *(int **)(pcVar14 + 0x36d0c);" (assignment_expression "piVar9 = *(int **)(pcVar14 + 0x36d0c)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(pcVar14 + 0x36d0c)" (* "*") (cast_expression "(int **)(pcVar14 + 0x36d0c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar14 + 0x36d0c)" (( "(") (binary_expression "pcVar14 + 0x36d0c" (identifier "pcVar14") (+ "+") (number_literal "0x36d0c")) () ")"))))) (; ";")) (expression_statement "iStack_ec = *piVar9;" (assignment_expression "iStack_ec = *piVar9" (identifier "iStack_ec") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "iStack_e8 = iVar2;" (assignment_expression "iStack_e8 = iVar2" (identifier "iStack_e8") (= "=") (identifier "iVar2")) (; ";")) (expression_statement "pbStack_e4 = pbVar10;" (assignment_expression "pbStack_e4 = pbVar10" (identifier "pbStack_e4") (= "=") (identifier "pbVar10")) (; ";")) (expression_statement "iStack_e0 = iVar11 + -0x48a8;" (assignment_expression "iStack_e0 = iVar11 + -0x48a8" (identifier "iStack_e0") (= "=") (binary_expression "iVar11 + -0x48a8" (identifier "iVar11") (+ "+") (number_literal "-0x48a8"))) (; ";")) (expression_statement "pcStack_dc = pcVar15;" (assignment_expression "pcStack_dc = pcVar15" (identifier "pcStack_dc") (= "=") (identifier "pcVar15")) (; ";")) (expression_statement "uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);" (assignment_expression "uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0)" (identifier "uVar4") (= "=") (call_expression "(**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0)" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" (( "(") (pointer_expression "**(code **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(code **)(iVar3 + 0xc)" (* "*") (cast_expression "(code **)(iVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(iVar12,&uStack_f0)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "&uStack_f0" (& "&") (identifier "uStack_f0")) () ")")))) (; ";")) (expression_statement "iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);" (assignment_expression "iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0)" (identifier "iVar11") (= "=") (call_expression "ssh2_fingerprint_blob(uVar4,uStack_f0)" (identifier "ssh2_fingerprint_blob") (argument_list "(uVar4,uStack_f0)" (( "(") (identifier "uVar4") (, ",") (identifier "uStack_f0") () ")")))) (; ";")) (expression_statement "(**(code **)(pcVar14 + 0x36478))(uVar4);" (call_expression "(**(code **)(pcVar14 + 0x36478))(uVar4)" (parenthesized_expression "(**(code **)(pcVar14 + 0x36478))" (( "(") (pointer_expression "**(code **)(pcVar14 + 0x36478)" (* "*") (pointer_expression "*(code **)(pcVar14 + 0x36478)" (* "*") (cast_expression "(code **)(pcVar14 + 0x36478)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar14 + 0x36478)" (( "(") (binary_expression "pcVar14 + 0x36478" (identifier "pcVar14") (+ "+") (number_literal "0x36478")) () ")"))))) () ")")) (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if (iStack_ec != *piVar9) {\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }" (if "if") (parenthesized_expression "(iStack_ec != *piVar9)" (( "(") (binary_expression "iStack_ec != *piVar9" (identifier "iStack_ec") (!= "!=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) () ")")) (compound_statement "{\n      pcVar14 = *(code **)(pcVar14 + 0x36bc8);\n      (*pcVar14)();\n      iVar11 = f_open();\n      if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }\n      return iVar12;\n    }" ({ "{") (expression_statement "pcVar14 = *(code **)(pcVar14 + 0x36bc8);" (assignment_expression "pcVar14 = *(code **)(pcVar14 + 0x36bc8)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(pcVar14 + 0x36bc8)" (* "*") (cast_expression "(code **)(pcVar14 + 0x36bc8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar14 + 0x36bc8)" (( "(") (binary_expression "pcVar14 + 0x36bc8" (identifier "pcVar14") (+ "+") (number_literal "0x36bc8")) () ")"))))) (; ";")) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar11 = f_open();" (assignment_expression "iVar11 = f_open()" (identifier "iVar11") (= "=") (call_expression "f_open()" (identifier "f_open") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar11 == 0) {\n        iVar12 = 0;\n      }\n      else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar12 = 0;\n      }" ({ "{") (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" (else "else") (compound_statement "{\n        iVar12 = FUN_000462f8(iVar11);\n        (**(code **)(pcVar14 + 0x36bb4))(iVar11);\n      }" ({ "{") (expression_statement "iVar12 = FUN_000462f8(iVar11);" (assignment_expression "iVar12 = FUN_000462f8(iVar11)" (identifier "iVar12") (= "=") (call_expression "FUN_000462f8(iVar11)" (identifier "FUN_000462f8") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")")))) (; ";")) (expression_statement "(**(code **)(pcVar14 + 0x36bb4))(iVar11);" (call_expression "(**(code **)(pcVar14 + 0x36bb4))(iVar11)" (parenthesized_expression "(**(code **)(pcVar14 + 0x36bb4))" (( "(") (pointer_expression "**(code **)(pcVar14 + 0x36bb4)" (* "*") (pointer_expression "*(code **)(pcVar14 + 0x36bb4)" (* "*") (cast_expression "(code **)(pcVar14 + 0x36bb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar14 + 0x36bb4)" (( "(") (binary_expression "pcVar14 + 0x36bb4" (identifier "pcVar14") (+ "+") (number_literal "0x36bb4")) () ")"))))) () ")")) (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar12;" (return "return") (identifier "iVar12") (; ";")) (} "}"))) (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}"))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */

void function_1(type_1 *fp,char *var_3,void *v_pub_blob,int var_5,int var_1)

{
  bool bVar1;
  type_2 var_4;
  int var_18;
  type_3 *var_21;
  int var_24;
  void *blob;
  type_1 *var_28;
  int var_9;
  type_2 *var_17;
  type_4 *filename;
  type_5 *var_19;
  type_6 *var_14;
  int *piVar7;
  type_2 *var_6;
  type_2 *var_15;
  int var_13;
  int var_7;
  char *unaff_s6;
  type_5 *var_10;
  type_7 *var_23;
  type_7 *pcVar11;
  int iStack_f0;
  type_4 *var_26;
  int iStack_e8;
  type_2 *pbStack_e4;
  int iStack_e0;
  type_7 *pcStack_dc;
  type_6 *puStack_c8;
  int iStack_c4;
  type_5 *var_12;
  type_2 bStack_b4;
  type_2 abStack_b3 [15];
  type_6 auStack_a4 [45];
  type_6 var_16 [3];
  int var_22;
  type_2 *pbStack_70;
  type_2 *pbStack_6c;
  type_1 *pFStack_68;
  int iStack_64;
  int iStack_60;
  void *pvStack_5c;
  char *pcStack_58;
  type_7 *pcStack_54;
  char buf [5];
  
  var_9 = *(int *)PTR___stack_chk_guard_00080958;
  if (var_1 == 9) {
    (*(type_7 *)PTR_fwrite_0008090c)(var_2 + -0x4928,1,0x20,fp);
    if (var_3 != (char *)0x0) {
      (*(type_7 *)PTR_fwrite_0008090c)(var_2 + -0x4904,1,10,fp);
      var_4 = *var_3;
      if (var_4 != 0) {
        var_7 = 0x22;
        do {
          if ((var_4 == 0x5c) || (var_4 == 0x22)) {
            (*(type_7 *)PTR_fputc_00080914)(0x5c,fp);
          }
          (*(type_7 *)PTR_fputc_00080914)((int)*var_3,fp);
          var_3 = (char *)((type_2 *)var_3 + 1);
          var_4 = *var_3;
        } while (var_4 != 0);
      }
      (*(type_7 *)PTR_fwrite_0008090c)(var_2 + -0x48f8,1,2,fp);
    }
    var_6 = (type_2 *)(type_8)(var_5 < 4);
    if (0 < var_5) {
      bVar1 = var_6 != (type_2 *)0x0;
      var_6 = (type_2 *)0x3;
      if (bVar1) {
        var_6 = (type_2 *)var_5;
      }
      (*(type_7 *)PTR_base64_encode_atom_00080280)(v_pub_blob,var_6,buf);
      buf[4] = '\0';
      (*(type_7 *)PTR_fputs_00080878)(buf,fp);
      var_7 = 1;
      unaff_s6 = buf;
      while (var_3 = (char *)(var_5 - (int)var_6), (int)var_6 < var_5) {
        if (3 < (int)var_3) {
          var_3 = (char *)0x3;
        }
        (*(type_7 *)PTR_base64_encode_atom_00080280)
                  ((type_2 *)((int)v_pub_blob + (int)var_6),var_3,unaff_s6);
        buf[4] = '\0';
        (*(type_7 *)PTR_fputs_00080878)(unaff_s6,fp);
        var_7 = var_7 + 1;
        var_6 = var_6 + (int)var_3;
        if (0xf < var_7) {
          (*(type_7 *)PTR_fputc_00080914)(10,fp);
          var_7 = 0;
        }
      }
      if (0 < var_7) {
        (*(type_7 *)PTR_fputc_00080914)(10,fp);
      }
    }
    var_19 = (type_5 *)0x1;
    var_17 = var_2 + -0x48f4;
    (*(type_7 *)PTR_fwrite_0008090c)(var_17,1,0x1e,fp);
  }
  else {
    if (var_1 != 10) {
      var_19 = var_2 + -0x4e7c;
      var_17 = var_2 + -0x48d4;
      (*(type_7 *)PTR___assert_fail_000806e8)(var_17,var_19,0x640,var_2 + -0x46e4);
      goto LAB_00049a18;
    }
    var_3 = var_8(var_3,v_pub_blob,var_5);
    var_19 = (type_5 *)0x1;
    (*(type_7 *)PTR___fprintf_chk_00080778)(fp,1,var_2 + -0x26a4,var_3);
    var_17 = (type_2 *)var_3;
    (*(type_7 *)PTR_safefree_000800c4)();
  }
  if (var_9 == *(int *)PTR___stack_chk_guard_00080958) {
    return;
  }
LAB_00049a18:
  var_23 = var_25;
  var_10 = PTR___stack_chk_fail_00080814;
  (*(type_7 *)PTR___stack_chk_fail_00080814)();
  var_12 = var_10 + 0x3e64c;
  var_22 = **(int **)(var_10 + 0x36f34);
  pbStack_70 = (type_2 *)var_3;
  pbStack_6c = var_6;
  pFStack_68 = fp;
  iStack_64 = var_5;
  iStack_60 = var_7;
  pvStack_5c = v_pub_blob;
  pcStack_58 = unaff_s6;
  pcStack_54 = var_23;
  var_11(var_17,(type_8)var_19,&bStack_b4);
  puStack_c8 = (type_6 *)(type_8)bStack_b4;
  var_15 = abStack_b3;
  var_14 = auStack_a4;
  var_13 = *(int *)(var_12 + -0x7f3c);
  var_9 = *(int *)(var_12 + -0x7f3c);
  do {
    iStack_c4 = var_13 + -0x2908;
    (**(type_7 **)(var_12 + -0x7784))(var_14,1,0xffffffff,var_9 + -0x48a8);
    var_14 = var_14 + 3;
    puStack_c8 = (type_6 *)(type_8)*var_15;
    var_15 = var_15 + 1;
  } while (var_14 != var_16);
  iStack_c4 = *(int *)(var_12 + -0x7fc8) + 0x48d0;
  var_13 = 1;
  (**(type_7 **)(var_12 + -0x7784))
            (var_16,1,0xffffffff,*(int *)(var_12 + -0x7f3c) + -0x48a8);
  var_18 = (**(type_7 **)(var_12 + -0x7ed8))
                      ((type_8)*var_17 << 0x18 | (type_8)var_17[1] << 0x10 | (type_8)var_17[3] | (type_8)var_17[2] << 8);
  if ((var_18 < 1) || ((int)(var_19 + -4) <= var_18)) {
    (**(type_7 **)(var_12 + -0x7f74))(auStack_a4);
  }
  else {
    var_15 = var_17 + 4;
    var_21 = var_20(var_18,(char *)var_15);
    var_13 = var_18;
    if (var_21 == (type_3 *)0x0) {
      (**(type_7 **)(var_12 + -0x7fb8))
                (*(int *)(var_12 + -0x7f3c) + -0x4894,var_18,var_15,auStack_a4);
    }
    else {
      var_24 = (*var_21->pubkey_bits)(var_21,var_17,(int)var_19);
      puStack_c8 = auStack_a4;
      (**(type_7 **)(var_12 + -0x7fb8))
                (*(int *)(var_12 + -0x7f3c) + -0x48a0,var_18,var_15,var_24);
    }
  }
  if (var_22 != **(int **)(var_12 + -0x7718)) {
    var_23 = *(type_7 **)(var_12 + -0x785c);
    pcVar11 = ssh2_fingerprint;
    var_24 = var_22;
    (*var_23)();
    piVar7 = *(int **)(var_23 + 0x36d0c);
    var_26 = (type_4 *)*piVar7;
    iStack_e8 = var_18;
    pbStack_e4 = var_15;
    iStack_e0 = var_9 + -0x48a8;
    pcStack_dc = pcVar11;
    blob = (void *)(**(type_7 **)(var_24 + 0xc))(var_13,&iStack_f0);
    var_25(blob,iStack_f0);
    (**(type_7 **)(var_23 + 0x36478))(blob);
    if (var_26 != (type_4 *)*piVar7) {
      var_23 = *(type_7 **)(var_23 + 0x36bc8);
      filename = var_26;
      (*var_23)();
      var_28 = var_27(filename,(char *)(*(int *)(var_23 + 0x363a8) + 0x6fc4),0);
      if (var_28 != (type_1 *)0x0) {
        var_29(var_28);
        (**(type_7 **)(var_23 + 0x36bb4))(var_28);
      }
      return;
    }
    return;
  }
  return;
}


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

/* WARNING: Type propagation algorithm not settling */

int MASKED(undefined4 param_1,byte *param_2,int param_3,byte *param_4,int param_5)

{
  bool bVar1;
  byte bVar5;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  byte *pbVar6;
  undefined *puVar7;
  undefined1 *puVar8;
  int *piVar9;
  byte *unaff_s1;
  byte *pbVar10;
  int iVar11;
  int iVar12;
  int unaff_s4;
  undefined1 *unaff_s6;
  undefined *puVar13;
  code *pcVar14;
  code *pcVar15;
  undefined4 uStack_f0;
  int iStack_ec;
  int iStack_e8;
  byte *pbStack_e4;
  int iStack_e0;
  code *pcStack_dc;
  undefined1 *puStack_c8;
  int iStack_c4;
  undefined *puStack_c0;
  byte bStack_b4;
  byte abStack_b3 [15];
  undefined1 auStack_a4 [45];
  undefined1 auStack_77 [3];
  int iStack_74;
  byte *pbStack_70;
  byte *pbStack_6c;
  undefined4 uStack_68;
  byte *pbStack_64;
  int iStack_60;
  int iStack_5c;
  undefined1 *puStack_58;
  code *pcStack_54;
  undefined1 auStack_34 [4];
  undefined1 local_30;
  int local_2c;
  
  local_2c = *(int *)PTR___stack_chk_guard_00080958;
  if (param_5 == 9) {
    (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4928,1,0x20,param_1);
    if (param_2 != (byte *)0x0) {
      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x4904,1,10,param_1);
      bVar5 = *param_2;
      if (bVar5 != 0) {
        unaff_s4 = 0x22;
        do {
          if ((bVar5 == 0x5c) || (bVar5 == 0x22)) {
            (*(code *)PTR_fputc_00080914)(0x5c,param_1);
          }
          (*(code *)PTR_fputc_00080914)((int)(char)*param_2,param_1);
          param_2 = param_2 + 1;
          bVar5 = *param_2;
        } while (bVar5 != 0);
      }
      (*(code *)PTR_fwrite_0008090c)(PTR_DAT_00080134 + -0x48f8,1,2,param_1);
    }
    unaff_s1 = (byte *)(uint)((int)param_4 < 4);
    if (0 < (int)param_4) {
      bVar1 = unaff_s1 != (byte *)0x0;
      unaff_s1 = (byte *)0x3;
      if (bVar1) {
        unaff_s1 = param_4;
      }
      (*(code *)PTR_base64_encode_atom_00080280)(param_3,unaff_s1,auStack_34);
      local_30 = 0;
      (*(code *)PTR_fputs_00080878)(auStack_34,param_1);
      unaff_s4 = 1;
      unaff_s6 = auStack_34;
      while (param_2 = param_4 + -(int)unaff_s1, (int)unaff_s1 < (int)param_4) {
        if (3 < (int)param_2) {
          param_2 = (byte *)0x3;
        }
        (*(code *)PTR_base64_encode_atom_00080280)(unaff_s1 + param_3,param_2,unaff_s6);
        local_30 = 0;
        (*(code *)PTR_fputs_00080878)(unaff_s6,param_1);
        unaff_s4 = unaff_s4 + 1;
        unaff_s1 = unaff_s1 + (int)param_2;
        if (0xf < unaff_s4) {
          (*(code *)PTR_fputc_00080914)(10,param_1);
          unaff_s4 = 0;
        }
      }
      if (0 < unaff_s4) {
        (*(code *)PTR_fputc_00080914)(10,param_1);
      }
    }
    puVar7 = (undefined *)0x1;
    pbVar6 = PTR_DAT_00080134 + -0x48f4;
    (*(code *)PTR_fwrite_0008090c)(pbVar6,1,0x1e,param_1);
  }
  else {
    if (param_5 != 10) {
      puVar7 = PTR_DAT_00080134 + -0x4e7c;
      pbVar6 = PTR_DAT_00080134 + -0x48d4;
      (*(code *)PTR___assert_fail_000806e8)(pbVar6,puVar7,0x640,PTR_DAT_00080134 + -0x46e4);
      goto LAB_00049a18;
    }
    param_2 = (byte *)FUN_00045444(param_2,param_3,param_4);
    puVar7 = (undefined *)0x1;
    (*(code *)PTR___fprintf_chk_00080778)(param_1,1,PTR_DAT_00080134 + -0x26a4,param_2);
    pbVar6 = param_2;
    (*(code *)PTR_safefree_000800c4)();
  }
  if (local_2c == *(int *)PTR___stack_chk_guard_00080958) {
    return *(int *)PTR___stack_chk_guard_00080958;
  }
LAB_00049a18:
  pcVar14 = ssh2_fingerprint_blob;
  puVar13 = PTR___stack_chk_fail_00080814;
  (*(code *)PTR___stack_chk_fail_00080814)();
  puStack_c0 = puVar13 + 0x3e64c;
  iStack_74 = **(int **)(puVar13 + 0x36f34);
  pbStack_70 = param_2;
  pbStack_6c = unaff_s1;
  uStack_68 = param_1;
  pbStack_64 = param_4;
  iStack_60 = unaff_s4;
  iStack_5c = param_3;
  puStack_58 = unaff_s6;
  pcStack_54 = pcVar14;
  MD5Simple();
  puStack_c8 = (undefined1 *)(uint)bStack_b4;
  pbVar10 = abStack_b3;
  puVar8 = auStack_a4;
  iVar12 = *(int *)(puStack_c0 + -0x7f3c);
  iVar11 = *(int *)(puStack_c0 + -0x7f3c);
  do {
    iStack_c4 = iVar12 + -0x2908;
    (**(code **)(puStack_c0 + -0x7784))(puVar8,1,0xffffffff,iVar11 + -0x48a8);
    puVar8 = puVar8 + 3;
    puStack_c8 = (undefined1 *)(uint)*pbVar10;
    pbVar10 = pbVar10 + 1;
  } while (puVar8 != auStack_77);
  iStack_c4 = *(int *)(puStack_c0 + -0x7fc8) + 0x48d0;
  iVar12 = 1;
  (**(code **)(puStack_c0 + -0x7784))
            (auStack_77,1,0xffffffff,*(int *)(puStack_c0 + -0x7f3c) + -0x48a8);
  iVar2 = (**(code **)(puStack_c0 + -0x7ed8))
                    ((uint)*pbVar6 << 0x18 | (uint)pbVar6[1] << 0x10 | (uint)pbVar6[3] |
                     (uint)pbVar6[2] << 8);
  if ((iVar2 < 1) || ((int)(puVar7 + -4) <= iVar2)) {
    iVar3 = (**(code **)(puStack_c0 + -0x7f74))(auStack_a4);
  }
  else {
    pbVar10 = pbVar6 + 4;
    iVar3 = find_pubkey_alg_len(iVar2,pbVar10);
    iVar12 = iVar2;
    if (iVar3 == 0) {
      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))
                        (*(int *)(puStack_c0 + -0x7f3c) + -0x4894,iVar2,pbVar10,auStack_a4);
    }
    else {
      uVar4 = (**(code **)(iVar3 + 0x24))(iVar3,pbVar6,puVar7);
      puStack_c8 = auStack_a4;
      iVar3 = (**(code **)(puStack_c0 + -0x7fb8))
                        (*(int *)(puStack_c0 + -0x7f3c) + -0x48a0,iVar2,pbVar10,uVar4);
    }
  }
  if (iStack_74 != **(int **)(puStack_c0 + -0x7718)) {
    pcVar14 = *(code **)(puStack_c0 + -0x785c);
    pcVar15 = ssh2_fingerprint;
    iVar3 = iStack_74;
    (*pcVar14)();
    piVar9 = *(int **)(pcVar14 + 0x36d0c);
    iStack_ec = *piVar9;
    iStack_e8 = iVar2;
    pbStack_e4 = pbVar10;
    iStack_e0 = iVar11 + -0x48a8;
    pcStack_dc = pcVar15;
    uVar4 = (**(code **)(iVar3 + 0xc))(iVar12,&uStack_f0);
    iVar11 = ssh2_fingerprint_blob(uVar4,uStack_f0);
    (**(code **)(pcVar14 + 0x36478))(uVar4);
    if (iStack_ec != *piVar9) {
      pcVar14 = *(code **)(pcVar14 + 0x36bc8);
      (*pcVar14)();
      iVar11 = f_open();
      if (iVar11 == 0) {
        iVar12 = 0;
      }
      else {
        iVar12 = FUN_000462f8(iVar11);
        (**(code **)(pcVar14 + 0x36bb4))(iVar11);
      }
      return iVar12;
    }
    return iVar11;
  }
  return iVar3;
}

