
void rsa_fingerprint(char *str,int len,RSAKey *key)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  Bignum_conflict a;
  char *pcVar5;
  undefined *puVar6;
  undefined *puVar7;
  undefined *puVar8;
  uchar c;
  MD5Context md5c;
  uchar digest [16];
  char buffer [88];
  
  iVar2 = *(int *)PTR___stack_chk_guard_00122654;
  MD5Init(&md5c);
  iVar3 = ssh1_bignum_length((Bignum_conflict)key->modulus);
  if (iVar3 != 2) {
                    /* WARNING: Subroutine does not return */
    bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3);
  }
  iVar3 = ssh1_bignum_length((Bignum_conflict)key->exponent);
  if (iVar3 != 2) {
                    /* WARNING: Subroutine does not return */
    bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3);
  }
  MD5Final(digest,&md5c);
  iVar3 = bignum_bitcount((Bignum_conflict)key->modulus);
  (*(code *)PTR___sprintf_chk_00122538)(buffer,1,0x58,PTR_E0_218__00121388 + 0x3988,iVar3);
  puVar8 = PTR_E0_218__00121388;
  iVar3 = 1;
  puVar7 = PTR_E0_218__00121388 + -0x5054;
  puVar6 = PTR_data_CS_ISO8859_3_sbcs2ucs_105__00121348 + 0x2efc;
  do {
    while( true ) {
      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);
      pcVar5 = buffer + iVar4;
      if (iVar3 == 1) break;
      (*(code *)PTR___sprintf_chk_00122538)
                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);
      bVar1 = 0xf < iVar3;
      iVar3 = iVar3 + 1;
      if (bVar1) {
        (*(code *)PTR_strncpy_00122470)(str,buffer,len);
        str[len + -1] = '\0';
        pcVar5 = str;
        if (key->comment != (char *)0x0) {
          iVar3 = (*(code *)PTR_strlen_00122558)();
          if (iVar3 < len + -1) {
            str[iVar3] = ' ';
            pcVar5 = str + iVar3 + 1;
            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);
            str[len + -1] = '\0';
          }
        }
        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {
          return;
        }
        puVar8 = PTR___stack_chk_fail_001222ec;
        (*(code *)PTR___stack_chk_fail_001222ec)();
        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),
                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));
        if (iVar2 == 0) {
          return;
        }
        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));
        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));
                    /* WARNING: Subroutine does not return */
        freebn(a);
      }
    }
    (*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0]);
    iVar3 = 2;
  } while( true );
}



uint rsa_fingerprint(int param_1,int param_2,int param_3)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined1 *puVar6;
  int iVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined *puVar10;
  undefined1 local_f1;
  undefined1 auStack_f0 [91];
  undefined1 auStack_95 [17];
  undefined1 auStack_84 [88];
  uint local_2c;
  
  local_2c = *(uint *)PTR___stack_chk_guard_00122654;
  MD5Init(auStack_f0);
  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));
  if (iVar2 != 2) {
    iVar2 = iVar2 + -3;
    do {
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);
      MD5Update(auStack_f0,&local_f1,1);
      iVar2 = iVar2 + -1;
    } while (iVar2 != -1);
  }
  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));
  iVar7 = iVar2 + -3;
  if (iVar2 != 2) {
    do {
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);
      MD5Update(auStack_f0,&local_f1,1);
      iVar7 = iVar7 + -1;
    } while (iVar7 != -1);
  }
  MD5Final(auStack_95 + 1,auStack_f0);
  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));
  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);
  puVar10 = PTR_DAT_00121388;
  iVar2 = 1;
  puVar9 = PTR_DAT_00121388 + -0x5054;
  puVar8 = PTR_DAT_00121348 + 0x2efc;
  do {
    while( true ) {
      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);
      puVar6 = auStack_84 + iVar7;
      if (iVar2 == 1) break;
      (*(code *)PTR___sprintf_chk_00122538)
                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);
      bVar1 = 0xf < iVar2;
      iVar2 = iVar2 + 1;
      if (bVar1) {
        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);
        puVar6 = (undefined1 *)(param_1 + param_2 + -1);
        *puVar6 = 0;
        iVar2 = param_1;
        if (*(int *)(param_3 + 0x20) != 0) {
          iVar7 = (*(code *)PTR_strlen_00122558)();
          if (iVar7 < param_2 + -1) {
            *(undefined1 *)(param_1 + iVar7) = 0x20;
            iVar2 = param_1 + iVar7 + 1;
            (*(code *)PTR_strncpy_00122470)
                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);
            *puVar6 = 0;
          }
        }
        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {
          puVar10 = PTR___stack_chk_fail_001222ec;
          (*(code *)PTR___stack_chk_fail_001222ec)();
          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));
          if (uVar4 != 0) {
            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));
            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));
            freebn(uVar3);
            if (iVar7 == 0) {
              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));
              decbn(uVar3);
              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);
              freebn(uVar3);
              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));
              freebn(uVar5);
              uVar4 = 0;
              if (iVar7 == 0) {
                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));
                decbn(uVar3);
                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);
                freebn(uVar3);
                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));
                freebn(uVar5);
                if (iVar7 == 0) {
                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));
                  if (iVar7 < 1) {
                    uVar3 = *(undefined4 *)(iVar2 + 0x14);
                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);
                    *(undefined4 *)(iVar2 + 0x18) = uVar3;
                    freebn(*(undefined4 *)(iVar2 + 0x1c));
                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));
                    *(int *)(iVar2 + 0x1c) = iVar7;
                    if (iVar7 == 0) {
                      return 0;
                    }
                  }
                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),
                                 *(undefined4 *)(iVar2 + 0x14));
                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));
                  freebn(uVar3);
                  uVar4 = (uint)(iVar2 == 0);
                }
                else {
                  uVar4 = 0;
                }
              }
            }
            else {
              uVar4 = 0;
            }
          }
          return uVar4;
        }
        return *(uint *)PTR___stack_chk_guard_00122654;
      }
    }
    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])
    ;
    iVar2 = 2;
  } while( true );
}


lui gp,0xa
addiu gp,gp,-0x2a8c
addu gp,gp,t9
addiu sp,sp,-0x118
sw ra,0x114(sp)
sw s7,0x110(sp)
sw s6,0x10c(sp)
sw s5,0x108(sp)
sw s4,0x104(sp)
sw s3,0x100(sp)
sw s2,0xfc(sp)
sw s1,0xf8(sp)
sw s0,0xf4(sp)
sw gp,0x18(sp)
or s5,a0,zero
or s4,a1,zero
or s2,a2,zero
lw v0,-0x6c5c(gp)
lw v0,0x0(v0)
sw v0,0xec(sp)
addiu a0,sp,0x28
lw t9,-0x79d4(gp)
bal 0x00082578
_nop
lw gp,0x18(sp)
lw a0,0x8(s2)
lw t9,-0x7b90(gp)
bal 0x0006f224
_nop
lw gp,0x18(sp)
li v1,0x2
beq v0,v1,0x0008be10
_addiu s3,sp,0x28
addiu s0,v0,-0x3
addiu s6,sp,0x27
li s1,-0x1
or a1,s0,zero
lw a0,0x8(s2)
lw t9,-0x7b68(gp)
bal 0x0006f2c4
_nop
lw gp,0x18(sp)
sb v0,0x27(sp)
li a2,0x1
or a1,s6,zero
or a0,s3,zero
lw t9,-0x79d0(gp)
bal 0x000825b8
_nop
lw gp,0x18(sp)
addiu s0,s0,-0x1
bne s0,s1,0x0008bdd0
_or a1,s0,zero
lw a0,0xc(s2)
lw t9,-0x7b90(gp)
bal 0x0006f224
_nop
lw gp,0x18(sp)
li v1,0x2
beq v0,v1,0x0008be80
_addiu s0,v0,-0x3
addiu s6,sp,0x27
addiu s3,sp,0x28
li s1,-0x1
or a1,s0,zero
lw a0,0xc(s2)
lw t9,-0x7b68(gp)
bal 0x0006f2c4
_nop
lw gp,0x18(sp)
sb v0,0x27(sp)
li a2,0x1
or a1,s6,zero
or a0,s3,zero
lw t9,-0x79d0(gp)
bal 0x000825b8
_nop
lw gp,0x18(sp)
addiu s0,s0,-0x1
bne s0,s1,0x0008be40
_or a1,s0,zero
addiu a1,sp,0x28
addiu a0,sp,0x84
lw t9,-0x79cc(gp)
bal 0x00083228
_nop
lw gp,0x18(sp)
lw a0,0x8(s2)
lw t9,-0x7b6c(gp)
bal 0x0006f154
_nop
lw gp,0x18(sp)
sw v0,0x10(sp)
lw a3,-0x7f28(gp)
addiu a3,a3,0x3988
li a2,0x58
li a1,0x1
addiu a0,sp,0x94
lw t9,-0x6d78(gp)
jalr t9
_nop
lw gp,0x18(sp)
li s1,0x1
lw s7,-0x7f28(gp)
addiu s7,s7,-0x5054
lw s3,-0x7f28(gp)
lw s6,-0x7f68(gp)
b 0x0008bf50
_addiu s6,s6,0x2efc
li a0,0x20
sb a0,0x0(v1)
subu a2,s4,v0
addiu v0,v0,0x1
addiu a2,a2,-0x1
lw a1,0x20(s2)
addu a0,s5,v0
lw t9,-0x6e40(gp)
jalr t9
_nop
lw gp,0x18(sp)
b 0x0008c008
_sb zero,0x0(s0)
lbu v0,0x84(sp)
sw v0,0x14(sp)
sw s7,0x10(sp)
addiu a3,s3,0x398c
li a2,-0x1
li a1,0x1
lw t9,-0x6d78(gp)
jalr t9
_nop
lw gp,0x18(sp)
addiu s1,s1,0x1
addiu s0,sp,0x94
or a0,s0,zero
lw t9,-0x6d58(gp)
jalr t9
_nop
lw gp,0x18(sp)
addu a0,s0,v0
li v0,0x1
beq s1,v0,0x0008bf24
_addiu v0,sp,0xf0
addu v0,v0,s1
lbu v0,-0x6d(v0)
sw v0,0x14(sp)
sw s6,0x10(sp)
addiu a3,s3,0x398c
li a2,-0x1
li a1,0x1
lw t9,-0x6d78(gp)
jalr t9
_nop
lw gp,0x18(sp)
slti v0,s1,0x10
bne v0,zero,0x0008bf54
_addiu s1,s1,0x1
addiu s1,s1,-0x1
or a2,s4,zero
addiu a1,sp,0x94
or a0,s5,zero
lw t9,-0x6e40(gp)
jalr t9
_nop
lw gp,0x18(sp)
addiu s0,s4,-0x1
addu s0,s5,s0
sb zero,0x0(s0)
lw v0,0x20(s2)
beq v0,zero,0x0008c008
_or a0,s5,zero
lw t9,-0x6d58(gp)
jalr t9
_nop
lw gp,0x18(sp)
addiu v1,s4,-0x1
slt v1,v0,v1
bne v1,zero,0x0008bef0
_addu v1,s5,v0
lw v1,0xec(sp)
lw v0,-0x6c5c(gp)
lw v0,0x0(v0)
bne v1,v0,0x0008c044
_lw ra,0x114(sp)
lw s7,0x110(sp)
lw s6,0x10c(sp)
lw s5,0x108(sp)
lw s4,0x104(sp)
lw s3,0x100(sp)
lw s2,0xfc(sp)
lw s1,0xf8(sp)
lw s0,0xf4(sp)
jr ra
_addiu sp,sp,0x118
lw t9,-0x6fc4(gp)
jalr t9
_nop
(translation_unit "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}\n\n" (function_definition "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}" type_identifier (function_declarator "rsa_fingerprint(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 local_f1;" type_identifier identifier ;) (declaration "undefined1 auStack_f0 [91];" type_identifier (array_declarator "auStack_f0 [91]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_95 [17];" type_identifier (array_declarator "auStack_95 [17]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_84 [88];" type_identifier (array_declarator "auStack_84 [88]" identifier [ number_literal ]) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_00122654;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_00122654" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" * (cast_expression "(uint *)PTR___stack_chk_guard_00122654" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "MD5Init(auStack_f0);" (call_expression "MD5Init(auStack_f0)" identifier (argument_list "(auStack_f0)" ( identifier ))) ;) (expression_statement "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));" (assignment_expression "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }" if (parenthesized_expression "(iVar2 != 2)" ( (binary_expression "iVar2 != 2" identifier != number_literal) )) (compound_statement "{\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }" { (expression_statement "iVar2 = iVar2 + -3;" (assignment_expression "iVar2 = iVar2 + -3" identifier = (binary_expression "iVar2 + -3" identifier + number_literal)) ;) (do_statement "do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);" do (compound_statement "{\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    }" { (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 8),iVar2)" identifier (argument_list "(*(undefined4 *)(param_3 + 8),iVar2)" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));" (assignment_expression "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = iVar2 + -3;" (assignment_expression "iVar7 = iVar2 + -3" identifier = (binary_expression "iVar2 + -3" identifier + number_literal)) ;) (if_statement "if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }" if (parenthesized_expression "(iVar2 != 2)" ( (binary_expression "iVar2 != 2" identifier != number_literal) )) (compound_statement "{\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }" { (do_statement "do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);" do (compound_statement "{\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    }" { (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7)" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc),iVar7)" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != -1)" ( (binary_expression "iVar7 != -1" identifier != number_literal) )) ;) })) (expression_statement "MD5Final(auStack_95 + 1,auStack_f0);" (call_expression "MD5Final(auStack_95 + 1,auStack_f0)" identifier (argument_list "(auStack_95 + 1,auStack_f0)" ( (binary_expression "auStack_95 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));" (assignment_expression "uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3)" ( identifier , number_literal , number_literal , (binary_expression "PTR_DAT_00121388 + 0x3988" identifier + number_literal) , identifier ))) ;) (expression_statement "puVar10 = PTR_DAT_00121388;" (assignment_expression "puVar10 = PTR_DAT_00121388" identifier = identifier) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "puVar9 = PTR_DAT_00121388 + -0x5054;" (assignment_expression "puVar9 = PTR_DAT_00121388 + -0x5054" identifier = (binary_expression "PTR_DAT_00121388 + -0x5054" identifier + number_literal)) ;) (expression_statement "puVar8 = PTR_DAT_00121348 + 0x2efc;" (assignment_expression "puVar8 = PTR_DAT_00121348 + 0x2efc" identifier = (binary_expression "PTR_DAT_00121348 + 0x2efc" identifier + number_literal)) ;) (do_statement "do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  }" { (while_statement "while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }" { (expression_statement "iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);" (assignment_expression "iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84)" identifier = (call_expression "(*(code *)PTR_strlen_00122558)(auStack_84)" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" ( (pointer_expression "*(code *)PTR_strlen_00122558" * (cast_expression "(code *)PTR_strlen_00122558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84)" ( identifier )))) ;) (expression_statement "puVar6 = auStack_84 + iVar7;" (assignment_expression "puVar6 = auStack_84 + iVar7" identifier = (binary_expression "auStack_84 + iVar7" identifier + identifier)) ;) (if_statement "if (iVar2 == 1) break;" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2])" ( identifier , number_literal , number_literal , (binary_expression "puVar10 + 0x398c" identifier + number_literal) , identifier , (subscript_expression "auStack_95[iVar2]" identifier [ identifier ]) ))) ;) (expression_statement "bVar1 = 0xf < iVar2;" (assignment_expression "bVar1 = 0xf < iVar2" identifier = (binary_expression "0xf < iVar2" number_literal < identifier)) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }" { (expression_statement "(*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);" (call_expression "(*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" ( (pointer_expression "*(code *)PTR_strncpy_00122470" * (cast_expression "(code *)PTR_strncpy_00122470" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_84,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar6 = (undefined1 *)(param_1 + param_2 + -1);" (assignment_expression "puVar6 = (undefined1 *)(param_1 + param_2 + -1)" identifier = (cast_expression "(undefined1 *)(param_1 + param_2 + -1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2 + -1)" ( (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal) )))) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" identifier = identifier) ;) (if_statement "if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_3 + 0x20) != 0)" ( (binary_expression "*(int *)(param_3 + 0x20) != 0" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }" { (expression_statement "iVar7 = (*(code *)PTR_strlen_00122558)();" (assignment_expression "iVar7 = (*(code *)PTR_strlen_00122558)()" identifier = (call_expression "(*(code *)PTR_strlen_00122558)()" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" ( (pointer_expression "*(code *)PTR_strlen_00122558" * (cast_expression "(code *)PTR_strlen_00122558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }" if (parenthesized_expression "(iVar7 < param_2 + -1)" ( (binary_expression "iVar7 < param_2 + -1" identifier < (binary_expression "param_2 + -1" identifier + number_literal)) )) (compound_statement "{\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }" { (expression_statement "*(undefined1 *)(param_1 + iVar7) = 0x20;" (assignment_expression "*(undefined1 *)(param_1 + iVar7) = 0x20" (pointer_expression "*(undefined1 *)(param_1 + iVar7)" * (cast_expression "(undefined1 *)(param_1 + iVar7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar7)" ( (binary_expression "param_1 + iVar7" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar2 = param_1 + iVar7 + 1;" (assignment_expression "iVar2 = param_1 + iVar7 + 1" identifier = (binary_expression "param_1 + iVar7 + 1" (binary_expression "param_1 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);" (call_expression "(*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" ( (pointer_expression "*(code *)PTR_strncpy_00122470" * (cast_expression "(code *)PTR_strncpy_00122470" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1)" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (binary_expression "(param_2 - iVar7) + -1" (parenthesized_expression "(param_2 - iVar7)" ( (binary_expression "param_2 - iVar7" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) })) })) (if_statement "if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }" if (parenthesized_expression "(local_2c != *(uint *)PTR___stack_chk_guard_00122654)" ( (binary_expression "local_2c != *(uint *)PTR___stack_chk_guard_00122654" identifier != (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" * (cast_expression "(uint *)PTR___stack_chk_guard_00122654" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }" { (expression_statement "puVar10 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar10 = PTR___stack_chk_fail_001222ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" * (cast_expression "(code *)PTR___stack_chk_fail_001222ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));" (assignment_expression "uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" identifier (argument_list "(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" ( (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) , (pointer_expression "**(undefined4 **)(puVar10 + 0x958f4)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x958f4)" * (cast_expression "(undefined4 **)(puVar10 + 0x958f4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x958f4)" ( (binary_expression "puVar10 + 0x958f4" identifier + number_literal) ))))) )))) ;) (if_statement "if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }" { (expression_statement "uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));" (assignment_expression "iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8))" identifier = (call_expression "bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8))" identifier (argument_list "(uVar3,*(undefined4 *)(iVar2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }" { (expression_statement "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "copybn(*(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar3);" (call_expression "decbn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);" (assignment_expression "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier = (call_expression "modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier (argument_list "(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" ( (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier = (call_expression "bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier (argument_list "(uVar5,**(undefined4 **)(puVar10 + 0x95910))" ( identifier , (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" * (cast_expression "(undefined4 **)(puVar10 + 0x95910)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x95910)" ( (binary_expression "puVar10 + 0x95910" identifier + number_literal) ))))) )))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }" { (expression_statement "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "copybn(*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar3);" (call_expression "decbn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);" (assignment_expression "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier = (call_expression "modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier (argument_list "(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" ( (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier = (call_expression "bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier (argument_list "(uVar5,**(undefined4 **)(puVar10 + 0x95910))" ( identifier , (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" * (cast_expression "(undefined4 **)(puVar10 + 0x95910)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x95910)" ( (binary_expression "puVar10 + 0x95910" identifier + number_literal) ))))) )))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (if_statement "if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }" { (expression_statement "iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }" if (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) (compound_statement "{\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }" { (expression_statement "uVar3 = *(undefined4 *)(iVar2 + 0x14);" (assignment_expression "uVar3 = *(undefined4 *)(iVar2 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);" (assignment_expression "*(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18)" (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "freebn(*(undefined4 *)(iVar2 + 0x1c));" (call_expression "freebn(*(undefined4 *)(iVar2 + 0x1c))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x1c))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" * (cast_expression "(undefined4 *)(iVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "*(int *)(iVar2 + 0x1c) = iVar7;" (assignment_expression "*(int *)(iVar2 + 0x1c) = iVar7" (pointer_expression "*(int *)(iVar2 + 0x1c)" * (cast_expression "(int *)(iVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar7 == 0) {\n                      return 0;\n                    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                      return 0;\n                    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" * (cast_expression "(undefined4 *)(iVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910))" identifier = (call_expression "bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910))" identifier (argument_list "(uVar3,**(undefined4 **)(puVar10 + 0x95910))" ( identifier , (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" * (cast_expression "(undefined4 **)(puVar10 + 0x95910)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x95910)" ( (binary_expression "puVar10 + 0x95910" identifier + number_literal) ))))) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar4 = (uint)(iVar2 == 0);" (assignment_expression "uVar4 = (uint)(iVar2 == 0)" identifier = (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n                  uVar4 = 0;\n                }" else (compound_statement "{\n                  uVar4 = 0;\n                }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }))) })) }) (else_clause "else {\n              uVar4 = 0;\n            }" else (compound_statement "{\n              uVar4 = 0;\n            }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }))) })) (return_statement "return uVar4;" return identifier ;) })) (return_statement "return *(uint *)PTR___stack_chk_guard_00122654;" return (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" * (cast_expression "(uint *)PTR___stack_chk_guard_00122654" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) })) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])" ( identifier , number_literal , number_literal , (binary_expression "puVar10 + 0x398c" identifier + number_literal) , identifier , (subscript_expression "auStack_95[1]" identifier [ number_literal ]) ))) ;) (expression_statement "iVar2 = 2;" (assignment_expression "iVar2 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void rsa_fingerprint(char *str,int len,RSAKey *key)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  Bignum_conflict a;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uchar c;\n  MD5Context md5c;\n  uchar digest [16];\n  char buffer [88];\n  \n  iVar2 = *(int *)PTR___stack_chk_guard_00122654;\n  MD5Init(&md5c);\n  iVar3 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3);\n  }\n  iVar3 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3);\n  }\n  MD5Final(digest,&md5c);\n  iVar3 = bignum_bitcount((Bignum_conflict)key->modulus);\n  (*(code *)PTR___sprintf_chk_00122538)(buffer,1,0x58,PTR_E0_218__00121388 + 0x3988,iVar3);\n  puVar8 = PTR_E0_218__00121388;\n  iVar3 = 1;\n  puVar7 = PTR_E0_218__00121388 + -0x5054;\n  puVar6 = PTR_data_CS_ISO8859_3_sbcs2ucs_105__00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);\n      pcVar5 = buffer + iVar4;\n      if (iVar3 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);\n      bVar1 = 0xf < iVar3;\n      iVar3 = iVar3 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0]);\n    iVar3 = 2;\n  } while( true );\n}\n\n" (function_definition "void rsa_fingerprint(char *str,int len,RSAKey *key)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  Bignum_conflict a;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uchar c;\n  MD5Context md5c;\n  uchar digest [16];\n  char buffer [88];\n  \n  iVar2 = *(int *)PTR___stack_chk_guard_00122654;\n  MD5Init(&md5c);\n  iVar3 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3);\n  }\n  iVar3 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3);\n  }\n  MD5Final(digest,&md5c);\n  iVar3 = bignum_bitcount((Bignum_conflict)key->modulus);\n  (*(code *)PTR___sprintf_chk_00122538)(buffer,1,0x58,PTR_E0_218__00121388 + 0x3988,iVar3);\n  puVar8 = PTR_E0_218__00121388;\n  iVar3 = 1;\n  puVar7 = PTR_E0_218__00121388 + -0x5054;\n  puVar6 = PTR_data_CS_ISO8859_3_sbcs2ucs_105__00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);\n      pcVar5 = buffer + iVar4;\n      if (iVar3 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);\n      bVar1 = 0xf < iVar3;\n      iVar3 = iVar3 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0]);\n    iVar3 = 2;\n  } while( true );\n}" primitive_type (function_declarator "rsa_fingerprint(char *str,int len,RSAKey *key)" identifier (parameter_list "(char *str,int len,RSAKey *key)" ( (parameter_declaration "char *str" primitive_type (pointer_declarator "*str" * identifier)) , (parameter_declaration "int len" primitive_type identifier) , (parameter_declaration "RSAKey *key" type_identifier (pointer_declarator "*key" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  Bignum_conflict a;\n  char *pcVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uchar c;\n  MD5Context md5c;\n  uchar digest [16];\n  char buffer [88];\n  \n  iVar2 = *(int *)PTR___stack_chk_guard_00122654;\n  MD5Init(&md5c);\n  iVar3 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3);\n  }\n  iVar3 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3);\n  }\n  MD5Final(digest,&md5c);\n  iVar3 = bignum_bitcount((Bignum_conflict)key->modulus);\n  (*(code *)PTR___sprintf_chk_00122538)(buffer,1,0x58,PTR_E0_218__00121388 + 0x3988,iVar3);\n  puVar8 = PTR_E0_218__00121388;\n  iVar3 = 1;\n  puVar7 = PTR_E0_218__00121388 + -0x5054;\n  puVar6 = PTR_data_CS_ISO8859_3_sbcs2ucs_105__00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);\n      pcVar5 = buffer + iVar4;\n      if (iVar3 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);\n      bVar1 = 0xf < iVar3;\n      iVar3 = iVar3 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0]);\n    iVar3 = 2;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Bignum_conflict a;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uchar c;" type_identifier identifier ;) (declaration "MD5Context md5c;" type_identifier identifier ;) (declaration "uchar digest [16];" type_identifier (array_declarator "digest [16]" identifier [ number_literal ]) ;) (declaration "char buffer [88];" primitive_type (array_declarator "buffer [88]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_00122654;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_00122654" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00122654" * (cast_expression "(int *)PTR___stack_chk_guard_00122654" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "MD5Init(&md5c);" (call_expression "MD5Init(&md5c)" identifier (argument_list "(&md5c)" ( (pointer_expression "&md5c" & identifier) ))) ;) (expression_statement "iVar3 = ssh1_bignum_length((Bignum_conflict)key->modulus);" (assignment_expression "iVar3 = ssh1_bignum_length((Bignum_conflict)key->modulus)" identifier = (call_expression "ssh1_bignum_length((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (if_statement "if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3);\n  }" if (parenthesized_expression "(iVar3 != 2)" ( (binary_expression "iVar3 != 2" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3);\n  }" { comment (expression_statement "bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3);" (call_expression "bignum_byte((Bignum_conflict)key->modulus,iVar3 + -3)" identifier (argument_list "((Bignum_conflict)key->modulus,iVar3 + -3)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) , (binary_expression "iVar3 + -3" identifier + number_literal) ))) ;) })) (expression_statement "iVar3 = ssh1_bignum_length((Bignum_conflict)key->exponent);" (assignment_expression "iVar3 = ssh1_bignum_length((Bignum_conflict)key->exponent)" identifier = (call_expression "ssh1_bignum_length((Bignum_conflict)key->exponent)" identifier (argument_list "((Bignum_conflict)key->exponent)" ( (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) )))) ;) (if_statement "if (iVar3 != 2) {\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3);\n  }" if (parenthesized_expression "(iVar3 != 2)" ( (binary_expression "iVar3 != 2" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3);\n  }" { comment (expression_statement "bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3);" (call_expression "bignum_byte((Bignum_conflict)key->exponent,iVar3 + -3)" identifier (argument_list "((Bignum_conflict)key->exponent,iVar3 + -3)" ( (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) , (binary_expression "iVar3 + -3" identifier + number_literal) ))) ;) })) (expression_statement "MD5Final(digest,&md5c);" (call_expression "MD5Final(digest,&md5c)" identifier (argument_list "(digest,&md5c)" ( identifier , (pointer_expression "&md5c" & identifier) ))) ;) (expression_statement "iVar3 = bignum_bitcount((Bignum_conflict)key->modulus);" (assignment_expression "iVar3 = bignum_bitcount((Bignum_conflict)key->modulus)" identifier = (call_expression "bignum_bitcount((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(buffer,1,0x58,PTR_E0_218__00121388 + 0x3988,iVar3);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(buffer,1,0x58,PTR_E0_218__00121388 + 0x3988,iVar3)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(buffer,1,0x58,PTR_E0_218__00121388 + 0x3988,iVar3)" ( identifier , number_literal , number_literal , (binary_expression "PTR_E0_218__00121388 + 0x3988" identifier + number_literal) , identifier ))) ;) (expression_statement "puVar8 = PTR_E0_218__00121388;" (assignment_expression "puVar8 = PTR_E0_218__00121388" identifier = identifier) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "puVar7 = PTR_E0_218__00121388 + -0x5054;" (assignment_expression "puVar7 = PTR_E0_218__00121388 + -0x5054" identifier = (binary_expression "PTR_E0_218__00121388 + -0x5054" identifier + number_literal)) ;) (expression_statement "puVar6 = PTR_data_CS_ISO8859_3_sbcs2ucs_105__00121348 + 0x2efc;" (assignment_expression "puVar6 = PTR_data_CS_ISO8859_3_sbcs2ucs_105__00121348 + 0x2efc" identifier = (binary_expression "PTR_data_CS_ISO8859_3_sbcs2ucs_105__00121348 + 0x2efc" identifier + number_literal)) ;) (do_statement "do {\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);\n      pcVar5 = buffer + iVar4;\n      if (iVar3 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);\n      bVar1 = 0xf < iVar3;\n      iVar3 = iVar3 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0]);\n    iVar3 = 2;\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);\n      pcVar5 = buffer + iVar4;\n      if (iVar3 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);\n      bVar1 = 0xf < iVar3;\n      iVar3 = iVar3 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0]);\n    iVar3 = 2;\n  }" { (while_statement "while( true ) {\n      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);\n      pcVar5 = buffer + iVar4;\n      if (iVar3 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);\n      bVar1 = 0xf < iVar3;\n      iVar3 = iVar3 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar4 = (*(code *)PTR_strlen_00122558)(buffer);\n      pcVar5 = buffer + iVar4;\n      if (iVar3 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);\n      bVar1 = 0xf < iVar3;\n      iVar3 = iVar3 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }\n    }" { (expression_statement "iVar4 = (*(code *)PTR_strlen_00122558)(buffer);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_00122558)(buffer)" identifier = (call_expression "(*(code *)PTR_strlen_00122558)(buffer)" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" ( (pointer_expression "*(code *)PTR_strlen_00122558" * (cast_expression "(code *)PTR_strlen_00122558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(buffer)" ( identifier )))) ;) (expression_statement "pcVar5 = buffer + iVar4;" (assignment_expression "pcVar5 = buffer + iVar4" identifier = (binary_expression "buffer + iVar4" identifier + identifier)) ;) (if_statement "if (iVar3 == 1) break;" if (parenthesized_expression "(iVar3 == 1)" ( (binary_expression "iVar3 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b]);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)\n                (pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar6,md5c.block[iVar3 + 0x4b])" ( identifier , number_literal , number_literal , (binary_expression "puVar8 + 0x398c" identifier + number_literal) , identifier , (subscript_expression "md5c.block[iVar3 + 0x4b]" (field_expression "md5c.block" identifier . field_identifier) [ (binary_expression "iVar3 + 0x4b" identifier + number_literal) ]) ))) ;) (expression_statement "bVar1 = 0xf < iVar3;" (assignment_expression "bVar1 = 0xf < iVar3" identifier = (binary_expression "0xf < iVar3" number_literal < identifier)) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        (*(code *)PTR_strncpy_00122470)(str,buffer,len);\n        str[len + -1] = '\0';\n        pcVar5 = str;\n        if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }\n        if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }\n        puVar8 = PTR___stack_chk_fail_001222ec;\n        (*(code *)PTR___stack_chk_fail_001222ec)();\n        iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));\n        if (iVar2 == 0) {\n          return;\n        }\n        a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));\n        bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));\n                    /* WARNING: Subroutine does not return */\n        freebn(a);\n      }" { (expression_statement "(*(code *)PTR_strncpy_00122470)(str,buffer,len);" (call_expression "(*(code *)PTR_strncpy_00122470)(str,buffer,len)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" ( (pointer_expression "*(code *)PTR_strncpy_00122470" * (cast_expression "(code *)PTR_strncpy_00122470" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(str,buffer,len)" ( identifier , identifier , identifier ))) ;) (expression_statement "str[len + -1] = '\0';" (assignment_expression "str[len + -1] = '\0'" (subscript_expression "str[len + -1]" identifier [ (binary_expression "len + -1" identifier + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar5 = str;" (assignment_expression "pcVar5 = str" identifier = identifier) ;) (if_statement "if (key->comment != (char *)0x0) {\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }" if (parenthesized_expression "(key->comment != (char *)0x0)" ( (binary_expression "key->comment != (char *)0x0" (field_expression "key->comment" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar3 = (*(code *)PTR_strlen_00122558)();\n          if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }\n        }" { (expression_statement "iVar3 = (*(code *)PTR_strlen_00122558)();" (assignment_expression "iVar3 = (*(code *)PTR_strlen_00122558)()" identifier = (call_expression "(*(code *)PTR_strlen_00122558)()" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" ( (pointer_expression "*(code *)PTR_strlen_00122558" * (cast_expression "(code *)PTR_strlen_00122558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar3 < len + -1) {\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }" if (parenthesized_expression "(iVar3 < len + -1)" ( (binary_expression "iVar3 < len + -1" identifier < (binary_expression "len + -1" identifier + number_literal)) )) (compound_statement "{\n            str[iVar3] = ' ';\n            pcVar5 = str + iVar3 + 1;\n            (*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);\n            str[len + -1] = '\0';\n          }" { (expression_statement "str[iVar3] = ' ';" (assignment_expression "str[iVar3] = ' '" (subscript_expression "str[iVar3]" identifier [ identifier ]) = (char_literal "' '" ' character ')) ;) (expression_statement "pcVar5 = str + iVar3 + 1;" (assignment_expression "pcVar5 = str + iVar3 + 1" identifier = (binary_expression "str + iVar3 + 1" (binary_expression "str + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1);" (call_expression "(*(code *)PTR_strncpy_00122470)(pcVar5,key->comment,(len - iVar3) + -1)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" ( (pointer_expression "*(code *)PTR_strncpy_00122470" * (cast_expression "(code *)PTR_strncpy_00122470" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar5,key->comment,(len - iVar3) + -1)" ( identifier , (field_expression "key->comment" identifier -> field_identifier) , (binary_expression "(len - iVar3) + -1" (parenthesized_expression "(len - iVar3)" ( (binary_expression "len - iVar3" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "str[len + -1] = '\0';" (assignment_expression "str[len + -1] = '\0'" (subscript_expression "str[len + -1]" identifier [ (binary_expression "len + -1" identifier + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) })) (if_statement "if (iVar2 == *(int *)PTR___stack_chk_guard_00122654) {\n          return;\n        }" if (parenthesized_expression "(iVar2 == *(int *)PTR___stack_chk_guard_00122654)" ( (binary_expression "iVar2 == *(int *)PTR___stack_chk_guard_00122654" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_00122654" * (cast_expression "(int *)PTR___stack_chk_guard_00122654" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "puVar8 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar8 = PTR___stack_chk_fail_001222ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" * (cast_expression "(code *)PTR___stack_chk_fail_001222ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4));" (assignment_expression "iVar2 = bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4))" identifier = (call_expression "bignum_cmp(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4))" identifier (argument_list "(*(Bignum_conflict *)(pcVar5 + 8),\n                           (Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4))" ( (pointer_expression "*(Bignum_conflict *)(pcVar5 + 8)" * (cast_expression "(Bignum_conflict *)(pcVar5 + 8)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 8)" ( (binary_expression "pcVar5 + 8" identifier + number_literal) )))) , (binary_expression "(Bignum_conflict)**(undefined4 **)(puVar8 + 0x958f4)" (parenthesized_expression "(Bignum_conflict)" ( identifier )) * (pointer_expression "*(undefined4 **)(puVar8 + 0x958f4)" * (cast_expression "(undefined4 **)(puVar8 + 0x958f4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x958f4)" ( (binary_expression "puVar8 + 0x958f4" identifier + number_literal) ))))) )))) ;) (if_statement "if (iVar2 == 0) {\n          return;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18));" (assignment_expression "a = bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18))" identifier = (call_expression "bigmul(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18))" identifier (argument_list "(*(Bignum_conflict *)(pcVar5 + 0x14),*(Bignum_conflict *)(pcVar5 + 0x18))" ( (pointer_expression "*(Bignum_conflict *)(pcVar5 + 0x14)" * (cast_expression "(Bignum_conflict *)(pcVar5 + 0x14)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x14)" ( (binary_expression "pcVar5 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(Bignum_conflict *)(pcVar5 + 0x18)" * (cast_expression "(Bignum_conflict *)(pcVar5 + 0x18)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x18)" ( (binary_expression "pcVar5 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8));" (call_expression "bignum_cmp(a,*(Bignum_conflict *)(pcVar5 + 8))" identifier (argument_list "(a,*(Bignum_conflict *)(pcVar5 + 8))" ( identifier , (pointer_expression "*(Bignum_conflict *)(pcVar5 + 8)" * (cast_expression "(Bignum_conflict *)(pcVar5 + 8)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 8)" ( (binary_expression "pcVar5 + 8" identifier + number_literal) )))) ))) ;) comment (expression_statement "freebn(a);" (call_expression "freebn(a)" identifier (argument_list "(a)" ( identifier ))) ;) })) })) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0]);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar5,1,0xffffffff,puVar8 + 0x398c,puVar7,digest[0])" ( identifier , number_literal , number_literal , (binary_expression "puVar8 + 0x398c" identifier + number_literal) , identifier , (subscript_expression "digest[0]" identifier [ number_literal ]) ))) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}\n\n" (function_definition "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}" type_identifier (function_declarator "rsa_fingerprint(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 local_f1;" type_identifier identifier ;) (declaration "undefined1 auStack_f0 [91];" type_identifier (array_declarator "auStack_f0 [91]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_95 [17];" type_identifier (array_declarator "auStack_95 [17]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_84 [88];" type_identifier (array_declarator "auStack_84 [88]" identifier [ number_literal ]) ;) (declaration "uint local_2c;" type_identifier identifier ;) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_00122654;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_00122654" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" * (cast_expression "(uint *)PTR___stack_chk_guard_00122654" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "MD5Init(auStack_f0);" (call_expression "MD5Init(auStack_f0)" identifier (argument_list "(auStack_f0)" ( identifier ))) ;) (expression_statement "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));" (assignment_expression "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }" if (parenthesized_expression "(iVar2 != 2)" ( (binary_expression "iVar2 != 2" identifier != number_literal) )) (compound_statement "{\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }" { (expression_statement "iVar2 = iVar2 + -3;" (assignment_expression "iVar2 = iVar2 + -3" identifier = (binary_expression "iVar2 + -3" identifier + number_literal)) ;) (do_statement "do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);" do (compound_statement "{\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    }" { (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 8),iVar2)" identifier (argument_list "(*(undefined4 *)(param_3 + 8),iVar2)" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));" (assignment_expression "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier = (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = iVar2 + -3;" (assignment_expression "iVar7 = iVar2 + -3" identifier = (binary_expression "iVar2 + -3" identifier + number_literal)) ;) (if_statement "if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }" if (parenthesized_expression "(iVar2 != 2)" ( (binary_expression "iVar2 != 2" identifier != number_literal) )) (compound_statement "{\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }" { (do_statement "do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);" do (compound_statement "{\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    }" { (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7)" identifier = (call_expression "bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7)" identifier (argument_list "(*(undefined4 *)(param_3 + 0xc),iVar7)" ( (pointer_expression "*(undefined4 *)(param_3 + 0xc)" * (cast_expression "(undefined4 *)(param_3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" identifier (argument_list "(auStack_f0,&local_f1,1)" ( identifier , (pointer_expression "&local_f1" & identifier) , number_literal ))) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != -1)" ( (binary_expression "iVar7 != -1" identifier != number_literal) )) ;) })) (expression_statement "MD5Final(auStack_95 + 1,auStack_f0);" (call_expression "MD5Final(auStack_95 + 1,auStack_f0)" identifier (argument_list "(auStack_95 + 1,auStack_f0)" ( (binary_expression "auStack_95 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));" (assignment_expression "uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier = (call_expression "bignum_bitcount(*(undefined4 *)(param_3 + 8))" identifier (argument_list "(*(undefined4 *)(param_3 + 8))" ( (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3)" ( identifier , number_literal , number_literal , (binary_expression "PTR_DAT_00121388 + 0x3988" identifier + number_literal) , identifier ))) ;) (expression_statement "puVar10 = PTR_DAT_00121388;" (assignment_expression "puVar10 = PTR_DAT_00121388" identifier = identifier) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "puVar9 = PTR_DAT_00121388 + -0x5054;" (assignment_expression "puVar9 = PTR_DAT_00121388 + -0x5054" identifier = (binary_expression "PTR_DAT_00121388 + -0x5054" identifier + number_literal)) ;) (expression_statement "puVar8 = PTR_DAT_00121348 + 0x2efc;" (assignment_expression "puVar8 = PTR_DAT_00121348 + 0x2efc" identifier = (binary_expression "PTR_DAT_00121348 + 0x2efc" identifier + number_literal)) ;) (do_statement "do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );" do (compound_statement "{\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  }" { (while_statement "while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }" { (expression_statement "iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);" (assignment_expression "iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84)" identifier = (call_expression "(*(code *)PTR_strlen_00122558)(auStack_84)" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" ( (pointer_expression "*(code *)PTR_strlen_00122558" * (cast_expression "(code *)PTR_strlen_00122558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_84)" ( identifier )))) ;) (expression_statement "puVar6 = auStack_84 + iVar7;" (assignment_expression "puVar6 = auStack_84 + iVar7" identifier = (binary_expression "auStack_84 + iVar7" identifier + identifier)) ;) (if_statement "if (iVar2 == 1) break;" if (parenthesized_expression "(iVar2 == 1)" ( (binary_expression "iVar2 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2])" ( identifier , number_literal , number_literal , (binary_expression "puVar10 + 0x398c" identifier + number_literal) , identifier , (subscript_expression "auStack_95[iVar2]" identifier [ identifier ]) ))) ;) (expression_statement "bVar1 = 0xf < iVar2;" (assignment_expression "bVar1 = 0xf < iVar2" identifier = (binary_expression "0xf < iVar2" number_literal < identifier)) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }" { (expression_statement "(*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);" (call_expression "(*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" ( (pointer_expression "*(code *)PTR_strncpy_00122470" * (cast_expression "(code *)PTR_strncpy_00122470" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,auStack_84,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar6 = (undefined1 *)(param_1 + param_2 + -1);" (assignment_expression "puVar6 = (undefined1 *)(param_1 + param_2 + -1)" identifier = (cast_expression "(undefined1 *)(param_1 + param_2 + -1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2 + -1)" ( (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" identifier + identifier) + number_literal) )))) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" identifier = identifier) ;) (if_statement "if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_3 + 0x20) != 0)" ( (binary_expression "*(int *)(param_3 + 0x20) != 0" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }" { (expression_statement "iVar7 = (*(code *)PTR_strlen_00122558)();" (assignment_expression "iVar7 = (*(code *)PTR_strlen_00122558)()" identifier = (call_expression "(*(code *)PTR_strlen_00122558)()" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" ( (pointer_expression "*(code *)PTR_strlen_00122558" * (cast_expression "(code *)PTR_strlen_00122558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }" if (parenthesized_expression "(iVar7 < param_2 + -1)" ( (binary_expression "iVar7 < param_2 + -1" identifier < (binary_expression "param_2 + -1" identifier + number_literal)) )) (compound_statement "{\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }" { (expression_statement "*(undefined1 *)(param_1 + iVar7) = 0x20;" (assignment_expression "*(undefined1 *)(param_1 + iVar7) = 0x20" (pointer_expression "*(undefined1 *)(param_1 + iVar7)" * (cast_expression "(undefined1 *)(param_1 + iVar7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar7)" ( (binary_expression "param_1 + iVar7" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar2 = param_1 + iVar7 + 1;" (assignment_expression "iVar2 = param_1 + iVar7 + 1" identifier = (binary_expression "param_1 + iVar7 + 1" (binary_expression "param_1 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "(*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);" (call_expression "(*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" ( (pointer_expression "*(code *)PTR_strncpy_00122470" * (cast_expression "(code *)PTR_strncpy_00122470" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1)" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x20)" * (cast_expression "(undefined4 *)(param_3 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) , (binary_expression "(param_2 - iVar7) + -1" (parenthesized_expression "(param_2 - iVar7)" ( (binary_expression "param_2 - iVar7" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) })) })) (if_statement "if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }" if (parenthesized_expression "(local_2c != *(uint *)PTR___stack_chk_guard_00122654)" ( (binary_expression "local_2c != *(uint *)PTR___stack_chk_guard_00122654" identifier != (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" * (cast_expression "(uint *)PTR___stack_chk_guard_00122654" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }" { (expression_statement "puVar10 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar10 = PTR___stack_chk_fail_001222ec" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" * (cast_expression "(code *)PTR___stack_chk_fail_001222ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));" (assignment_expression "uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" identifier (argument_list "(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" ( (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) , (pointer_expression "**(undefined4 **)(puVar10 + 0x958f4)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x958f4)" * (cast_expression "(undefined4 **)(puVar10 + 0x958f4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x958f4)" ( (binary_expression "puVar10 + 0x958f4" identifier + number_literal) ))))) )))) ;) (if_statement "if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }" { (expression_statement "uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));" (assignment_expression "iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8))" identifier = (call_expression "bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8))" identifier (argument_list "(uVar3,*(undefined4 *)(iVar2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }" { (expression_statement "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "copybn(*(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar3);" (call_expression "decbn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);" (assignment_expression "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier = (call_expression "modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier (argument_list "(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" ( (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier = (call_expression "bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier (argument_list "(uVar5,**(undefined4 **)(puVar10 + 0x95910))" ( identifier , (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" * (cast_expression "(undefined4 **)(puVar10 + 0x95910)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x95910)" ( (binary_expression "puVar10 + 0x95910" identifier + number_literal) ))))) )))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }" { (expression_statement "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "copybn(*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "decbn(uVar3);" (call_expression "decbn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);" (assignment_expression "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier = (call_expression "modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" identifier (argument_list "(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" ( (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier = (call_expression "bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" identifier (argument_list "(uVar5,**(undefined4 **)(puVar10 + 0x95910))" ( identifier , (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" * (cast_expression "(undefined4 **)(puVar10 + 0x95910)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x95910)" ( (binary_expression "puVar10 + 0x95910" identifier + number_literal) ))))) )))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (if_statement "if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }" { (expression_statement "iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }" if (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) (compound_statement "{\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }" { (expression_statement "uVar3 = *(undefined4 *)(iVar2 + 0x14);" (assignment_expression "uVar3 = *(undefined4 *)(iVar2 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);" (assignment_expression "*(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18)" (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "freebn(*(undefined4 *)(iVar2 + 0x1c));" (call_expression "freebn(*(undefined4 *)(iVar2 + 0x1c))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x1c))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" * (cast_expression "(undefined4 *)(iVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "*(int *)(iVar2 + 0x1c) = iVar7;" (assignment_expression "*(int *)(iVar2 + 0x1c) = iVar7" (pointer_expression "*(int *)(iVar2 + 0x1c)" * (cast_expression "(int *)(iVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar7 == 0) {\n                      return 0;\n                    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                      return 0;\n                    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" identifier = (call_expression "modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" * (cast_expression "(undefined4 *)(iVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910))" identifier = (call_expression "bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910))" identifier (argument_list "(uVar3,**(undefined4 **)(puVar10 + 0x95910))" ( identifier , (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" * (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" * (cast_expression "(undefined4 **)(puVar10 + 0x95910)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x95910)" ( (binary_expression "puVar10 + 0x95910" identifier + number_literal) ))))) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar4 = (uint)(iVar2 == 0);" (assignment_expression "uVar4 = (uint)(iVar2 == 0)" identifier = (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n                  uVar4 = 0;\n                }" else (compound_statement "{\n                  uVar4 = 0;\n                }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }))) })) }) (else_clause "else {\n              uVar4 = 0;\n            }" else (compound_statement "{\n              uVar4 = 0;\n            }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }))) })) (return_statement "return uVar4;" return identifier ;) })) (return_statement "return *(uint *)PTR___stack_chk_guard_00122654;" return (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" * (cast_expression "(uint *)PTR___stack_chk_guard_00122654" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) })) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" ( (pointer_expression "*(code *)PTR___sprintf_chk_00122538" * (cast_expression "(code *)PTR___sprintf_chk_00122538" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])" ( identifier , number_literal , number_literal , (binary_expression "puVar10 + 0x398c" identifier + number_literal) , identifier , (subscript_expression "auStack_95[1]" identifier [ number_literal ]) ))) ;) (expression_statement "iVar2 = 2;" (assignment_expression "iVar2 = 2" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , LIT , (binary_expression IDENT + LIT) , IDENT , (subscript_expression IDENT [ IDENT ]) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (return_statement return IDENT ;) })) (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , LIT , (binary_expression IDENT + LIT) , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint rsa_fingerprint(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}" (type_identifier "uint") (function_declarator "rsa_fingerprint(int param_1,int param_2,int param_3)" (identifier "rsa_fingerprint") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined *puVar9;\n  undefined *puVar10;\n  undefined1 local_f1;\n  undefined1 auStack_f0 [91];\n  undefined1 auStack_95 [17];\n  undefined1 auStack_84 [88];\n  uint local_2c;\n  \n  local_2c = *(uint *)PTR___stack_chk_guard_00122654;\n  MD5Init(auStack_f0);\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));\n  if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }\n  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));\n  iVar7 = iVar2 + -3;\n  if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }\n  MD5Final(auStack_95 + 1,auStack_f0);\n  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));\n  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);\n  puVar10 = PTR_DAT_00121388;\n  iVar2 = 1;\n  puVar9 = PTR_DAT_00121388 + -0x5054;\n  puVar8 = PTR_DAT_00121348 + 0x2efc;\n  do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined1 local_f1;" (type_identifier "undefined1") (identifier "local_f1") (; ";")) (declaration "undefined1 auStack_f0 [91];" (type_identifier "undefined1") (array_declarator "auStack_f0 [91]" (identifier "auStack_f0") ([ "[") (number_literal "91") (] "]")) (; ";")) (declaration "undefined1 auStack_95 [17];" (type_identifier "undefined1") (array_declarator "auStack_95 [17]" (identifier "auStack_95") ([ "[") (number_literal "17") (] "]")) (; ";")) (declaration "undefined1 auStack_84 [88];" (type_identifier "undefined1") (array_declarator "auStack_84 [88]" (identifier "auStack_84") ([ "[") (number_literal "88") (] "]")) (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (expression_statement "local_2c = *(uint *)PTR___stack_chk_guard_00122654;" (assignment_expression "local_2c = *(uint *)PTR___stack_chk_guard_00122654" (identifier "local_2c") (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_00122654" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00122654")))) (; ";")) (expression_statement "MD5Init(auStack_f0);" (call_expression "MD5Init(auStack_f0)" (identifier "MD5Init") (argument_list "(auStack_f0)" (( "(") (identifier "auStack_f0") () ")"))) (; ";")) (expression_statement "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));" (assignment_expression "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" (identifier "iVar2") (= "=") (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 8))" (identifier "ssh1_bignum_length") (argument_list "(*(undefined4 *)(param_3 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 8)" (* "*") (cast_expression "(undefined4 *)(param_3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar2 != 2) {\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }" (if "if") (parenthesized_expression "(iVar2 != 2)" (( "(") (binary_expression "iVar2 != 2" (identifier "iVar2") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    iVar2 = iVar2 + -3;\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);\n  }" ({ "{") (expression_statement "iVar2 = iVar2 + -3;" (assignment_expression "iVar2 = iVar2 + -3" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -3" (identifier "iVar2") (+ "+") (number_literal "-3"))) (; ";")) (do_statement "do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    } while (iVar2 != -1);" (do "do") (compound_statement "{\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar2 = iVar2 + -1;\n    }" ({ "{") (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2)" (identifier "local_f1") (= "=") (call_expression "bignum_byte(*(undefined4 *)(param_3 + 8),iVar2)" (identifier "bignum_byte") (argument_list "(*(undefined4 *)(param_3 + 8),iVar2)" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 8)" (* "*") (cast_expression "(undefined4 *)(param_3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "iVar2") () ")")))) (; ";")) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" (identifier "MD5Update") (argument_list "(auStack_f0,&local_f1,1)" (( "(") (identifier "auStack_f0") (, ",") (pointer_expression "&local_f1" (& "&") (identifier "local_f1")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != -1)" (( "(") (binary_expression "iVar2 != -1" (identifier "iVar2") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));" (assignment_expression "iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" (identifier "iVar2") (= "=") (call_expression "ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc))" (identifier "ssh1_bignum_length") (argument_list "(*(undefined4 *)(param_3 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar7 = iVar2 + -3;" (assignment_expression "iVar7 = iVar2 + -3" (identifier "iVar7") (= "=") (binary_expression "iVar2 + -3" (identifier "iVar2") (+ "+") (number_literal "-3"))) (; ";")) (if_statement "if (iVar2 != 2) {\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }" (if "if") (parenthesized_expression "(iVar2 != 2)" (( "(") (binary_expression "iVar2 != 2" (identifier "iVar2") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);\n  }" ({ "{") (do_statement "do {\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    } while (iVar7 != -1);" (do "do") (compound_statement "{\n      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);\n      MD5Update(auStack_f0,&local_f1,1);\n      iVar7 = iVar7 + -1;\n    }" ({ "{") (expression_statement "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);" (assignment_expression "local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7)" (identifier "local_f1") (= "=") (call_expression "bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7)" (identifier "bignum_byte") (argument_list "(*(undefined4 *)(param_3 + 0xc),iVar7)" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar7") () ")")))) (; ";")) (expression_statement "MD5Update(auStack_f0,&local_f1,1);" (call_expression "MD5Update(auStack_f0,&local_f1,1)" (identifier "MD5Update") (argument_list "(auStack_f0,&local_f1,1)" (( "(") (identifier "auStack_f0") (, ",") (pointer_expression "&local_f1" (& "&") (identifier "local_f1")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 != -1)" (( "(") (binary_expression "iVar7 != -1" (identifier "iVar7") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "MD5Final(auStack_95 + 1,auStack_f0);" (call_expression "MD5Final(auStack_95 + 1,auStack_f0)" (identifier "MD5Final") (argument_list "(auStack_95 + 1,auStack_f0)" (( "(") (binary_expression "auStack_95 + 1" (identifier "auStack_95") (+ "+") (number_literal "1")) (, ",") (identifier "auStack_f0") () ")"))) (; ";")) (expression_statement "uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));" (assignment_expression "uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8))" (identifier "uVar3") (= "=") (call_expression "bignum_bitcount(*(undefined4 *)(param_3 + 8))" (identifier "bignum_bitcount") (argument_list "(*(undefined4 *)(param_3 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_3 + 8)" (* "*") (cast_expression "(undefined4 *)(param_3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3)" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" (( "(") (pointer_expression "*(code *)PTR___sprintf_chk_00122538" (* "*") (cast_expression "(code *)PTR___sprintf_chk_00122538" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___sprintf_chk_00122538"))) () ")")) (argument_list "(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3)" (( "(") (identifier "auStack_84") (, ",") (number_literal "1") (, ",") (number_literal "0x58") (, ",") (binary_expression "PTR_DAT_00121388 + 0x3988" (identifier "PTR_DAT_00121388") (+ "+") (number_literal "0x3988")) (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "puVar10 = PTR_DAT_00121388;" (assignment_expression "puVar10 = PTR_DAT_00121388" (identifier "puVar10") (= "=") (identifier "PTR_DAT_00121388")) (; ";")) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar9 = PTR_DAT_00121388 + -0x5054;" (assignment_expression "puVar9 = PTR_DAT_00121388 + -0x5054" (identifier "puVar9") (= "=") (binary_expression "PTR_DAT_00121388 + -0x5054" (identifier "PTR_DAT_00121388") (+ "+") (number_literal "-0x5054"))) (; ";")) (expression_statement "puVar8 = PTR_DAT_00121348 + 0x2efc;" (assignment_expression "puVar8 = PTR_DAT_00121348 + 0x2efc" (identifier "puVar8") (= "=") (binary_expression "PTR_DAT_00121348 + 0x2efc" (identifier "PTR_DAT_00121348") (+ "+") (number_literal "0x2efc"))) (; ";")) (do_statement "do {\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  } while( true );" (do "do") (compound_statement "{\n    while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }\n    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;\n    iVar2 = 2;\n  }" ({ "{") (while_statement "while( true ) {\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);\n      puVar6 = auStack_84 + iVar7;\n      if (iVar2 == 1) break;\n      (*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);\n      bVar1 = 0xf < iVar2;\n      iVar2 = iVar2 + 1;\n      if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }\n    }" ({ "{") (expression_statement "iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);" (assignment_expression "iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR_strlen_00122558)(auStack_84)" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" (( "(") (pointer_expression "*(code *)PTR_strlen_00122558" (* "*") (cast_expression "(code *)PTR_strlen_00122558" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00122558"))) () ")")) (argument_list "(auStack_84)" (( "(") (identifier "auStack_84") () ")")))) (; ";")) (expression_statement "puVar6 = auStack_84 + iVar7;" (assignment_expression "puVar6 = auStack_84 + iVar7" (identifier "puVar6") (= "=") (binary_expression "auStack_84 + iVar7" (identifier "auStack_84") (+ "+") (identifier "iVar7"))) (; ";")) (if_statement "if (iVar2 == 1) break;" (if "if") (parenthesized_expression "(iVar2 == 1)" (( "(") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);" (call_expression "(*(code *)PTR___sprintf_chk_00122538)\n                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" (( "(") (pointer_expression "*(code *)PTR___sprintf_chk_00122538" (* "*") (cast_expression "(code *)PTR___sprintf_chk_00122538" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___sprintf_chk_00122538"))) () ")")) (argument_list "(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2])" (( "(") (identifier "puVar6") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (binary_expression "puVar10 + 0x398c" (identifier "puVar10") (+ "+") (number_literal "0x398c")) (, ",") (identifier "puVar8") (, ",") (subscript_expression "auStack_95[iVar2]" (identifier "auStack_95") ([ "[") (identifier "iVar2") (] "]")) () ")"))) (; ";")) (expression_statement "bVar1 = 0xf < iVar2;" (assignment_expression "bVar1 = 0xf < iVar2" (identifier "bVar1") (= "=") (binary_expression "0xf < iVar2" (number_literal "0xf") (< "<") (identifier "iVar2"))) (; ";")) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) {\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);\n        puVar6 = (undefined1 *)(param_1 + param_2 + -1);\n        *puVar6 = 0;\n        iVar2 = param_1;\n        if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }\n        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }\n        return *(uint *)PTR___stack_chk_guard_00122654;\n      }" ({ "{") (expression_statement "(*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);" (call_expression "(*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" (( "(") (pointer_expression "*(code *)PTR_strncpy_00122470" (* "*") (cast_expression "(code *)PTR_strncpy_00122470" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strncpy_00122470"))) () ")")) (argument_list "(param_1,auStack_84,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "auStack_84") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "puVar6 = (undefined1 *)(param_1 + param_2 + -1);" (assignment_expression "puVar6 = (undefined1 *)(param_1 + param_2 + -1)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(param_1 + param_2 + -1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + param_2 + -1)" (( "(") (binary_expression "param_1 + param_2 + -1" (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" (identifier "iVar2") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (*(int *)(param_3 + 0x20) != 0) {\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x20) != 0)" (( "(") (binary_expression "*(int *)(param_3 + 0x20) != 0" (pointer_expression "*(int *)(param_3 + 0x20)" (* "*") (cast_expression "(int *)(param_3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar7 = (*(code *)PTR_strlen_00122558)();\n          if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }\n        }" ({ "{") (expression_statement "iVar7 = (*(code *)PTR_strlen_00122558)();" (assignment_expression "iVar7 = (*(code *)PTR_strlen_00122558)()" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR_strlen_00122558)()" (parenthesized_expression "(*(code *)PTR_strlen_00122558)" (( "(") (pointer_expression "*(code *)PTR_strlen_00122558" (* "*") (cast_expression "(code *)PTR_strlen_00122558" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00122558"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar7 < param_2 + -1) {\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }" (if "if") (parenthesized_expression "(iVar7 < param_2 + -1)" (( "(") (binary_expression "iVar7 < param_2 + -1" (identifier "iVar7") (< "<") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) () ")")) (compound_statement "{\n            *(undefined1 *)(param_1 + iVar7) = 0x20;\n            iVar2 = param_1 + iVar7 + 1;\n            (*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);\n            *puVar6 = 0;\n          }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + iVar7) = 0x20;" (assignment_expression "*(undefined1 *)(param_1 + iVar7) = 0x20" (pointer_expression "*(undefined1 *)(param_1 + iVar7)" (* "*") (cast_expression "(undefined1 *)(param_1 + iVar7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar7)" (( "(") (binary_expression "param_1 + iVar7" (identifier "param_1") (+ "+") (identifier "iVar7")) () ")")))) (= "=") (number_literal "0x20")) (; ";")) (expression_statement "iVar2 = param_1 + iVar7 + 1;" (assignment_expression "iVar2 = param_1 + iVar7 + 1" (identifier "iVar2") (= "=") (binary_expression "param_1 + iVar7 + 1" (binary_expression "param_1 + iVar7" (identifier "param_1") (+ "+") (identifier "iVar7")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);" (call_expression "(*(code *)PTR_strncpy_00122470)\n                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1)" (parenthesized_expression "(*(code *)PTR_strncpy_00122470)" (( "(") (pointer_expression "*(code *)PTR_strncpy_00122470" (* "*") (cast_expression "(code *)PTR_strncpy_00122470" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strncpy_00122470"))) () ")")) (argument_list "(iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1)" (( "(") (identifier "iVar2") (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (binary_expression "(param_2 - iVar7) + -1" (parenthesized_expression "(param_2 - iVar7)" (( "(") (binary_expression "param_2 - iVar7" (identifier "param_2") (- "-") (identifier "iVar7")) () ")")) (+ "+") (number_literal "-1")) () ")"))) (; ";")) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }" (if "if") (parenthesized_expression "(local_2c != *(uint *)PTR___stack_chk_guard_00122654)" (( "(") (binary_expression "local_2c != *(uint *)PTR___stack_chk_guard_00122654" (identifier "local_2c") (!= "!=") (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_00122654" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00122654")))) () ")")) (compound_statement "{\n          puVar10 = PTR___stack_chk_fail_001222ec;\n          (*(code *)PTR___stack_chk_fail_001222ec)();\n          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));\n          if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }\n          return uVar4;\n        }" ({ "{") (expression_statement "puVar10 = PTR___stack_chk_fail_001222ec;" (assignment_expression "puVar10 = PTR___stack_chk_fail_001222ec" (identifier "puVar10") (= "=") (identifier "PTR___stack_chk_fail_001222ec")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_001222ec)();" (call_expression "(*(code *)PTR___stack_chk_fail_001222ec)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001222ec)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_001222ec" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_001222ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_001222ec"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));" (assignment_expression "uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" (identifier "uVar4") (= "=") (call_expression "bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" (identifier "bignum_cmp") (argument_list "(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "**(undefined4 **)(puVar10 + 0x958f4)" (* "*") (pointer_expression "*(undefined4 **)(puVar10 + 0x958f4)" (* "*") (cast_expression "(undefined4 **)(puVar10 + 0x958f4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x958f4)" (( "(") (binary_expression "puVar10 + 0x958f4" (identifier "puVar10") (+ "+") (number_literal "0x958f4")) () ")"))))) () ")")))) (; ";")) (if_statement "if (uVar4 != 0) {\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));\n            freebn(uVar3);\n            if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\n          }" ({ "{") (expression_statement "uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" (identifier "uVar3") (= "=") (call_expression "bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" (identifier "bigmul") (argument_list "(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));" (assignment_expression "iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8))" (identifier "iVar7") (= "=") (call_expression "bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8))" (identifier "bignum_cmp") (argument_list "(uVar3,*(undefined4 *)(iVar2 + 8))" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (iVar7 == 0) {\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }\n            else {\n              uVar4 = 0;\n            }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));\n              decbn(uVar3);\n              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n              freebn(uVar3);\n              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n              freebn(uVar5);\n              uVar4 = 0;\n              if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }\n            }" ({ "{") (expression_statement "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14))" (identifier "uVar3") (= "=") (call_expression "copybn(*(undefined4 *)(iVar2 + 0x14))" (identifier "copybn") (argument_list "(*(undefined4 *)(iVar2 + 0x14))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "decbn(uVar3);" (call_expression "decbn(uVar3)" (identifier "decbn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);" (assignment_expression "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" (identifier "uVar5") (= "=") (call_expression "modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" (identifier "modmul") (argument_list "(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" (identifier "iVar7") (= "=") (call_expression "bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" (identifier "bignum_cmp") (argument_list "(uVar5,**(undefined4 **)(puVar10 + 0x95910))" (( "(") (identifier "uVar5") (, ",") (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" (* "*") (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" (* "*") (cast_expression "(undefined4 **)(puVar10 + 0x95910)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x95910)" (( "(") (binary_expression "puVar10 + 0x95910" (identifier "puVar10") (+ "+") (number_literal "0x95910")) () ")"))))) () ")")))) (; ";")) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" (identifier "freebn") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar7 == 0) {\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));\n                decbn(uVar3);\n                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);\n                freebn(uVar3);\n                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));\n                freebn(uVar5);\n                if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }\n              }" ({ "{") (expression_statement "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18))" (identifier "uVar3") (= "=") (call_expression "copybn(*(undefined4 *)(iVar2 + 0x18))" (identifier "copybn") (argument_list "(*(undefined4 *)(iVar2 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (expression_statement "decbn(uVar3);" (call_expression "decbn(uVar3)" (identifier "decbn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);" (assignment_expression "uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" (identifier "uVar5") (= "=") (call_expression "modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" (identifier "modmul") (argument_list "(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3)" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" (identifier "iVar7") (= "=") (call_expression "bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910))" (identifier "bignum_cmp") (argument_list "(uVar5,**(undefined4 **)(puVar10 + 0x95910))" (( "(") (identifier "uVar5") (, ",") (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" (* "*") (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" (* "*") (cast_expression "(undefined4 **)(puVar10 + 0x95910)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x95910)" (( "(") (binary_expression "puVar10 + 0x95910" (identifier "puVar10") (+ "+") (number_literal "0x95910")) () ")"))))) () ")")))) (; ";")) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" (identifier "freebn") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (if_statement "if (iVar7 == 0) {\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }\n                else {\n                  uVar4 = 0;\n                }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));\n                  if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }\n                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));\n                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));\n                  freebn(uVar3);\n                  uVar4 = (uint)(iVar2 == 0);\n                }" ({ "{") (expression_statement "iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" (identifier "iVar7") (= "=") (call_expression "bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" (identifier "bignum_cmp") (argument_list "(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar7 < 1) {\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }" (if "if") (parenthesized_expression "(iVar7 < 1)" (( "(") (binary_expression "iVar7 < 1" (identifier "iVar7") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                    uVar3 = *(undefined4 *)(iVar2 + 0x14);\n                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);\n                    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n                    freebn(*(undefined4 *)(iVar2 + 0x1c));\n                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));\n                    *(int *)(iVar2 + 0x1c) = iVar7;\n                    if (iVar7 == 0) {\n                      return 0;\n                    }\n                  }" ({ "{") (expression_statement "uVar3 = *(undefined4 *)(iVar2 + 0x14);" (assignment_expression "uVar3 = *(undefined4 *)(iVar2 + 0x14)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);" (assignment_expression "*(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18)" (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "freebn(*(undefined4 *)(iVar2 + 0x1c));" (call_expression "freebn(*(undefined4 *)(iVar2 + 0x1c))" (identifier "freebn") (argument_list "(*(undefined4 *)(iVar2 + 0x1c))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));" (assignment_expression "iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" (identifier "iVar7") (= "=") (call_expression "modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" (identifier "modinv") (argument_list "(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "*(int *)(iVar2 + 0x1c) = iVar7;" (assignment_expression "*(int *)(iVar2 + 0x1c) = iVar7" (pointer_expression "*(int *)(iVar2 + 0x1c)" (* "*") (cast_expression "(int *)(iVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar7 == 0) {\n                      return 0;\n                    }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      return 0;\n                    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14));" (assignment_expression "uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" (identifier "uVar3") (= "=") (call_expression "modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" (identifier "modmul") (argument_list "(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),\n                                 *(undefined4 *)(iVar2 + 0x14))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));" (assignment_expression "iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910))" (identifier "iVar2") (= "=") (call_expression "bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910))" (identifier "bignum_cmp") (argument_list "(uVar3,**(undefined4 **)(puVar10 + 0x95910))" (( "(") (identifier "uVar3") (, ",") (pointer_expression "**(undefined4 **)(puVar10 + 0x95910)" (* "*") (pointer_expression "*(undefined4 **)(puVar10 + 0x95910)" (* "*") (cast_expression "(undefined4 **)(puVar10 + 0x95910)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x95910)" (( "(") (binary_expression "puVar10 + 0x95910" (identifier "puVar10") (+ "+") (number_literal "0x95910")) () ")"))))) () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar4 = (uint)(iVar2 == 0);" (assignment_expression "uVar4 = (uint)(iVar2 == 0)" (identifier "uVar4") (= "=") (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                  uVar4 = 0;\n                }" (else "else") (compound_statement "{\n                  uVar4 = 0;\n                }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n              uVar4 = 0;\n            }" (else "else") (compound_statement "{\n              uVar4 = 0;\n            }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (return_statement "return *(uint *)PTR___stack_chk_guard_00122654;" (return "return") (pointer_expression "*(uint *)PTR___stack_chk_guard_00122654" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_00122654" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00122654"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "(*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])\n    ;" (call_expression "(*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])" (parenthesized_expression "(*(code *)PTR___sprintf_chk_00122538)" (( "(") (pointer_expression "*(code *)PTR___sprintf_chk_00122538" (* "*") (cast_expression "(code *)PTR___sprintf_chk_00122538" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___sprintf_chk_00122538"))) () ")")) (argument_list "(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])" (( "(") (identifier "puVar6") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (binary_expression "puVar10 + 0x398c" (identifier "puVar10") (+ "+") (number_literal "0x398c")) (, ",") (identifier "puVar9") (, ",") (subscript_expression "auStack_95[1]" (identifier "auStack_95") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "iVar2 = 2;" (assignment_expression "iVar2 = 2" (identifier "iVar2") (= "=") (number_literal "2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void function_1(char *var_13,int var_12,type_1 *key)

{
  bool bVar1;
  int var_14;
  int var_3;
  int var_10;
  type_2 a;
  char *var_16;
  type_3 *puVar6;
  type_3 *puVar7;
  type_3 *var_11;
  type_4 c;
  type_5 md5c;
  type_4 digest [16];
  char var_9 [88];
  
  var_14 = *(int *)PTR___stack_chk_guard_00122654;
  var_1(&md5c);
  var_3 = var_2((type_2)key->modulus);
  if (var_3 != 2) {
                    /* WARNING: Subroutine does not return */
    var_4((type_2)key->modulus,var_3 + -3);
  }
  var_3 = var_2((type_2)key->exponent);
  if (var_3 != 2) {
                    /* WARNING: Subroutine does not return */
    var_4((type_2)key->exponent,var_3 + -3);
  }
  var_5(digest,&md5c);
  var_3 = var_6((type_2)key->modulus);
  (*(type_6 *)PTR___sprintf_chk_00122538)(var_9,1,0x58,var_7 + 0x3988,var_3);
  var_11 = var_7;
  var_3 = 1;
  puVar7 = var_7 + -0x5054;
  puVar6 = var_8 + 0x2efc;
  do {
    while( true ) {
      var_10 = (*(type_6 *)PTR_strlen_00122558)(var_9);
      var_16 = var_9 + var_10;
      if (var_3 == 1) break;
      (*(type_6 *)PTR___sprintf_chk_00122538)
                (var_16,1,0xffffffff,var_11 + 0x398c,puVar6,md5c.block[var_3 + 0x4b]);
      bVar1 = 0xf < var_3;
      var_3 = var_3 + 1;
      if (bVar1) {
        (*(type_6 *)PTR_strncpy_00122470)(var_13,var_9,var_12);
        var_13[var_12 + -1] = '\0';
        var_16 = var_13;
        if (key->comment != (char *)0x0) {
          var_3 = (*(type_6 *)PTR_strlen_00122558)();
          if (var_3 < var_12 + -1) {
            var_13[var_3] = ' ';
            var_16 = var_13 + var_3 + 1;
            (*(type_6 *)PTR_strncpy_00122470)(var_16,key->comment,(var_12 - var_3) + -1);
            var_13[var_12 + -1] = '\0';
          }
        }
        if (var_14 == *(int *)PTR___stack_chk_guard_00122654) {
          return;
        }
        var_11 = PTR___stack_chk_fail_001222ec;
        (*(type_6 *)PTR___stack_chk_fail_001222ec)();
        var_14 = var_15(*(type_2 *)(var_16 + 8),
                           (type_2)**(type_7 **)(var_11 + 0x958f4));
        if (var_14 == 0) {
          return;
        }
        a = var_17(*(type_2 *)(var_16 + 0x14),*(type_2 *)(var_16 + 0x18));
        var_15(a,*(type_2 *)(var_16 + 8));
                    /* WARNING: Subroutine does not return */
        var_18(a);
      }
    }
    (*(type_6 *)PTR___sprintf_chk_00122538)(var_16,1,0xffffffff,var_11 + 0x398c,puVar7,digest[0]);
    var_3 = 2;
  } while( true );
}


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

uint MASKED(int param_1,int param_2,int param_3)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined1 *puVar6;
  int iVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined *puVar10;
  undefined1 local_f1;
  undefined1 auStack_f0 [91];
  undefined1 auStack_95 [17];
  undefined1 auStack_84 [88];
  uint local_2c;
  
  local_2c = *(uint *)PTR___stack_chk_guard_00122654;
  MD5Init(auStack_f0);
  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 8));
  if (iVar2 != 2) {
    iVar2 = iVar2 + -3;
    do {
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 8),iVar2);
      MD5Update(auStack_f0,&local_f1,1);
      iVar2 = iVar2 + -1;
    } while (iVar2 != -1);
  }
  iVar2 = ssh1_bignum_length(*(undefined4 *)(param_3 + 0xc));
  iVar7 = iVar2 + -3;
  if (iVar2 != 2) {
    do {
      local_f1 = bignum_byte(*(undefined4 *)(param_3 + 0xc),iVar7);
      MD5Update(auStack_f0,&local_f1,1);
      iVar7 = iVar7 + -1;
    } while (iVar7 != -1);
  }
  MD5Final(auStack_95 + 1,auStack_f0);
  uVar3 = bignum_bitcount(*(undefined4 *)(param_3 + 8));
  (*(code *)PTR___sprintf_chk_00122538)(auStack_84,1,0x58,PTR_DAT_00121388 + 0x3988,uVar3);
  puVar10 = PTR_DAT_00121388;
  iVar2 = 1;
  puVar9 = PTR_DAT_00121388 + -0x5054;
  puVar8 = PTR_DAT_00121348 + 0x2efc;
  do {
    while( true ) {
      iVar7 = (*(code *)PTR_strlen_00122558)(auStack_84);
      puVar6 = auStack_84 + iVar7;
      if (iVar2 == 1) break;
      (*(code *)PTR___sprintf_chk_00122538)
                (puVar6,1,0xffffffff,puVar10 + 0x398c,puVar8,auStack_95[iVar2]);
      bVar1 = 0xf < iVar2;
      iVar2 = iVar2 + 1;
      if (bVar1) {
        (*(code *)PTR_strncpy_00122470)(param_1,auStack_84,param_2);
        puVar6 = (undefined1 *)(param_1 + param_2 + -1);
        *puVar6 = 0;
        iVar2 = param_1;
        if (*(int *)(param_3 + 0x20) != 0) {
          iVar7 = (*(code *)PTR_strlen_00122558)();
          if (iVar7 < param_2 + -1) {
            *(undefined1 *)(param_1 + iVar7) = 0x20;
            iVar2 = param_1 + iVar7 + 1;
            (*(code *)PTR_strncpy_00122470)
                      (iVar2,*(undefined4 *)(param_3 + 0x20),(param_2 - iVar7) + -1);
            *puVar6 = 0;
          }
        }
        if (local_2c != *(uint *)PTR___stack_chk_guard_00122654) {
          puVar10 = PTR___stack_chk_fail_001222ec;
          (*(code *)PTR___stack_chk_fail_001222ec)();
          uVar4 = bignum_cmp(*(undefined4 *)(iVar2 + 8),**(undefined4 **)(puVar10 + 0x958f4));
          if (uVar4 != 0) {
            uVar3 = bigmul(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));
            iVar7 = bignum_cmp(uVar3,*(undefined4 *)(iVar2 + 8));
            freebn(uVar3);
            if (iVar7 == 0) {
              uVar3 = copybn(*(undefined4 *)(iVar2 + 0x14));
              decbn(uVar3);
              uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);
              freebn(uVar3);
              iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));
              freebn(uVar5);
              uVar4 = 0;
              if (iVar7 == 0) {
                uVar3 = copybn(*(undefined4 *)(iVar2 + 0x18));
                decbn(uVar3);
                uVar5 = modmul(*(undefined4 *)(iVar2 + 0xc),*(undefined4 *)(iVar2 + 0x10),uVar3);
                freebn(uVar3);
                iVar7 = bignum_cmp(uVar5,**(undefined4 **)(puVar10 + 0x95910));
                freebn(uVar5);
                if (iVar7 == 0) {
                  iVar7 = bignum_cmp(*(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(iVar2 + 0x18));
                  if (iVar7 < 1) {
                    uVar3 = *(undefined4 *)(iVar2 + 0x14);
                    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(iVar2 + 0x18);
                    *(undefined4 *)(iVar2 + 0x18) = uVar3;
                    freebn(*(undefined4 *)(iVar2 + 0x1c));
                    iVar7 = modinv(*(undefined4 *)(iVar2 + 0x18),*(undefined4 *)(iVar2 + 0x14));
                    *(int *)(iVar2 + 0x1c) = iVar7;
                    if (iVar7 == 0) {
                      return 0;
                    }
                  }
                  uVar3 = modmul(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x18),
                                 *(undefined4 *)(iVar2 + 0x14));
                  iVar2 = bignum_cmp(uVar3,**(undefined4 **)(puVar10 + 0x95910));
                  freebn(uVar3);
                  uVar4 = (uint)(iVar2 == 0);
                }
                else {
                  uVar4 = 0;
                }
              }
            }
            else {
              uVar4 = 0;
            }
          }
          return uVar4;
        }
        return *(uint *)PTR___stack_chk_guard_00122654;
      }
    }
    (*(code *)PTR___sprintf_chk_00122538)(puVar6,1,0xffffffff,puVar10 + 0x398c,puVar9,auStack_95[1])
    ;
    iVar2 = 2;
  } while( true );
}

