
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int ecdsa_verifysig(void *key,char *sig,int siglen,char *data,int datalen)

{
  int iVar1;
  ec_curve *peVar2;
  char *p_00;
  int iVar3;
  uint uVar4;
  ec_point *peVar5;
  int iVar6;
  Bignum_conflict pBVar7;
  Bignum_conflict pBVar8;
  ec_point *peVar9;
  ec_point *peVar10;
  ec_point *point;
  undefined4 uVar11;
  Bignum_conflict pBVar12;
  Bignum_conflict pBVar13;
  Bignum_conflict b_00;
  Bignum_conflict b_01;
  int in_GS_OFFSET;
  Bignum_conflict local_168;
  char *local_150 [4];
  uchar b;
  char *p;
  int slen;
  SHA512_State hs;
  uchar digest [64];
  
  p_00 = data;
  local_150[0] = sig;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&
     (*(int *)((int)key + 4) != 0)) {
                    /* WARNING: Load size is inaccurate */
    iVar6 = *(int *)(*key + 0x38);
    getstring(local_150,&siglen,&p,&slen);
                    /* WARNING: Load size is inaccurate */
    if (((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))
       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)) {
      peVar2 = *(ec_curve **)((int)key + 4);
      if (peVar2->type == ADDRTYPE_IPV6) {
        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {
          peVar5 = (ec_point *)safemalloc(1,0x14);
          peVar5->z = (Bignum)0x0;
          peVar5->curve = peVar2;
          peVar5->x = (Bignum)0x0;
          peVar5->y = (Bignum)0x0;
          peVar5->infinity = '\0';
          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);
          if (iVar6 == 0) {
            ec_point_free(peVar5);
            uVar4 = 0;
            goto LAB_0004cb12;
          }
          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;
          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);
          SHA512_Init((SHA512_CTX *)&hs);
          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);
          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;
          if (uVar4 < 2) {
            iVar6 = 0;
          }
          else {
            iVar3 = 0;
            do {
              iVar6 = iVar3 + 1;
              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);
              b = (uchar)iVar3;
              SHA512_Bytes(&hs,&b,1);
              iVar3 = iVar6;
            } while (uVar4 - 1 != iVar6);
          }
          local_168 = (Bignum_conflict)&b;
          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);
          b = (byte)iVar6 & 0x7f;
          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);
          b = b | (byte)(iVar6 << 7);
          SHA512_Bytes(&hs,local_168,1);
          SHA512_Bytes(&hs,p_00,datalen);
          SHA512_Final(&hs,digest);
          pBVar8 = bignum_from_bytes_le(digest,0x40);
          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);
          freebn(pBVar7);
          if (peVar9 != (ec_point *)0x0) {
            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);
            freebn(pBVar8);
            if (peVar10 == (ec_point *)0x0) {
              ec_point_free(peVar9);
              ec_point_free(peVar5);
              uVar4 = 0;
            }
            else {
              point = ecp_add(peVar5,peVar10,0);
              ec_point_free(peVar5);
              ec_point_free(peVar10);
              if (point == (ec_point *)0x0) {
                ec_point_free(peVar9);
                uVar4 = 0;
              }
              else {
                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);
                uVar4 = 0;
                if (iVar6 == 0) {
                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);
                  uVar4 = (uint)(iVar6 == 0);
                }
                ec_point_free(peVar9);
                ec_point_free(point);
              }
            }
            goto LAB_0004cb12;
          }
          ec_point_free(peVar5);
          freebn(pBVar8);
        }
      }
      else {
        pBVar7 = (Bignum_conflict)getmp(&p,&slen);
        if (pBVar7 != (Bignum_conflict)0x0) {
          pBVar8 = (Bignum_conflict)getmp(&p,&slen);
          if (pBVar8 != (Bignum_conflict)0x0) {
            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];
            if (0x40 < uVar4) {
                    /* WARNING: Subroutine does not return */
              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");
            }
            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();
            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);
            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);
            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))
               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),
                   iVar6 < 0 &&
                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&
                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),
                    iVar6 < 0)))))) {
              pBVar12 = bignum_from_bytes(digest,uVar4);
              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));
              iVar3 = bignum_bitcount(pBVar12);
              local_168 = pBVar12;
              if (iVar6 < iVar3) {
                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);
                freebn(pBVar12);
              }
              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));
              freebn(local_168);
              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));
              if (pBVar13 == (Bignum_conflict)0x0) {
                freebn(pBVar12);
                uVar4 = 0;
              }
              else {
                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));
                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));
                freebn(pBVar13);
                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {
                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));
                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);
                  if (peVar5 != (ec_point *)0x0) {
                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);
                    if (peVar9 == (ec_point *)0x0) {
                      ec_point_free(peVar5);
                    }
                    else {
                      peVar10 = ecp_add(peVar5,peVar9,iVar6);
                      ec_point_free(peVar5);
                      ec_point_free(peVar9);
                      if ((peVar10 != (ec_point *)0x0) &&
                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)
                          ))) {
                        freebn(b_00);
                        freebn(b_01);
                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,
                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));
                        ec_point_free(peVar10);
                        iVar6 = bignum_cmp(pBVar7,pBVar13);
                        uVar4 = (uint)(iVar6 == 0);
                        freebn(pBVar13);
                        freebn(pBVar12);
                        goto LAB_0004ce42;
                      }
                      ec_point_free(peVar10);
                    }
                  }
                }
                freebn(b_00);
                freebn(b_01);
                freebn(pBVar12);
                uVar4 = 0;
              }
            }
            else {
              uVar4 = 0;
            }
LAB_0004ce42:
            freebn(pBVar7);
            freebn(pBVar8);
            goto LAB_0004cb12;
          }
          freebn(pBVar7);
        }
      }
    }
  }
  uVar4 = 0;
LAB_0004cb12:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return uVar4;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  uint uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 extraout_ECX;
  int in_GS_OFFSET;
  bool bVar12;
  byte *local_168;
  byte local_13d;
  int local_13c;
  int local_138;
  undefined1 local_134 [212];
  undefined1 local_60 [64];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x4ca69;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {
    iVar4 = *(int *)(*param_1 + 0x38);
    FUN_0004b200(&local_138);
    if (((local_13c != 0) &&
        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&
       (FUN_0004b200(&local_138), local_13c != 0)) {
      piVar1 = (int *)param_1[1];
      if (*piVar1 == 2) {
        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {
          piVar3 = (int *)FUN_0001c990(1,0x14);
          piVar3[3] = 0;
          *piVar3 = (int)piVar1;
          piVar3[1] = 0;
          piVar3[2] = 0;
          *(undefined1 *)(piVar3 + 4) = 0;
          iVar4 = FUN_0004b8a0();
          if (iVar4 == 0) {
            FUN_0004bdd0(piVar3);
            bVar12 = false;
            goto LAB_0004cb12;
          }
          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;
          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);
          FUN_00056d20(local_134);
          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);
          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;
          if (uVar5 < 2) {
            iVar4 = 0;
          }
          else {
            iVar2 = 0;
            do {
              iVar4 = iVar2 + 1;
              local_13d = FUN_00041970(param_1[3],iVar2);
              FUN_00056e00(local_134,&local_13d,1);
              iVar2 = iVar4;
            } while (uVar5 - 1 != iVar4);
          }
          local_168 = &local_13d;
          local_13d = FUN_00041970(param_1[3],iVar4);
          local_13d = local_13d & 0x7f;
          iVar4 = FUN_000419b0(param_1[2],0);
          local_13d = local_13d | (byte)(iVar4 << 7);
          FUN_00056e00(local_134,local_168,1);
          FUN_00056e00(local_134,param_4,param_5);
          FUN_00058150(local_134,local_60);
          uVar7 = FUN_00041750(local_60,0x40);
          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);
          FUN_000411f0(uVar6);
          if (iVar4 != 0) {
            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);
            FUN_000411f0(uVar7);
            if (iVar2 == 0) {
              FUN_0004bdd0(iVar4);
              FUN_0004bdd0(piVar3);
              bVar12 = false;
            }
            else {
              iVar8 = FUN_0004a100();
              FUN_0004bdd0(piVar3);
              FUN_0004bdd0(iVar2);
              if (iVar8 == 0) {
                FUN_0004bdd0(iVar4);
                bVar12 = false;
              }
              else {
                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));
                bVar12 = false;
                if (iVar2 == 0) {
                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));
                  bVar12 = iVar2 == 0;
                }
                FUN_0004bdd0(iVar4);
                FUN_0004bdd0(iVar8);
              }
            }
            goto LAB_0004cb12;
          }
          FUN_0004bdd0(piVar3);
          FUN_000411f0(uVar7);
        }
      }
      else {
        iVar2 = FUN_0004b280();
        if (iVar2 != 0) {
          iVar8 = FUN_0004b280();
          if (iVar8 != 0) {
            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];
            if (0x40 < uVar5) {
                    /* WARNING: Subroutine does not return */
              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");
            }
            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();
            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);
            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);
            if (((*(int *)param_1[1] == 0) &&
                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&
               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&
                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&
                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {
              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);
              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));
              iVar9 = FUN_00041880(local_168);
              if (iVar4 < iVar9) {
                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);
                FUN_000411f0(local_168);
                local_168 = (byte *)iVar9;
              }
              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);
              FUN_000411f0(local_168);
              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));
              if (iVar4 == 0) {
                FUN_000411f0(uVar6);
                bVar12 = false;
              }
              else {
                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);
                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));
                FUN_000411f0(iVar4);
                if (*(int *)param_1[1] == 0) {
                  FUN_00049b80();
                  iVar4 = FUN_0004be40();
                  if (iVar4 != 0) {
                    iVar9 = FUN_0004be40();
                    if (iVar9 == 0) {
                      FUN_0004bdd0(iVar4);
                    }
                    else {
                      iVar11 = FUN_0004a100();
                      FUN_0004bdd0(iVar4);
                      FUN_0004bdd0(iVar9);
                      if ((iVar11 != 0) &&
                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))
                         )) {
                        FUN_000411f0(uVar7);
                        FUN_000411f0(uVar10);
                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),
                                             *(undefined4 *)(param_1[1] + 0x1c));
                        FUN_0004bdd0(iVar11);
                        iVar4 = FUN_00041b70(iVar2,uVar7);
                        bVar12 = iVar4 == 0;
                        FUN_000411f0(uVar7);
                        FUN_000411f0(uVar6);
                        goto LAB_0004ce42;
                      }
                      FUN_0004bdd0(iVar11);
                    }
                  }
                }
                FUN_000411f0(uVar7);
                FUN_000411f0(uVar10);
                FUN_000411f0(uVar6);
                bVar12 = false;
              }
            }
            else {
              bVar12 = false;
            }
LAB_0004ce42:
            FUN_000411f0(iVar2);
            FUN_000411f0(iVar8);
            goto LAB_0004cb12;
          }
          FUN_000411f0(iVar2);
        }
      }
    }
  }
  bVar12 = false;
LAB_0004cb12:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0006dad0();
  }
  return bVar12;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00015fa0
ADD EBX,0x58307
SUB ESP,0x15c
MOV EAX,dword ptr [ESP + 0x17c]
MOV ESI,dword ptr [ESP + 0x170]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x174]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x14c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x0004cb10
MOV EAX,dword ptr [ESI + 0xc]
TEST EAX,EAX
JZ 0x0004cb10
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
JZ 0x0004cb10
MOV EAX,dword ptr [ESI]
LEA ECX,[ESP + 0x1c]
LEA EBP,[ESP + 0x178]
MOV dword ptr [ESP + 0x4],ECX
MOV EDX,EBP
MOV EAX,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x30]
SUB ESP,0xc
LEA EDI,[ESP + 0x40]
MOV ECX,EAX
PUSH EDI
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x0004b200
MOV EAX,dword ptr [ESP + 0x40]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004cb10
MOV EDX,dword ptr [ESI]
SUB ESP,0x4
PUSH dword ptr [EDX + 0x30]
PUSH EAX
PUSH dword ptr [ESP + 0x40]
CALL 0x0001d660
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0004cb38
NOP
XOR EAX,EAX
MOV ECX,dword ptr [ESP + 0x14c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0004d0f6
ADD ESP,0x15c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
MOV EDX,EBP
PUSH EDI
MOV ECX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x0004b200
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x30]
TEST EBP,EBP
JZ 0x0004cb10
MOV EBP,dword ptr [ESI + 0x4]
CMP dword ptr [EBP],0x2
JNZ 0x0004cd80
MOV EDX,dword ptr [EBP + 0xc]
MOV EAX,EDX
SHR EAX,0x3
ADD EAX,EAX
CMP EAX,dword ptr [ESP + 0x34]
JNZ 0x0004cb10
CMP EDX,0x100
JNZ 0x0004cb10
SUB ESP,0x8
PUSH 0x14
PUSH 0x1
CALL 0x0001c990
MOV dword ptr [ESP + 0x20],EAX
MOV ECX,EAX
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX],EBP
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x8],0x0
MOV byte ptr [EAX + 0x10],0x0
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [ESP + 0x40]
SHR EDX,0x3
CALL 0x0004b8a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004d061
MOV EAX,dword ptr [ESI + 0x4]
SUB ESP,0x8
MOV EAX,dword ptr [EAX + 0xc]
SHR EAX,0x3
PUSH EAX
ADD EAX,dword ptr [ESP + 0x3c]
PUSH EAX
CALL 0x00041750
MOV dword ptr [ESP + 0x24],EAX
POP EDI
LEA EDI,[ESP + 0x44]
PUSH EDI
CALL 0x00056d20
MOV EAX,dword ptr [ESI + 0x4]
ADD ESP,0xc
MOV EAX,dword ptr [EAX + 0xc]
SHR EAX,0x3
PUSH EAX
PUSH dword ptr [ESP + 0x38]
PUSH EDI
CALL 0x00056e00
MOV EAX,dword ptr [ESI + 0x4]
ADD ESP,0x10
MOV EBP,dword ptr [EAX + 0xc]
SHR EBP,0x3
CMP EBP,0x1
JLE 0x0004d0e7
LEA EAX,[EBP + -0x1]
XOR EBP,EBP
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[ESP + 0x2f]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,EDI
MOV EDI,EBP
MOV EBP,EAX
NOP
SUB ESP,0x8
PUSH EDI
ADD EDI,0x1
PUSH dword ptr [ESI + 0xc]
CALL 0x00041970
MOV byte ptr [ESP + 0x3f],AL
ADD ESP,0xc
PUSH 0x1
PUSH dword ptr [ESP + 0xc]
PUSH EBP
CALL 0x00056e00
ADD ESP,0x10
CMP dword ptr [ESP + 0xc],EDI
JNZ 0x0004cc30
MOV EAX,EBP
MOV EBP,EDI
MOV EDI,EAX
SUB ESP,0x8
PUSH EBP
PUSH dword ptr [ESI + 0xc]
CALL 0x00041970
AND EAX,0x7f
MOV byte ptr [ESP + 0x3f],AL
POP EBP
POP EAX
PUSH 0x0
PUSH dword ptr [ESI + 0x8]
CALL 0x000419b0
SHL EAX,0x7
OR byte ptr [ESP + 0x3f],AL
ADD ESP,0xc
PUSH 0x1
PUSH dword ptr [ESP + 0xc]
PUSH EDI
CALL 0x00056e00
ADD ESP,0xc
PUSH dword ptr [ESP + 0x184]
PUSH dword ptr [ESP + 0x10]
PUSH EDI
CALL 0x00056e00
POP EAX
POP EDX
LEA EBP,[ESP + 0x114]
PUSH EBP
PUSH EDI
CALL 0x00058150
POP ECX
POP EDI
PUSH 0x40
PUSH EBP
CALL 0x00041750
MOV EBP,EAX
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESI + 0x4]
ADD EAX,0x1c
PUSH EAX
CALL 0x0004bf30
POP ECX
PUSH dword ptr [ESP + 0x20]
MOV EDI,EAX
CALL 0x000411f0
ADD ESP,0x10
TEST EDI,EDI
JZ 0x0004d09b
SUB ESP,0x8
ADD ESI,0x4
PUSH EBP
PUSH ESI
CALL 0x0004bf30
MOV dword ptr [ESP],EBP
MOV ESI,EAX
CALL 0x000411f0
ADD ESP,0x10
TEST ESI,ESI
JZ 0x0004d0b7
MOV EAX,dword ptr [ESP + 0x10]
XOR ECX,ECX
MOV EDX,ESI
CALL 0x0004a100
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
MOV EBP,EAX
CALL 0x0004bdd0
MOV dword ptr [ESP],ESI
CALL 0x0004bdd0
ADD ESP,0x10
TEST EBP,EBP
JZ 0x0004d0d4
SUB ESP,0x8
PUSH dword ptr [EBP + 0x4]
PUSH dword ptr [EDI + 0x4]
CALL 0x00041b70
ADD ESP,0x10
MOV EDX,EAX
XOR EAX,EAX
TEST EDX,EDX
JZ 0x0004d07d
MOV dword ptr [ESP + 0x4],EAX
SUB ESP,0xc
PUSH EDI
CALL 0x0004bdd0
MOV dword ptr [ESP],EBP
CALL 0x0004bdd0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x4]
JMP 0x0004cb12
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,EDI
CALL 0x0004b280
MOV EBP,EAX
TEST EAX,EAX
JZ 0x0004cb10
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,EDI
CALL 0x0004b280
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0004d050
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EAX + 0x14]
MOV dword ptr [ESP + 0xc],EDX
CMP EDX,0x40
JA 0x0004d187
CALL dword ptr [EAX]
SUB ESP,0x4
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESP + 0x184]
PUSH dword ptr [ESP + 0x10]
PUSH EDX
MOV dword ptr [ESP + 0x14],EDX
CALL dword ptr [EAX + 0x8]
POP EAX
POP EDX
MOV EAX,dword ptr [ESP + 0x18]
LEA EDX,[ESP + 0x114]
MOV dword ptr [ESP + 0x10],EDX
MOV EAX,dword ptr [EAX + 0x4]
PUSH EDX
MOV EDX,dword ptr [ESP + 0x10]
PUSH EDX
CALL dword ptr [EAX + 0xc]
MOV EAX,dword ptr [ESI + 0x4]
MOV ECX,dword ptr [EAX]
ADD ESP,0x10
TEST ECX,ECX
JNZ 0x0004ce40
LEA EAX,[EBX + 0x458]
SUB ESP,0x8
MOV dword ptr [ESP + 0xc],EAX
PUSH dword ptr [EAX]
PUSH EBP
CALL 0x00041b70
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004ce40
MOV EAX,dword ptr [ESI + 0x4]
SUB ESP,0x8
PUSH dword ptr [EAX + 0x1c]
PUSH EBP
CALL 0x00041b70
ADD ESP,0x10
TEST EAX,EAX
JS 0x0004ce63
LEA ESI,[ESI]
XOR EAX,EAX
MOV dword ptr [ESP + 0x4],EAX
SUB ESP,0xc
PUSH EBP
CALL 0x000411f0
MOV dword ptr [ESP],EDI
CALL 0x000411f0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x4]
JMP 0x0004cb12
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0xc]
PUSH dword ptr [EAX]
PUSH EDI
CALL 0x00041b70
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004ce40
MOV EAX,dword ptr [ESI + 0x4]
SUB ESP,0x8
PUSH dword ptr [EAX + 0x1c]
PUSH EDI
CALL 0x00041b70
ADD ESP,0x10
TEST EAX,EAX
JNS 0x0004ce40
PUSH EAX
PUSH EAX
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
CALL 0x00041680
MOV dword ptr [ESP + 0x14],EAX
POP EAX
MOV EAX,dword ptr [ESI + 0x4]
PUSH dword ptr [EAX + 0x1c]
CALL 0x00041880
MOV dword ptr [ESP + 0x18],EAX
POP EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x00041880
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
CMP EDX,EAX
JL 0x0004d0fb
PUSH EAX
PUSH EAX
MOV EAX,dword ptr [ESI + 0x4]
PUSH dword ptr [EAX + 0x1c]
PUSH dword ptr [ESP + 0x10]
CALL 0x00042780
MOV dword ptr [ESP + 0x18],EAX
POP EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x000411f0
POP EAX
MOV EAX,dword ptr [ESI + 0x4]
POP EDX
PUSH dword ptr [EAX + 0x1c]
PUSH EDI
CALL 0x00042e50
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JZ 0x0004d160
PUSH EAX
MOV EAX,dword ptr [ESI + 0x4]
PUSH dword ptr [EAX + 0x1c]
PUSH EDX
MOV dword ptr [ESP + 0x10],EDX
PUSH dword ptr [ESP + 0x14]
CALL 0x00041230
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESI + 0x4]
ADD ESP,0xc
PUSH dword ptr [EAX + 0x1c]
MOV EDX,dword ptr [ESP + 0xc]
PUSH EDX
MOV dword ptr [ESP + 0x10],EDX
PUSH EBP
CALL 0x00041230
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP],EDX
CALL 0x000411f0
MOV EAX,dword ptr [ESI + 0x4]
ADD ESP,0x10
CMP dword ptr [EAX],0x0
JNZ 0x0004d136
CALL 0x00049b80
MOV EDX,dword ptr [ESP + 0xc]
MOV ECX,EAX
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x4],ECX
ADD EAX,0x20
CALL 0x0004be40
MOV dword ptr [ESP + 0x14],EAX
TEST EAX,EAX
JZ 0x0004d136
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x10]
LEA EAX,[ESI + 0x4]
CALL 0x0004be40
MOV dword ptr [ESP + 0x18],EAX
TEST EAX,EAX
JZ 0x0004d127
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x0004a100
SUB ESP,0xc
MOV dword ptr [ESP + 0x10],EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x0004bdd0
POP EAX
PUSH dword ptr [ESP + 0x24]
CALL 0x0004bdd0
ADD ESP,0x10
CMP dword ptr [ESP + 0x4],0x0
JZ 0x0004d176
MOV EAX,dword ptr [ESP + 0x4]
CMP byte ptr [EAX + 0x10],0x0
JNZ 0x0004cfe7
CALL 0x00049bd0
TEST EAX,EAX
JZ 0x0004d176
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x000411f0
POP EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x000411f0
MOV EAX,dword ptr [ESI + 0x4]
POP EDX
POP ECX
PUSH dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [ESP + 0x10]
PUSH dword ptr [EAX + 0x4]
CALL 0x00042780
MOV ESI,EAX
POP EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x0004bdd0
POP EAX
POP EDX
PUSH ESI
PUSH EBP
CALL 0x00041b70
MOV dword ptr [ESP],ESI
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
MOV dword ptr [ESP + 0x14],EAX
CALL 0x000411f0
POP ECX
PUSH dword ptr [ESP + 0x14]
CALL 0x000411f0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x4]
JMP 0x0004ce42
SUB ESP,0xc
PUSH EBP
CALL 0x000411f0
ADD ESP,0x10
JMP 0x0004cb10
MOV dword ptr [ESP + 0x4],EAX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x0004bdd0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x4]
JMP 0x0004cb12
SUB ESP,0x8
PUSH dword ptr [EBP + 0x8]
PUSH dword ptr [EDI + 0x8]
CALL 0x00041b70
ADD ESP,0x10
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
JMP 0x0004cd5c
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x0004bdd0
MOV dword ptr [ESP],EBP
CALL 0x000411f0
ADD ESP,0x10
JMP 0x0004cb10
SUB ESP,0xc
PUSH EDI
CALL 0x0004bdd0
POP EBX
PUSH dword ptr [ESP + 0x1c]
CALL 0x0004bdd0
ADD ESP,0x10
XOR EAX,EAX
JMP 0x0004cb12
SUB ESP,0xc
PUSH EDI
CALL 0x0004bdd0
ADD ESP,0x10
XOR EAX,EAX
JMP 0x0004cb12
LEA EAX,[ESP + 0x2f]
XOR EBP,EBP
MOV dword ptr [ESP + 0x4],EAX
JMP 0x0004cc61
CALL 0x0006dad0
SUB EAX,EDX
PUSH ECX
PUSH ECX
PUSH EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x00041de0
MOV dword ptr [ESP + 0x18],EAX
POP EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x000411f0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x4],EAX
JMP 0x0004cecb
SUB ESP,0xc
PUSH dword ptr [ESP + 0x20]
CALL 0x0004bdd0
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x000411f0
POP ESI
PUSH dword ptr [ESP + 0x1c]
CALL 0x000411f0
POP EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x000411f0
ADD ESP,0x10
XOR EAX,EAX
JMP 0x0004ce42
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x000411f0
ADD ESP,0x10
XOR EAX,EAX
JMP 0x0004ce42
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL 0x0004bdd0
ADD ESP,0x10
JMP 0x0004d136
LEA EAX,[EBX + 0xfffd521c]
PUSH EAX
LEA EAX,[EBX + 0xfffd4b39]
PUSH 0x950
PUSH EAX
LEA EAX,[EBX + 0xfffd4b73]
PUSH EAX
CALL 0x00014870
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }\n  return bVar12;\n}\n\n" comment (function_definition "bool FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }\n  return bVar12;\n}" primitive_type (function_declarator "FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" identifier (parameter_list "(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }\n  return bVar12;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte *local_168;" type_identifier (pointer_declarator "*local_168" * identifier) ;) (declaration "byte local_13d;" type_identifier identifier ;) (declaration "int local_13c;" primitive_type identifier ;) (declaration "int local_138;" primitive_type identifier ;) (declaration "undefined1 local_134 [212];" type_identifier (array_declarator "local_134 [212]" identifier [ number_literal ]) ;) (declaration "undefined1 local_60 [64];" type_identifier (array_declarator "local_60 [64]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x4ca69;" (assignment_expression "uStack_14 = 0x4ca69" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }" if (parenthesized_expression "(((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0))" ( (binary_expression "((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)" (parenthesized_expression "((param_1[2] != 0) && (param_1[3] != 0))" ( (binary_expression "(param_1[2] != 0) && (param_1[3] != 0)" (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[3] != 0)" ( (binary_expression "param_1[3] != 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }" { (expression_statement "iVar4 = *(int *)(*param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(*param_1 + 0x38)" identifier = (pointer_expression "*(int *)(*param_1 + 0x38)" * (cast_expression "(int *)(*param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_0004b200(&local_138);" (call_expression "FUN_0004b200(&local_138)" identifier (argument_list "(&local_138)" ( (pointer_expression "&local_138" & identifier) ))) ;) (if_statement "if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }" if (parenthesized_expression "(((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0))" ( (binary_expression "((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)" (parenthesized_expression "((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0))" ( (binary_expression "(local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)" (parenthesized_expression "(local_13c != 0)" ( (binary_expression "local_13c != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)" ( (comma_expression "iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0" (assignment_expression "iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" identifier = (call_expression "FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" identifier (argument_list "(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x30)" * (cast_expression "(undefined4 *)(*param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x30)" ( (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(FUN_0004b200(&local_138), local_13c != 0)" ( (comma_expression "FUN_0004b200(&local_138), local_13c != 0" (call_expression "FUN_0004b200(&local_138)" identifier (argument_list "(&local_138)" ( (pointer_expression "&local_138" & identifier) ))) , (binary_expression "local_13c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }" { (expression_statement "piVar1 = (int *)param_1[1];" (assignment_expression "piVar1 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" if (parenthesized_expression "(*piVar1 == 2)" ( (binary_expression "*piVar1 == 2" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }" { (if_statement "if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }" if (parenthesized_expression "((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100))" ( (binary_expression "(((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)" (parenthesized_expression "(((uint)piVar1[3] >> 3) * 2 == local_138)" ( (binary_expression "((uint)piVar1[3] >> 3) * 2 == local_138" (binary_expression "((uint)piVar1[3] >> 3) * 2" (parenthesized_expression "((uint)piVar1[3] >> 3)" ( (binary_expression "(uint)piVar1[3] >> 3" (cast_expression "(uint)piVar1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[3]" identifier [ number_literal ])) >> number_literal) )) * number_literal) == identifier) )) && (parenthesized_expression "(piVar1[3] == 0x100)" ( (binary_expression "piVar1[3] == 0x100" (subscript_expression "piVar1[3]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }" { (expression_statement "piVar3 = (int *)FUN_0001c990(1,0x14);" (assignment_expression "piVar3 = (int *)FUN_0001c990(1,0x14)" identifier = (cast_expression "(int *)FUN_0001c990(1,0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001c990(1,0x14)" identifier (argument_list "(1,0x14)" ( number_literal , number_literal ))))) ;) (expression_statement "piVar3[3] = 0;" (assignment_expression "piVar3[3] = 0" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar3 = (int)piVar1;" (assignment_expression "*piVar3 = (int)piVar1" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(piVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 4)" * (cast_expression "(undefined1 *)(piVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar4 = FUN_0004b8a0();" (assignment_expression "iVar4 = FUN_0004b8a0()" identifier = (call_expression "FUN_0004b8a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }" { (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;" (assignment_expression "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3" identifier = (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" * (cast_expression "(uint *)(param_1[1] + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);" (assignment_expression "uVar6 = FUN_00041750(uVar5 + local_13c,uVar5)" identifier = (call_expression "FUN_00041750(uVar5 + local_13c,uVar5)" identifier (argument_list "(uVar5 + local_13c,uVar5)" ( (binary_expression "uVar5 + local_13c" identifier + identifier) , identifier )))) ;) (expression_statement "FUN_00056d20(local_134);" (call_expression "FUN_00056d20(local_134)" identifier (argument_list "(local_134)" ( identifier ))) ;) (expression_statement "FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);" (call_expression "FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3)" identifier (argument_list "(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3)" ( identifier , identifier , (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" * (cast_expression "(uint *)(param_1[1] + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) >> number_literal) ))) ;) (expression_statement "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;" (assignment_expression "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3" identifier = (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" * (cast_expression "(uint *)(param_1[1] + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) >> number_literal)) ;) (if_statement "if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" if (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 2" identifier < number_literal) )) (compound_statement "{\n            iVar4 = 0;\n          }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" else (compound_statement "{\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);" do (compound_statement "{\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            }" { (expression_statement "iVar4 = iVar2 + 1;" (assignment_expression "iVar4 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "local_13d = FUN_00041970(param_1[3],iVar2);" (assignment_expression "local_13d = FUN_00041970(param_1[3],iVar2)" identifier = (call_expression "FUN_00041970(param_1[3],iVar2)" identifier (argument_list "(param_1[3],iVar2)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "FUN_00056e00(local_134,&local_13d,1);" (call_expression "FUN_00056e00(local_134,&local_13d,1)" identifier (argument_list "(local_134,&local_13d,1)" ( identifier , (pointer_expression "&local_13d" & identifier) , number_literal ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(uVar5 - 1 != iVar4)" ( (binary_expression "uVar5 - 1 != iVar4" (binary_expression "uVar5 - 1" identifier - number_literal) != identifier) )) ;) }))) (expression_statement "local_168 = &local_13d;" (assignment_expression "local_168 = &local_13d" identifier = (pointer_expression "&local_13d" & identifier)) ;) (expression_statement "local_13d = FUN_00041970(param_1[3],iVar4);" (assignment_expression "local_13d = FUN_00041970(param_1[3],iVar4)" identifier = (call_expression "FUN_00041970(param_1[3],iVar4)" identifier (argument_list "(param_1[3],iVar4)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "local_13d = local_13d & 0x7f;" (assignment_expression "local_13d = local_13d & 0x7f" identifier = (binary_expression "local_13d & 0x7f" identifier & number_literal)) ;) (expression_statement "iVar4 = FUN_000419b0(param_1[2],0);" (assignment_expression "iVar4 = FUN_000419b0(param_1[2],0)" identifier = (call_expression "FUN_000419b0(param_1[2],0)" identifier (argument_list "(param_1[2],0)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "local_13d = local_13d | (byte)(iVar4 << 7);" (assignment_expression "local_13d = local_13d | (byte)(iVar4 << 7)" identifier = (binary_expression "local_13d | (byte)(iVar4 << 7)" identifier | (call_expression "(byte)(iVar4 << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar4 << 7)" ( (binary_expression "iVar4 << 7" identifier << number_literal) ))))) ;) (expression_statement "FUN_00056e00(local_134,local_168,1);" (call_expression "FUN_00056e00(local_134,local_168,1)" identifier (argument_list "(local_134,local_168,1)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_00056e00(local_134,param_4,param_5);" (call_expression "FUN_00056e00(local_134,param_4,param_5)" identifier (argument_list "(local_134,param_4,param_5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00058150(local_134,local_60);" (call_expression "FUN_00058150(local_134,local_60)" identifier (argument_list "(local_134,local_60)" ( identifier , identifier ))) ;) (expression_statement "uVar7 = FUN_00041750(local_60,0x40);" (assignment_expression "uVar7 = FUN_00041750(local_60,0x40)" identifier = (call_expression "FUN_00041750(local_60,0x40)" identifier (argument_list "(local_60,0x40)" ( identifier , number_literal )))) ;) (expression_statement "iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);" (assignment_expression "iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6)" identifier = (call_expression "FUN_0004bf30(param_1[1] + 0x1c,uVar6)" identifier (argument_list "(param_1[1] + 0x1c,uVar6)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) , identifier )))) ;) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (if_statement "if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }" { (expression_statement "iVar2 = FUN_0004bf30(param_1 + 1,uVar7);" (assignment_expression "iVar2 = FUN_0004bf30(param_1 + 1,uVar7)" identifier = (call_expression "FUN_0004bf30(param_1 + 1,uVar7)" identifier (argument_list "(param_1 + 1,uVar7)" ( (binary_expression "param_1 + 1" identifier + number_literal) , identifier )))) ;) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (if_statement "if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }" { (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" else (compound_statement "{\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" { (expression_statement "iVar8 = FUN_0004a100();" (assignment_expression "iVar8 = FUN_0004a100()" identifier = (call_expression "FUN_0004a100()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(iVar2);" (call_expression "FUN_0004bdd0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (if_statement "if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }" { (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" else (compound_statement "{\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" { (expression_statement "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));" (assignment_expression "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" identifier = (call_expression "FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" identifier (argument_list "(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" ( (pointer_expression "*(undefined4 *)(iVar4 + 4)" * (cast_expression "(undefined4 *)(iVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 4)" * (cast_expression "(undefined4 *)(iVar8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) )))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (if_statement "if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }" { (expression_statement "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));" (assignment_expression "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" identifier = (call_expression "FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" identifier (argument_list "(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" ( (pointer_expression "*(undefined4 *)(iVar4 + 8)" * (cast_expression "(undefined4 *)(iVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 8)" * (cast_expression "(undefined4 *)(iVar8 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "bVar12 = iVar2 == 0;" (assignment_expression "bVar12 = iVar2 == 0" identifier = (binary_expression "iVar2 == 0" identifier == number_literal)) ;) })) (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(iVar8);" (call_expression "FUN_0004bdd0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) }))) }))) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) })) }) (else_clause "else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" else (compound_statement "{\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" { (expression_statement "iVar2 = FUN_0004b280();" (assignment_expression "iVar2 = FUN_0004b280()" identifier = (call_expression "FUN_0004b280()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }" { (expression_statement "iVar8 = FUN_0004b280();" (assignment_expression "iVar8 = FUN_0004b280()" identifier = (call_expression "FUN_0004b280()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }" { (expression_statement "uVar5 = (*(undefined4 **)(iVar4 + 4))[5];" (assignment_expression "uVar5 = (*(undefined4 **)(iVar4 + 4))[5]" identifier = (subscript_expression "(*(undefined4 **)(iVar4 + 4))[5]" (parenthesized_expression "(*(undefined4 **)(iVar4 + 4))" ( (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if (0x40 < uVar5) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" if (parenthesized_expression "(0x40 < uVar5)" ( (binary_expression "0x40 < uVar5" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" { comment (expression_statement "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");" (call_expression "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" identifier (argument_list "("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" ( (string_literal ""digestLen <= sizeof(digest)"" " string_content ") , (string_literal ""sshecc.c"" " string_content ") , number_literal , (string_literal ""ecdsa_verifysig"" " string_content ") ))) ;) })) (expression_statement "uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();" (assignment_expression "uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))()" identifier = (call_expression "(*(code *)**(undefined4 **)(iVar4 + 4))()" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar4 + 4))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar4 + 4)" * (cast_expression "(code *)**(undefined4 **)(iVar4 + 4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar4 + 4)" * (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))))) )) (argument_list "()" ( )))) ;) (expression_statement "(**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);" (call_expression "(**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 4) + 8))" ( (pointer_expression "**(code **)(*(int *)(iVar4 + 4) + 8)" * (pointer_expression "*(code **)(*(int *)(iVar4 + 4) + 8)" * (cast_expression "(code **)(*(int *)(iVar4 + 4) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar4 + 4) + 8)" ( (binary_expression "*(int *)(iVar4 + 4) + 8" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(uVar6,param_4,param_5)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);" (call_expression "(**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 4) + 0xc))" ( (pointer_expression "**(code **)(*(int *)(iVar4 + 4) + 0xc)" * (pointer_expression "*(code **)(*(int *)(iVar4 + 4) + 0xc)" * (cast_expression "(code **)(*(int *)(iVar4 + 4) + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar4 + 4) + 0xc)" ( (binary_expression "*(int *)(iVar4 + 4) + 0xc" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(uVar6,local_60)" ( identifier , identifier ))) ;) (if_statement "if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }" if (parenthesized_expression "(((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))))))" ( (binary_expression "((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))" (parenthesized_expression "((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0))" ( (binary_expression "(*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)" (parenthesized_expression "(*(int *)param_1[1] == 0)" ( (binary_expression "*(int *)param_1[1] == 0" (pointer_expression "*(int *)param_1[1]" * (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) == number_literal) )) && (parenthesized_expression "(iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)" ( (comma_expression "iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0" (assignment_expression "iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8)" identifier = (call_expression "FUN_00041b70(iVar2,PTR_DAT_000a51c8)" identifier (argument_list "(iVar2,PTR_DAT_000a51c8)" ( identifier , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))" ( (parenthesized_expression "(iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))))" ( (comma_expression "iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" (assignment_expression "iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) , (binary_expression "iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" (binary_expression "iVar4 < 0" identifier < number_literal) && (parenthesized_expression "((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" ( (parenthesized_expression "(iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))" ( (comma_expression "iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" (assignment_expression "iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8)" identifier = (call_expression "FUN_00041b70(iVar8,PTR_DAT_000a51c8)" identifier (argument_list "(iVar8,PTR_DAT_000a51c8)" ( identifier , identifier )))) , (binary_expression "iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" (binary_expression "iVar4 != 0" identifier != number_literal) && (parenthesized_expression "(iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" ( (comma_expression "iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0" (assignment_expression "iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) , (binary_expression "iVar4 < 0" identifier < number_literal)) )))) )) )))) )) ))) )) (compound_statement "{\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }" { (expression_statement "local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);" (assignment_expression "local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4)" identifier = (cast_expression "(byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00041680(local_60,uVar5,iVar4,iVar4)" identifier (argument_list "(local_60,uVar5,iVar4,iVar4)" ( identifier , identifier , identifier , identifier ))))) ;) (expression_statement "iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(*(undefined4 *)(param_1[1] + 0x1c))" ( (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (expression_statement "iVar9 = FUN_00041880(local_168);" (assignment_expression "iVar9 = FUN_00041880(local_168)" identifier = (call_expression "FUN_00041880(local_168)" identifier (argument_list "(local_168)" ( identifier )))) ;) (if_statement "if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }" if (parenthesized_expression "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) )) (compound_statement "{\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }" { (expression_statement "iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);" (assignment_expression "iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" identifier = (call_expression "FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" identifier (argument_list "(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" ( identifier , (binary_expression "iVar9 - iVar4" identifier - identifier) , identifier , identifier )))) ;) (expression_statement "FUN_000411f0(local_168);" (call_expression "FUN_000411f0(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "local_168 = (byte *)iVar9;" (assignment_expression "local_168 = (byte *)iVar9" identifier = (cast_expression "(byte *)iVar9" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);" (assignment_expression "uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" identifier = (call_expression "FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" identifier (argument_list "(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "FUN_000411f0(local_168);" (call_expression "FUN_000411f0(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (if_statement "if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" { (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" else (compound_statement "{\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" { (expression_statement "uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);" (assignment_expression "uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" identifier = (call_expression "FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" identifier (argument_list "(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) , identifier )))) ;) (expression_statement "uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (expression_statement "FUN_000411f0(iVar4);" (call_expression "FUN_000411f0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }" if (parenthesized_expression "(*(int *)param_1[1] == 0)" ( (binary_expression "*(int *)param_1[1] == 0" (pointer_expression "*(int *)param_1[1]" * (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) == number_literal) )) (compound_statement "{\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }" { (expression_statement "FUN_00049b80();" (call_expression "FUN_00049b80()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = FUN_0004be40();" (assignment_expression "iVar4 = FUN_0004be40()" identifier = (call_expression "FUN_0004be40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }" { (expression_statement "iVar9 = FUN_0004be40();" (assignment_expression "iVar9 = FUN_0004be40()" identifier = (call_expression "FUN_0004be40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                      FUN_0004bdd0(iVar4);\n                    }" { (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" else (compound_statement "{\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" { (expression_statement "iVar11 = FUN_0004a100();" (assignment_expression "iVar11 = FUN_0004a100()" identifier = (call_expression "FUN_0004a100()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(iVar9);" (call_expression "FUN_0004bdd0(iVar9)" identifier (argument_list "(iVar9)" ( identifier ))) ;) (if_statement "if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }" if (parenthesized_expression "((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         ))" ( (binary_expression "(iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )" (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )" ( (parenthesized_expression "(*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))" ( (binary_expression "*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0)" (binary_expression "*(char *)(iVar11 + 0x10) != '\0'" (pointer_expression "*(char *)(iVar11 + 0x10)" * (cast_expression "(char *)(iVar11 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(iVar4 = FUN_00049bd0(), iVar4 != 0)" ( (comma_expression "iVar4 = FUN_00049bd0(), iVar4 != 0" (assignment_expression "iVar4 = FUN_00049bd0()" identifier = (call_expression "FUN_00049bd0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }" { (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar10);" (call_expression "FUN_000411f0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" ( (pointer_expression "*(undefined4 *)(iVar11 + 4)" * (cast_expression "(undefined4 *)(iVar11 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (expression_statement "FUN_0004bdd0(iVar11);" (call_expression "FUN_0004bdd0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar4 = FUN_00041b70(iVar2,uVar7);" (assignment_expression "iVar4 = FUN_00041b70(iVar2,uVar7)" identifier = (call_expression "FUN_00041b70(iVar2,uVar7)" identifier (argument_list "(iVar2,uVar7)" ( identifier , identifier )))) ;) (expression_statement "bVar12 = iVar4 == 0;" (assignment_expression "bVar12 = iVar4 == 0" identifier = (binary_expression "iVar4 == 0" identifier == number_literal)) ;) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (goto_statement "goto LAB_0004ce42;" goto statement_identifier ;) })) (expression_statement "FUN_0004bdd0(iVar11);" (call_expression "FUN_0004bdd0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) }))) })) })) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar10);" (call_expression "FUN_000411f0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }))) }) (else_clause "else {\n              bVar12 = false;\n            }" else (compound_statement "{\n              bVar12 = false;\n            }" { (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }))) (labeled_statement "LAB_0004ce42:\n            FUN_000411f0(iVar2);" statement_identifier : (expression_statement "FUN_000411f0(iVar2);" (call_expression "FUN_000411f0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;)) (expression_statement "FUN_000411f0(iVar8);" (call_expression "FUN_000411f0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "FUN_000411f0(iVar2);" (call_expression "FUN_000411f0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) })) }))) })) })) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (labeled_statement "LAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0006dad0();\n  }" { comment (expression_statement "FUN_0006dad0();" (call_expression "FUN_0006dad0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return bVar12;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint ecdsa_verifysig(void *key,char *sig,int siglen,char *data,int datalen)\n\n{\n  int iVar1;\n  ec_curve *peVar2;\n  char *p_00;\n  int iVar3;\n  uint uVar4;\n  ec_point *peVar5;\n  int iVar6;\n  Bignum_conflict pBVar7;\n  Bignum_conflict pBVar8;\n  ec_point *peVar9;\n  ec_point *peVar10;\n  ec_point *point;\n  undefined4 uVar11;\n  Bignum_conflict pBVar12;\n  Bignum_conflict pBVar13;\n  Bignum_conflict b_00;\n  Bignum_conflict b_01;\n  int in_GS_OFFSET;\n  Bignum_conflict local_168;\n  char *local_150 [4];\n  uchar b;\n  char *p;\n  int slen;\n  SHA512_State hs;\n  uchar digest [64];\n  \n  p_00 = data;\n  local_150[0] = sig;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&\n     (*(int *)((int)key + 4) != 0)) {\n                    /* WARNING: Load size is inaccurate */\n    iVar6 = *(int *)(*key + 0x38);\n    getstring(local_150,&siglen,&p,&slen);\n                    /* WARNING: Load size is inaccurate */\n    if (((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)) {\n      peVar2 = *(ec_curve **)((int)key + 4);\n      if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }\n    }\n  }\n  uVar4 = 0;\nLAB_0004cb12:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar4;\n}\n\n" comment comment (function_definition "int ecdsa_verifysig(void *key,char *sig,int siglen,char *data,int datalen)\n\n{\n  int iVar1;\n  ec_curve *peVar2;\n  char *p_00;\n  int iVar3;\n  uint uVar4;\n  ec_point *peVar5;\n  int iVar6;\n  Bignum_conflict pBVar7;\n  Bignum_conflict pBVar8;\n  ec_point *peVar9;\n  ec_point *peVar10;\n  ec_point *point;\n  undefined4 uVar11;\n  Bignum_conflict pBVar12;\n  Bignum_conflict pBVar13;\n  Bignum_conflict b_00;\n  Bignum_conflict b_01;\n  int in_GS_OFFSET;\n  Bignum_conflict local_168;\n  char *local_150 [4];\n  uchar b;\n  char *p;\n  int slen;\n  SHA512_State hs;\n  uchar digest [64];\n  \n  p_00 = data;\n  local_150[0] = sig;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&\n     (*(int *)((int)key + 4) != 0)) {\n                    /* WARNING: Load size is inaccurate */\n    iVar6 = *(int *)(*key + 0x38);\n    getstring(local_150,&siglen,&p,&slen);\n                    /* WARNING: Load size is inaccurate */\n    if (((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)) {\n      peVar2 = *(ec_curve **)((int)key + 4);\n      if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }\n    }\n  }\n  uVar4 = 0;\nLAB_0004cb12:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar4;\n}" primitive_type (function_declarator "ecdsa_verifysig(void *key,char *sig,int siglen,char *data,int datalen)" identifier (parameter_list "(void *key,char *sig,int siglen,char *data,int datalen)" ( (parameter_declaration "void *key" primitive_type (pointer_declarator "*key" * identifier)) , (parameter_declaration "char *sig" primitive_type (pointer_declarator "*sig" * identifier)) , (parameter_declaration "int siglen" primitive_type identifier) , (parameter_declaration "char *data" primitive_type (pointer_declarator "*data" * identifier)) , (parameter_declaration "int datalen" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  ec_curve *peVar2;\n  char *p_00;\n  int iVar3;\n  uint uVar4;\n  ec_point *peVar5;\n  int iVar6;\n  Bignum_conflict pBVar7;\n  Bignum_conflict pBVar8;\n  ec_point *peVar9;\n  ec_point *peVar10;\n  ec_point *point;\n  undefined4 uVar11;\n  Bignum_conflict pBVar12;\n  Bignum_conflict pBVar13;\n  Bignum_conflict b_00;\n  Bignum_conflict b_01;\n  int in_GS_OFFSET;\n  Bignum_conflict local_168;\n  char *local_150 [4];\n  uchar b;\n  char *p;\n  int slen;\n  SHA512_State hs;\n  uchar digest [64];\n  \n  p_00 = data;\n  local_150[0] = sig;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&\n     (*(int *)((int)key + 4) != 0)) {\n                    /* WARNING: Load size is inaccurate */\n    iVar6 = *(int *)(*key + 0x38);\n    getstring(local_150,&siglen,&p,&slen);\n                    /* WARNING: Load size is inaccurate */\n    if (((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)) {\n      peVar2 = *(ec_curve **)((int)key + 4);\n      if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }\n    }\n  }\n  uVar4 = 0;\nLAB_0004cb12:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ec_curve *peVar2;" type_identifier (pointer_declarator "*peVar2" * identifier) ;) (declaration "char *p_00;" primitive_type (pointer_declarator "*p_00" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "ec_point *peVar5;" type_identifier (pointer_declarator "*peVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "Bignum_conflict pBVar7;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar8;" type_identifier identifier ;) (declaration "ec_point *peVar9;" type_identifier (pointer_declarator "*peVar9" * identifier) ;) (declaration "ec_point *peVar10;" type_identifier (pointer_declarator "*peVar10" * identifier) ;) (declaration "ec_point *point;" type_identifier (pointer_declarator "*point" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar12;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar13;" type_identifier identifier ;) (declaration "Bignum_conflict b_00;" type_identifier identifier ;) (declaration "Bignum_conflict b_01;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "Bignum_conflict local_168;" type_identifier identifier ;) (declaration "char *local_150 [4];" primitive_type (pointer_declarator "*local_150 [4]" * (array_declarator "local_150 [4]" identifier [ number_literal ])) ;) (declaration "uchar b;" type_identifier identifier ;) (declaration "char *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "int slen;" primitive_type identifier ;) (declaration "SHA512_State hs;" type_identifier identifier ;) (declaration "uchar digest [64];" type_identifier (array_declarator "digest [64]" identifier [ number_literal ]) ;) (expression_statement "p_00 = data;" (assignment_expression "p_00 = data" identifier = identifier) ;) (expression_statement "local_150[0] = sig;" (assignment_expression "local_150[0] = sig" (subscript_expression "local_150[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&\n     (*(int *)((int)key + 4) != 0)) {\n                    /* WARNING: Load size is inaccurate */\n    iVar6 = *(int *)(*key + 0x38);\n    getstring(local_150,&siglen,&p,&slen);\n                    /* WARNING: Load size is inaccurate */\n    if (((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)) {\n      peVar2 = *(ec_curve **)((int)key + 4);\n      if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }\n    }\n  }" if (parenthesized_expression "(((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&\n     (*(int *)((int)key + 4) != 0))" ( (binary_expression "((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&\n     (*(int *)((int)key + 4) != 0)" (parenthesized_expression "((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0))" ( (binary_expression "(*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)" (parenthesized_expression "(*(int *)((int)key + 8) != 0)" ( (binary_expression "*(int *)((int)key + 8) != 0" (pointer_expression "*(int *)((int)key + 8)" * (cast_expression "(int *)((int)key + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 8)" ( (binary_expression "(int)key + 8" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)((int)key + 0xc) != 0)" ( (binary_expression "*(int *)((int)key + 0xc) != 0" (pointer_expression "*(int *)((int)key + 0xc)" * (cast_expression "(int *)((int)key + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 0xc)" ( (binary_expression "(int)key + 0xc" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)((int)key + 4) != 0)" ( (binary_expression "*(int *)((int)key + 4) != 0" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Load size is inaccurate */\n    iVar6 = *(int *)(*key + 0x38);\n    getstring(local_150,&siglen,&p,&slen);\n                    /* WARNING: Load size is inaccurate */\n    if (((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)) {\n      peVar2 = *(ec_curve **)((int)key + 4);\n      if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }\n    }\n  }" { comment (expression_statement "iVar6 = *(int *)(*key + 0x38);" (assignment_expression "iVar6 = *(int *)(*key + 0x38)" identifier = (pointer_expression "*(int *)(*key + 0x38)" * (cast_expression "(int *)(*key + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*key + 0x38)" ( (binary_expression "*key + 0x38" (pointer_expression "*key" * identifier) + number_literal) ))))) ;) (expression_statement "getstring(local_150,&siglen,&p,&slen);" (call_expression "getstring(local_150,&siglen,&p,&slen)" identifier (argument_list "(local_150,&siglen,&p,&slen)" ( identifier , (pointer_expression "&siglen" & identifier) , (pointer_expression "&p" & identifier) , (pointer_expression "&slen" & identifier) ))) ;) comment (if_statement "if (((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)) {\n      peVar2 = *(ec_curve **)((int)key + 4);\n      if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }\n    }" if (parenthesized_expression "(((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0))" ( (binary_expression "((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))\n       && (getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)" (parenthesized_expression "((p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0))" ( (binary_expression "(p != (char *)0x0) && (iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0)" (parenthesized_expression "(p != (char *)0x0)" ( (binary_expression "p != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0)" ( (comma_expression "iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30)), iVar3 != 0" (assignment_expression "iVar3 = match_ssh_id(slen,p,*(char **)(*key + 0x30))" identifier = (call_expression "match_ssh_id(slen,p,*(char **)(*key + 0x30))" identifier (argument_list "(slen,p,*(char **)(*key + 0x30))" ( identifier , identifier , (pointer_expression "*(char **)(*key + 0x30)" * (cast_expression "(char **)(*key + 0x30)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*key + 0x30)" ( (binary_expression "*key + 0x30" (pointer_expression "*key" * identifier) + number_literal) )))) )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(getstring(local_150,&siglen,&p,&slen), p != (char *)0x0)" ( (comma_expression "getstring(local_150,&siglen,&p,&slen), p != (char *)0x0" (call_expression "getstring(local_150,&siglen,&p,&slen)" identifier (argument_list "(local_150,&siglen,&p,&slen)" ( identifier , (pointer_expression "&siglen" & identifier) , (pointer_expression "&p" & identifier) , (pointer_expression "&slen" & identifier) ))) , (binary_expression "p != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      peVar2 = *(ec_curve **)((int)key + 4);\n      if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }\n    }" { (expression_statement "peVar2 = *(ec_curve **)((int)key + 4);" (assignment_expression "peVar2 = *(ec_curve **)((int)key + 4)" identifier = (pointer_expression "*(ec_curve **)((int)key + 4)" * (cast_expression "(ec_curve **)((int)key + 4)" ( (type_descriptor "ec_curve **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (peVar2->type == ADDRTYPE_IPV6) {\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }\n      else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }" if (parenthesized_expression "(peVar2->type == ADDRTYPE_IPV6)" ( (binary_expression "peVar2->type == ADDRTYPE_IPV6" (field_expression "peVar2->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }\n      }" { (if_statement "if (((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)) {\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }" if (parenthesized_expression "(((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100))" ( (binary_expression "((peVar2->fieldBits >> 3) * 2 == slen) && (peVar2->fieldBits == 0x100)" (parenthesized_expression "((peVar2->fieldBits >> 3) * 2 == slen)" ( (binary_expression "(peVar2->fieldBits >> 3) * 2 == slen" (binary_expression "(peVar2->fieldBits >> 3) * 2" (parenthesized_expression "(peVar2->fieldBits >> 3)" ( (binary_expression "peVar2->fieldBits >> 3" (field_expression "peVar2->fieldBits" identifier -> field_identifier) >> number_literal) )) * number_literal) == identifier) )) && (parenthesized_expression "(peVar2->fieldBits == 0x100)" ( (binary_expression "peVar2->fieldBits == 0x100" (field_expression "peVar2->fieldBits" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n          peVar5 = (ec_point *)safemalloc(1,0x14);\n          peVar5->z = (Bignum)0x0;\n          peVar5->curve = peVar2;\n          peVar5->x = (Bignum)0x0;\n          peVar5->y = (Bignum)0x0;\n          peVar5->infinity = '\0';\n          iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);\n          if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);\n          SHA512_Init((SHA512_CTX *)&hs);\n          SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);\n          uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;\n          if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }\n          local_168 = (Bignum_conflict)&b;\n          iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);\n          b = (byte)iVar6 & 0x7f;\n          iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);\n          b = b | (byte)(iVar6 << 7);\n          SHA512_Bytes(&hs,local_168,1);\n          SHA512_Bytes(&hs,p_00,datalen);\n          SHA512_Final(&hs,digest);\n          pBVar8 = bignum_from_bytes_le(digest,0x40);\n          peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);\n          freebn(pBVar7);\n          if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          ec_point_free(peVar5);\n          freebn(pBVar8);\n        }" { (expression_statement "peVar5 = (ec_point *)safemalloc(1,0x14);" (assignment_expression "peVar5 = (ec_point *)safemalloc(1,0x14)" identifier = (cast_expression "(ec_point *)safemalloc(1,0x14)" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x14)" identifier (argument_list "(1,0x14)" ( number_literal , number_literal ))))) ;) (expression_statement "peVar5->z = (Bignum)0x0;" (assignment_expression "peVar5->z = (Bignum)0x0" (field_expression "peVar5->z" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) (expression_statement "peVar5->curve = peVar2;" (assignment_expression "peVar5->curve = peVar2" (field_expression "peVar5->curve" identifier -> field_identifier) = identifier) ;) (expression_statement "peVar5->x = (Bignum)0x0;" (assignment_expression "peVar5->x = (Bignum)0x0" (field_expression "peVar5->x" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) (expression_statement "peVar5->y = (Bignum)0x0;" (assignment_expression "peVar5->y = (Bignum)0x0" (field_expression "peVar5->y" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) (expression_statement "peVar5->infinity = '\0';" (assignment_expression "peVar5->infinity = '\0'" (field_expression "peVar5->infinity" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5);" (assignment_expression "iVar6 = decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5)" identifier = (call_expression "decodepoint(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5)" identifier (argument_list "(p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3,peVar5)" ( identifier , (binary_expression "*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3" (pointer_expression "*(uint *)(*(int *)((int)key + 4) + 0xc)" * (cast_expression "(uint *)(*(int *)((int)key + 4) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0xc)" ( (binary_expression "*(int *)((int)key + 4) + 0xc" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) >> number_literal) , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            ec_point_free(peVar5);\n            uVar4 = 0;\n            goto LAB_0004cb12;\n          }" { (expression_statement "ec_point_free(peVar5);" (call_expression "ec_point_free(peVar5)" identifier (argument_list "(peVar5)" ( identifier ))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;" (assignment_expression "uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3" identifier = (binary_expression "*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3" (pointer_expression "*(uint *)(*(int *)((int)key + 4) + 0xc)" * (cast_expression "(uint *)(*(int *)((int)key + 4) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0xc)" ( (binary_expression "*(int *)((int)key + 4) + 0xc" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) >> number_literal)) ;) (expression_statement "pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4);" (assignment_expression "pBVar7 = bignum_from_bytes_le((uchar *)(p + uVar4),uVar4)" identifier = (call_expression "bignum_from_bytes_le((uchar *)(p + uVar4),uVar4)" identifier (argument_list "((uchar *)(p + uVar4),uVar4)" ( (cast_expression "(uchar *)(p + uVar4)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p + uVar4)" ( (binary_expression "p + uVar4" identifier + identifier) ))) , identifier )))) ;) (expression_statement "SHA512_Init((SHA512_CTX *)&hs);" (call_expression "SHA512_Init((SHA512_CTX *)&hs)" identifier (argument_list "((SHA512_CTX *)&hs)" ( (cast_expression "(SHA512_CTX *)&hs" ( (type_descriptor "SHA512_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&hs" & identifier)) ))) ;) (expression_statement "SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3);" (call_expression "SHA512_Bytes(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3)" identifier (argument_list "(&hs,p,*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3)" ( (pointer_expression "&hs" & identifier) , identifier , (binary_expression "*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3" (pointer_expression "*(uint *)(*(int *)((int)key + 4) + 0xc)" * (cast_expression "(uint *)(*(int *)((int)key + 4) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0xc)" ( (binary_expression "*(int *)((int)key + 4) + 0xc" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) >> number_literal) ))) ;) (expression_statement "uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3;" (assignment_expression "uVar4 = *(uint *)(*(int *)((int)key + 4) + 0xc) >> 3" identifier = (binary_expression "*(uint *)(*(int *)((int)key + 4) + 0xc) >> 3" (pointer_expression "*(uint *)(*(int *)((int)key + 4) + 0xc)" * (cast_expression "(uint *)(*(int *)((int)key + 4) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0xc)" ( (binary_expression "*(int *)((int)key + 4) + 0xc" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) >> number_literal)) ;) (if_statement "if (uVar4 < 2) {\n            iVar6 = 0;\n          }\n          else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }" if (parenthesized_expression "(uVar4 < 2)" ( (binary_expression "uVar4 < 2" identifier < number_literal) )) (compound_statement "{\n            iVar6 = 0;\n          }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }" else (compound_statement "{\n            iVar3 = 0;\n            do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);\n          }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            } while (uVar4 - 1 != iVar6);" do (compound_statement "{\n              iVar6 = iVar3 + 1;\n              iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);\n              b = (uchar)iVar3;\n              SHA512_Bytes(&hs,&b,1);\n              iVar3 = iVar6;\n            }" { (expression_statement "iVar6 = iVar3 + 1;" (assignment_expression "iVar6 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3);" (assignment_expression "iVar3 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3)" identifier = (call_expression "bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar3)" identifier (argument_list "(*(Bignum_conflict *)((int)key + 0xc),iVar3)" ( (pointer_expression "*(Bignum_conflict *)((int)key + 0xc)" * (cast_expression "(Bignum_conflict *)((int)key + 0xc)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 0xc)" ( (binary_expression "(int)key + 0xc" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier )))) ;) (expression_statement "b = (uchar)iVar3;" (assignment_expression "b = (uchar)iVar3" identifier = (cast_expression "(uchar)iVar3" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "SHA512_Bytes(&hs,&b,1);" (call_expression "SHA512_Bytes(&hs,&b,1)" identifier (argument_list "(&hs,&b,1)" ( (pointer_expression "&hs" & identifier) , (pointer_expression "&b" & identifier) , number_literal ))) ;) (expression_statement "iVar3 = iVar6;" (assignment_expression "iVar3 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 - 1 != iVar6)" ( (binary_expression "uVar4 - 1 != iVar6" (binary_expression "uVar4 - 1" identifier - number_literal) != identifier) )) ;) }))) (expression_statement "local_168 = (Bignum_conflict)&b;" (assignment_expression "local_168 = (Bignum_conflict)&b" identifier = (binary_expression "(Bignum_conflict)&b" (parenthesized_expression "(Bignum_conflict)" ( identifier )) & identifier)) ;) (expression_statement "iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6);" (assignment_expression "iVar6 = bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6)" identifier = (call_expression "bignum_byte(*(Bignum_conflict *)((int)key + 0xc),iVar6)" identifier (argument_list "(*(Bignum_conflict *)((int)key + 0xc),iVar6)" ( (pointer_expression "*(Bignum_conflict *)((int)key + 0xc)" * (cast_expression "(Bignum_conflict *)((int)key + 0xc)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 0xc)" ( (binary_expression "(int)key + 0xc" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier )))) ;) (expression_statement "b = (byte)iVar6 & 0x7f;" (assignment_expression "b = (byte)iVar6 & 0x7f" identifier = (binary_expression "(byte)iVar6 & 0x7f" (cast_expression "(byte)iVar6" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0);" (assignment_expression "iVar6 = bignum_bit(*(Bignum_conflict *)((int)key + 8),0)" identifier = (call_expression "bignum_bit(*(Bignum_conflict *)((int)key + 8),0)" identifier (argument_list "(*(Bignum_conflict *)((int)key + 8),0)" ( (pointer_expression "*(Bignum_conflict *)((int)key + 8)" * (cast_expression "(Bignum_conflict *)((int)key + 8)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 8)" ( (binary_expression "(int)key + 8" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , number_literal )))) ;) (expression_statement "b = b | (byte)(iVar6 << 7);" (assignment_expression "b = b | (byte)(iVar6 << 7)" identifier = (binary_expression "b | (byte)(iVar6 << 7)" identifier | (call_expression "(byte)(iVar6 << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar6 << 7)" ( (binary_expression "iVar6 << 7" identifier << number_literal) ))))) ;) (expression_statement "SHA512_Bytes(&hs,local_168,1);" (call_expression "SHA512_Bytes(&hs,local_168,1)" identifier (argument_list "(&hs,local_168,1)" ( (pointer_expression "&hs" & identifier) , identifier , number_literal ))) ;) (expression_statement "SHA512_Bytes(&hs,p_00,datalen);" (call_expression "SHA512_Bytes(&hs,p_00,datalen)" identifier (argument_list "(&hs,p_00,datalen)" ( (pointer_expression "&hs" & identifier) , identifier , identifier ))) ;) (expression_statement "SHA512_Final(&hs,digest);" (call_expression "SHA512_Final(&hs,digest)" identifier (argument_list "(&hs,digest)" ( (pointer_expression "&hs" & identifier) , identifier ))) ;) (expression_statement "pBVar8 = bignum_from_bytes_le(digest,0x40);" (assignment_expression "pBVar8 = bignum_from_bytes_le(digest,0x40)" identifier = (call_expression "bignum_from_bytes_le(digest,0x40)" identifier (argument_list "(digest,0x40)" ( identifier , number_literal )))) ;) (expression_statement "peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7);" (assignment_expression "peVar9 = ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7)" identifier = (call_expression "ecp_mul((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7)" identifier (argument_list "((ec_point *)(*(int *)((int)key + 4) + 0x1c),pBVar7)" ( (cast_expression "(ec_point *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))) , identifier )))) ;) (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;) (if_statement "if (peVar9 != (ec_point *)0x0) {\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(peVar9 != (ec_point *)0x0)" ( (binary_expression "peVar9 != (ec_point *)0x0" identifier != (cast_expression "(ec_point *)0x0" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);\n            freebn(pBVar8);\n            if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }\n            goto LAB_0004cb12;\n          }" { (expression_statement "peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8);" (assignment_expression "peVar10 = ecp_mul((ec_point *)((int)key + 4),pBVar8)" identifier = (call_expression "ecp_mul((ec_point *)((int)key + 4),pBVar8)" identifier (argument_list "((ec_point *)((int)key + 4),pBVar8)" ( (cast_expression "(ec_point *)((int)key + 4)" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier )))) ;) (expression_statement "freebn(pBVar8);" (call_expression "freebn(pBVar8)" identifier (argument_list "(pBVar8)" ( identifier ))) ;) (if_statement "if (peVar10 == (ec_point *)0x0) {\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }\n            else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }" if (parenthesized_expression "(peVar10 == (ec_point *)0x0)" ( (binary_expression "peVar10 == (ec_point *)0x0" identifier == (cast_expression "(ec_point *)0x0" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              ec_point_free(peVar9);\n              ec_point_free(peVar5);\n              uVar4 = 0;\n            }" { (expression_statement "ec_point_free(peVar9);" (call_expression "ec_point_free(peVar9)" identifier (argument_list "(peVar9)" ( identifier ))) ;) (expression_statement "ec_point_free(peVar5);" (call_expression "ec_point_free(peVar5)" identifier (argument_list "(peVar5)" ( identifier ))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }" else (compound_statement "{\n              point = ecp_add(peVar5,peVar10,0);\n              ec_point_free(peVar5);\n              ec_point_free(peVar10);\n              if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }\n            }" { (expression_statement "point = ecp_add(peVar5,peVar10,0);" (assignment_expression "point = ecp_add(peVar5,peVar10,0)" identifier = (call_expression "ecp_add(peVar5,peVar10,0)" identifier (argument_list "(peVar5,peVar10,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "ec_point_free(peVar5);" (call_expression "ec_point_free(peVar5)" identifier (argument_list "(peVar5)" ( identifier ))) ;) (expression_statement "ec_point_free(peVar10);" (call_expression "ec_point_free(peVar10)" identifier (argument_list "(peVar10)" ( identifier ))) ;) (if_statement "if (point == (ec_point *)0x0) {\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }\n              else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }" if (parenthesized_expression "(point == (ec_point *)0x0)" ( (binary_expression "point == (ec_point *)0x0" identifier == (cast_expression "(ec_point *)0x0" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                ec_point_free(peVar9);\n                uVar4 = 0;\n              }" { (expression_statement "ec_point_free(peVar9);" (call_expression "ec_point_free(peVar9)" identifier (argument_list "(peVar9)" ( identifier ))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }" else (compound_statement "{\n                iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);\n                uVar4 = 0;\n                if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }\n                ec_point_free(peVar9);\n                ec_point_free(point);\n              }" { (expression_statement "iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x);" (assignment_expression "iVar6 = bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x)" identifier = (call_expression "bignum_cmp((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x)" identifier (argument_list "((Bignum_conflict)peVar9->x,(Bignum_conflict)point->x)" ( (cast_expression "(Bignum_conflict)peVar9->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "peVar9->x" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)point->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->x" identifier -> field_identifier)) )))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar6 == 0) {\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);\n                  uVar4 = (uint)(iVar6 == 0);\n                }" { (expression_statement "iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y);" (assignment_expression "iVar6 = bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y)" identifier = (call_expression "bignum_cmp((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y)" identifier (argument_list "((Bignum_conflict)peVar9->y,(Bignum_conflict)point->y)" ( (cast_expression "(Bignum_conflict)peVar9->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "peVar9->y" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)point->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->y" identifier -> field_identifier)) )))) ;) (expression_statement "uVar4 = (uint)(iVar6 == 0);" (assignment_expression "uVar4 = (uint)(iVar6 == 0)" identifier = (call_expression "(uint)(iVar6 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )))) ;) })) (expression_statement "ec_point_free(peVar9);" (call_expression "ec_point_free(peVar9)" identifier (argument_list "(peVar9)" ( identifier ))) ;) (expression_statement "ec_point_free(point);" (call_expression "ec_point_free(point)" identifier (argument_list "(point)" ( identifier ))) ;) }))) }))) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "ec_point_free(peVar5);" (call_expression "ec_point_free(peVar5)" identifier (argument_list "(peVar5)" ( identifier ))) ;) (expression_statement "freebn(pBVar8);" (call_expression "freebn(pBVar8)" identifier (argument_list "(pBVar8)" ( identifier ))) ;) })) }) (else_clause "else {\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }" else (compound_statement "{\n        pBVar7 = (Bignum_conflict)getmp(&p,&slen);\n        if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }\n      }" { (expression_statement "pBVar7 = (Bignum_conflict)getmp(&p,&slen);" (assignment_expression "pBVar7 = (Bignum_conflict)getmp(&p,&slen)" identifier = (cast_expression "(Bignum_conflict)getmp(&p,&slen)" ( (type_descriptor "Bignum_conflict" type_identifier) ) (call_expression "getmp(&p,&slen)" identifier (argument_list "(&p,&slen)" ( (pointer_expression "&p" & identifier) , (pointer_expression "&slen" & identifier) ))))) ;) (if_statement "if (pBVar7 != (Bignum_conflict)0x0) {\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }" if (parenthesized_expression "(pBVar7 != (Bignum_conflict)0x0)" ( (binary_expression "pBVar7 != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n          pBVar8 = (Bignum_conflict)getmp(&p,&slen);\n          if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }\n          freebn(pBVar7);\n        }" { (expression_statement "pBVar8 = (Bignum_conflict)getmp(&p,&slen);" (assignment_expression "pBVar8 = (Bignum_conflict)getmp(&p,&slen)" identifier = (cast_expression "(Bignum_conflict)getmp(&p,&slen)" ( (type_descriptor "Bignum_conflict" type_identifier) ) (call_expression "getmp(&p,&slen)" identifier (argument_list "(&p,&slen)" ( (pointer_expression "&p" & identifier) , (pointer_expression "&slen" & identifier) ))))) ;) (if_statement "if (pBVar8 != (Bignum_conflict)0x0) {\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(pBVar8 != (Bignum_conflict)0x0)" ( (binary_expression "pBVar8 != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n            uVar4 = (*(undefined4 **)(iVar6 + 4))[5];\n            if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();\n            (**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);\n            (**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);\n            if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }\nLAB_0004ce42:\n            freebn(pBVar7);\n            freebn(pBVar8);\n            goto LAB_0004cb12;\n          }" { (expression_statement "uVar4 = (*(undefined4 **)(iVar6 + 4))[5];" (assignment_expression "uVar4 = (*(undefined4 **)(iVar6 + 4))[5]" identifier = (subscript_expression "(*(undefined4 **)(iVar6 + 4))[5]" (parenthesized_expression "(*(undefined4 **)(iVar6 + 4))" ( (pointer_expression "*(undefined4 **)(iVar6 + 4)" * (cast_expression "(undefined4 **)(iVar6 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if (0x40 < uVar4) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" if (parenthesized_expression "(0x40 < uVar4)" ( (binary_expression "0x40 < uVar4" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" { comment (expression_statement "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");" (call_expression "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" identifier (argument_list "("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" ( (string_literal ""digestLen <= sizeof(digest)"" " string_content ") , (string_literal ""sshecc.c"" " string_content ") , number_literal , (string_literal ""ecdsa_verifysig"" " string_content ") ))) ;) })) (expression_statement "uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))();" (assignment_expression "uVar11 = (*(code *)**(undefined4 **)(iVar6 + 4))()" identifier = (call_expression "(*(code *)**(undefined4 **)(iVar6 + 4))()" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar6 + 4))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar6 + 4)" * (cast_expression "(code *)**(undefined4 **)(iVar6 + 4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar6 + 4)" * (pointer_expression "*(undefined4 **)(iVar6 + 4)" * (cast_expression "(undefined4 **)(iVar6 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) ))))))) )) (argument_list "()" ( )))) ;) (expression_statement "(**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen);" (call_expression "(**(code **)(*(int *)(iVar6 + 4) + 8))(uVar11,p_00,datalen)" (parenthesized_expression "(**(code **)(*(int *)(iVar6 + 4) + 8))" ( (pointer_expression "**(code **)(*(int *)(iVar6 + 4) + 8)" * (pointer_expression "*(code **)(*(int *)(iVar6 + 4) + 8)" * (cast_expression "(code **)(*(int *)(iVar6 + 4) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar6 + 4) + 8)" ( (binary_expression "*(int *)(iVar6 + 4) + 8" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(uVar11,p_00,datalen)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest);" (call_expression "(**(code **)(*(int *)(iVar6 + 4) + 0xc))(uVar11,digest)" (parenthesized_expression "(**(code **)(*(int *)(iVar6 + 4) + 0xc))" ( (pointer_expression "**(code **)(*(int *)(iVar6 + 4) + 0xc)" * (pointer_expression "*(code **)(*(int *)(iVar6 + 4) + 0xc)" * (cast_expression "(code **)(*(int *)(iVar6 + 4) + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar6 + 4) + 0xc)" ( (binary_expression "*(int *)(iVar6 + 4) + 0xc" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(uVar11,digest)" ( identifier , identifier ))) ;) (if_statement "if (((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))) {\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }\n            else {\n              uVar4 = 0;\n            }" if (parenthesized_expression "(((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0))))))" ( (binary_expression "((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))\n               && ((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))" (parenthesized_expression "((**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0))" ( (binary_expression "(**(int **)((int)key + 4) == 0) && (iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0)" (parenthesized_expression "(**(int **)((int)key + 4) == 0)" ( (binary_expression "**(int **)((int)key + 4) == 0" (pointer_expression "**(int **)((int)key + 4)" * (pointer_expression "*(int **)((int)key + 4)" * (cast_expression "(int **)((int)key + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) == number_literal) )) && (parenthesized_expression "(iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0)" ( (comma_expression "iVar6 = bignum_cmp(pBVar7,Zero), iVar6 != 0" (assignment_expression "iVar6 = bignum_cmp(pBVar7,Zero)" identifier = (call_expression "bignum_cmp(pBVar7,Zero)" identifier (argument_list "(pBVar7,Zero)" ( identifier , identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))))" ( (parenthesized_expression "(iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0))))" ( (comma_expression "iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                   iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))" (assignment_expression "iVar6 = bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "bignum_cmp(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "(pBVar7,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( identifier , (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) , (binary_expression "iVar6 < 0 &&\n                   ((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))" (binary_expression "iVar6 < 0" identifier < number_literal) && (parenthesized_expression "((iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)))" ( (parenthesized_expression "(iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0))" ( (comma_expression "iVar6 = bignum_cmp(pBVar8,Zero), iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)" (assignment_expression "iVar6 = bignum_cmp(pBVar8,Zero)" identifier = (call_expression "bignum_cmp(pBVar8,Zero)" identifier (argument_list "(pBVar8,Zero)" ( identifier , identifier )))) , (binary_expression "iVar6 != 0 &&\n                    (iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)" (binary_expression "iVar6 != 0" identifier != number_literal) && (parenthesized_expression "(iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0)" ( (comma_expression "iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)),\n                    iVar6 < 0" (assignment_expression "iVar6 = bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "bignum_cmp(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( identifier , (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) , (binary_expression "iVar6 < 0" identifier < number_literal)) )))) )) )))) )) ))) )) (compound_statement "{\n              pBVar12 = bignum_from_bytes(digest,uVar4);\n              iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              iVar3 = bignum_bitcount(pBVar12);\n              local_168 = pBVar12;\n              if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }\n              pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              freebn(local_168);\n              pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n              if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n            }" { (expression_statement "pBVar12 = bignum_from_bytes(digest,uVar4);" (assignment_expression "pBVar12 = bignum_from_bytes(digest,uVar4)" identifier = (call_expression "bignum_from_bytes(digest,uVar4)" identifier (argument_list "(digest,uVar4)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));" (assignment_expression "iVar6 = bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "bignum_bitcount(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "(*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "iVar3 = bignum_bitcount(pBVar12);" (assignment_expression "iVar3 = bignum_bitcount(pBVar12)" identifier = (call_expression "bignum_bitcount(pBVar12)" identifier (argument_list "(pBVar12)" ( identifier )))) ;) (expression_statement "local_168 = pBVar12;" (assignment_expression "local_168 = pBVar12" identifier = identifier) ;) (if_statement "if (iVar6 < iVar3) {\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }" if (parenthesized_expression "(iVar6 < iVar3)" ( (binary_expression "iVar6 < iVar3" identifier < identifier) )) (compound_statement "{\n                local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);\n                freebn(pBVar12);\n              }" { (expression_statement "local_168 = bignum_rshift(pBVar12,iVar3 - iVar6);" (assignment_expression "local_168 = bignum_rshift(pBVar12,iVar3 - iVar6)" identifier = (call_expression "bignum_rshift(pBVar12,iVar3 - iVar6)" identifier (argument_list "(pBVar12,iVar3 - iVar6)" ( identifier , (binary_expression "iVar3 - iVar6" identifier - identifier) )))) ;) (expression_statement "freebn(pBVar12);" (call_expression "freebn(pBVar12)" identifier (argument_list "(pBVar12)" ( identifier ))) ;) })) (expression_statement "pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));" (assignment_expression "pBVar12 = bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "bigmod(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "(local_168,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( identifier , (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "freebn(local_168);" (call_expression "freebn(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));" (assignment_expression "pBVar13 = modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "modinv(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "(pBVar8,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( identifier , (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (if_statement "if (pBVar13 == (Bignum_conflict)0x0) {\n                freebn(pBVar12);\n                uVar4 = 0;\n              }\n              else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }" if (parenthesized_expression "(pBVar13 == (Bignum_conflict)0x0)" ( (binary_expression "pBVar13 == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n                freebn(pBVar12);\n                uVar4 = 0;\n              }" { (expression_statement "freebn(pBVar12);" (call_expression "freebn(pBVar12)" identifier (argument_list "(pBVar12)" ( identifier ))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }" else (compound_statement "{\n                b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                freebn(pBVar13);\n                if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }\n                freebn(b_00);\n                freebn(b_01);\n                freebn(pBVar12);\n                uVar4 = 0;\n              }" { (expression_statement "b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));" (assignment_expression "b_00 = modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "modmul(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "(pBVar12,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( identifier , identifier , (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));" (assignment_expression "b_01 = modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "modmul(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "(pBVar7,pBVar13,*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( identifier , identifier , (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "freebn(pBVar13);" (call_expression "freebn(pBVar13)" identifier (argument_list "(pBVar13)" ( identifier ))) ;) (if_statement "if ((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC) {\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }" if (parenthesized_expression "((*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC)" ( (binary_expression "(*(ec_curve **)((int)key + 4))->type == ADDRTYPE_UNSPEC" (field_expression "(*(ec_curve **)((int)key + 4))->type" (parenthesized_expression "(*(ec_curve **)((int)key + 4))" ( (pointer_expression "*(ec_curve **)((int)key + 4)" * (cast_expression "(ec_curve **)((int)key + 4)" ( (type_descriptor "ec_curve **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) -> field_identifier) == identifier) )) (compound_statement "{\n                  iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));\n                  peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);\n                  if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }\n                }" { (expression_statement "iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4));" (assignment_expression "iVar6 = ec_aminus3(*(ec_curve **)((int)key + 4))" identifier = (call_expression "ec_aminus3(*(ec_curve **)((int)key + 4))" identifier (argument_list "(*(ec_curve **)((int)key + 4))" ( (pointer_expression "*(ec_curve **)((int)key + 4)" * (cast_expression "(ec_curve **)((int)key + 4)" ( (type_descriptor "ec_curve **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (expression_statement "peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6);" (assignment_expression "peVar5 = ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6)" identifier = (call_expression "ecp_mul_((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6)" identifier (argument_list "((ec_point *)(*(int *)((int)key + 4) + 0x20),b_00,iVar6)" ( (cast_expression "(ec_point *)(*(int *)((int)key + 4) + 0x20)" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x20)" ( (binary_expression "*(int *)((int)key + 4) + 0x20" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))) , identifier , identifier )))) ;) (if_statement "if (peVar5 != (ec_point *)0x0) {\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }" if (parenthesized_expression "(peVar5 != (ec_point *)0x0)" ( (binary_expression "peVar5 != (ec_point *)0x0" identifier != (cast_expression "(ec_point *)0x0" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);\n                    if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }\n                  }" { (expression_statement "peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6);" (assignment_expression "peVar9 = ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6)" identifier = (call_expression "ecp_mul_((ec_point *)((int)key + 4),b_01,iVar6)" identifier (argument_list "((ec_point *)((int)key + 4),b_01,iVar6)" ( (cast_expression "(ec_point *)((int)key + 4)" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , identifier )))) ;) (if_statement "if (peVar9 == (ec_point *)0x0) {\n                      ec_point_free(peVar5);\n                    }\n                    else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }" if (parenthesized_expression "(peVar9 == (ec_point *)0x0)" ( (binary_expression "peVar9 == (ec_point *)0x0" identifier == (cast_expression "(ec_point *)0x0" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      ec_point_free(peVar5);\n                    }" { (expression_statement "ec_point_free(peVar5);" (call_expression "ec_point_free(peVar5)" identifier (argument_list "(peVar5)" ( identifier ))) ;) }) (else_clause "else {\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }" else (compound_statement "{\n                      peVar10 = ecp_add(peVar5,peVar9,iVar6);\n                      ec_point_free(peVar5);\n                      ec_point_free(peVar9);\n                      if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }\n                      ec_point_free(peVar10);\n                    }" { (expression_statement "peVar10 = ecp_add(peVar5,peVar9,iVar6);" (assignment_expression "peVar10 = ecp_add(peVar5,peVar9,iVar6)" identifier = (call_expression "ecp_add(peVar5,peVar9,iVar6)" identifier (argument_list "(peVar5,peVar9,iVar6)" ( identifier , identifier , identifier )))) ;) (expression_statement "ec_point_free(peVar5);" (call_expression "ec_point_free(peVar5)" identifier (argument_list "(peVar5)" ( identifier ))) ;) (expression_statement "ec_point_free(peVar9);" (call_expression "ec_point_free(peVar9)" identifier (argument_list "(peVar9)" ( identifier ))) ;) (if_statement "if ((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))) {\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }" if (parenthesized_expression "((peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          )))" ( (binary_expression "(peVar10 != (ec_point *)0x0) &&\n                         ((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))" (parenthesized_expression "(peVar10 != (ec_point *)0x0)" ( (binary_expression "peVar10 != (ec_point *)0x0" identifier != (cast_expression "(ec_point *)0x0" ( (type_descriptor "ec_point *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          ))" ( (parenthesized_expression "(peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)\n                          )" ( (binary_expression "peVar10->infinity != '\0' || (iVar6 = ecp_normalise(peVar10), iVar6 != 0)" (binary_expression "peVar10->infinity != '\0'" (field_expression "peVar10->infinity" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(iVar6 = ecp_normalise(peVar10), iVar6 != 0)" ( (comma_expression "iVar6 = ecp_normalise(peVar10), iVar6 != 0" (assignment_expression "iVar6 = ecp_normalise(peVar10)" identifier = (call_expression "ecp_normalise(peVar10)" identifier (argument_list "(peVar10)" ( identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                        freebn(b_00);\n                        freebn(b_01);\n                        pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));\n                        ec_point_free(peVar10);\n                        iVar6 = bignum_cmp(pBVar7,pBVar13);\n                        uVar4 = (uint)(iVar6 == 0);\n                        freebn(pBVar13);\n                        freebn(pBVar12);\n                        goto LAB_0004ce42;\n                      }" { (expression_statement "freebn(b_00);" (call_expression "freebn(b_00)" identifier (argument_list "(b_00)" ( identifier ))) ;) (expression_statement "freebn(b_01);" (call_expression "freebn(b_01)" identifier (argument_list "(b_01)" ( identifier ))) ;) (expression_statement "pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c));" (assignment_expression "pBVar13 = bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier = (call_expression "bigmod((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" identifier (argument_list "((Bignum_conflict)peVar10->x,\n                                         *(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c))" ( (cast_expression "(Bignum_conflict)peVar10->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "peVar10->x" identifier -> field_identifier)) , (pointer_expression "*(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" * (cast_expression "(Bignum_conflict *)(*(int *)((int)key + 4) + 0x1c)" ( (type_descriptor "Bignum_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)key + 4) + 0x1c)" ( (binary_expression "*(int *)((int)key + 4) + 0x1c" (pointer_expression "*(int *)((int)key + 4)" * (cast_expression "(int *)((int)key + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)key + 4)" ( (binary_expression "(int)key + 4" (cast_expression "(int)key" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "ec_point_free(peVar10);" (call_expression "ec_point_free(peVar10)" identifier (argument_list "(peVar10)" ( identifier ))) ;) (expression_statement "iVar6 = bignum_cmp(pBVar7,pBVar13);" (assignment_expression "iVar6 = bignum_cmp(pBVar7,pBVar13)" identifier = (call_expression "bignum_cmp(pBVar7,pBVar13)" identifier (argument_list "(pBVar7,pBVar13)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = (uint)(iVar6 == 0);" (assignment_expression "uVar4 = (uint)(iVar6 == 0)" identifier = (call_expression "(uint)(iVar6 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )))) ;) (expression_statement "freebn(pBVar13);" (call_expression "freebn(pBVar13)" identifier (argument_list "(pBVar13)" ( identifier ))) ;) (expression_statement "freebn(pBVar12);" (call_expression "freebn(pBVar12)" identifier (argument_list "(pBVar12)" ( identifier ))) ;) (goto_statement "goto LAB_0004ce42;" goto statement_identifier ;) })) (expression_statement "ec_point_free(peVar10);" (call_expression "ec_point_free(peVar10)" identifier (argument_list "(peVar10)" ( identifier ))) ;) }))) })) })) (expression_statement "freebn(b_00);" (call_expression "freebn(b_00)" identifier (argument_list "(b_00)" ( identifier ))) ;) (expression_statement "freebn(b_01);" (call_expression "freebn(b_01)" identifier (argument_list "(b_01)" ( identifier ))) ;) (expression_statement "freebn(pBVar12);" (call_expression "freebn(pBVar12)" identifier (argument_list "(pBVar12)" ( identifier ))) ;) (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) ;) }))) (labeled_statement "LAB_0004ce42:\n            freebn(pBVar7);" statement_identifier : (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;)) (expression_statement "freebn(pBVar8);" (call_expression "freebn(pBVar8)" identifier (argument_list "(pBVar8)" ( identifier ))) ;) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;) })) }))) })) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0004cb12:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "bool FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return bVar12;\n}\n\n" (function_definition "bool FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return bVar12;\n}" primitive_type (function_declarator "FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" identifier (parameter_list "(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return bVar12;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte *local_168;" type_identifier (pointer_declarator "*local_168" * identifier) ;) (declaration "byte local_13d;" type_identifier identifier ;) (declaration "int local_13c;" primitive_type identifier ;) (declaration "int local_138;" primitive_type identifier ;) (declaration "undefined1 local_134 [212];" type_identifier (array_declarator "local_134 [212]" identifier [ number_literal ]) ;) (declaration "undefined1 local_60 [64];" type_identifier (array_declarator "local_60 [64]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x4ca69;" (assignment_expression "uStack_14 = 0x4ca69" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }" if (parenthesized_expression "(((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0))" ( (binary_expression "((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)" (parenthesized_expression "((param_1[2] != 0) && (param_1[3] != 0))" ( (binary_expression "(param_1[2] != 0) && (param_1[3] != 0)" (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[3] != 0)" ( (binary_expression "param_1[3] != 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }" { (expression_statement "iVar4 = *(int *)(*param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(*param_1 + 0x38)" identifier = (pointer_expression "*(int *)(*param_1 + 0x38)" * (cast_expression "(int *)(*param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_0004b200(&local_138);" (call_expression "FUN_0004b200(&local_138)" identifier (argument_list "(&local_138)" ( (pointer_expression "&local_138" & identifier) ))) ;) (if_statement "if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }" if (parenthesized_expression "(((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0))" ( (binary_expression "((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)" (parenthesized_expression "((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0))" ( (binary_expression "(local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)" (parenthesized_expression "(local_13c != 0)" ( (binary_expression "local_13c != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)" ( (comma_expression "iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0" (assignment_expression "iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" identifier = (call_expression "FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" identifier (argument_list "(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(*param_1 + 0x30)" * (cast_expression "(undefined4 *)(*param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x30)" ( (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" * identifier) + number_literal) )))) )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(FUN_0004b200(&local_138), local_13c != 0)" ( (comma_expression "FUN_0004b200(&local_138), local_13c != 0" (call_expression "FUN_0004b200(&local_138)" identifier (argument_list "(&local_138)" ( (pointer_expression "&local_138" & identifier) ))) , (binary_expression "local_13c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }" { (expression_statement "piVar1 = (int *)param_1[1];" (assignment_expression "piVar1 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" if (parenthesized_expression "(*piVar1 == 2)" ( (binary_expression "*piVar1 == 2" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }" { (if_statement "if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }" if (parenthesized_expression "((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100))" ( (binary_expression "(((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)" (parenthesized_expression "(((uint)piVar1[3] >> 3) * 2 == local_138)" ( (binary_expression "((uint)piVar1[3] >> 3) * 2 == local_138" (binary_expression "((uint)piVar1[3] >> 3) * 2" (parenthesized_expression "((uint)piVar1[3] >> 3)" ( (binary_expression "(uint)piVar1[3] >> 3" (cast_expression "(uint)piVar1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[3]" identifier [ number_literal ])) >> number_literal) )) * number_literal) == identifier) )) && (parenthesized_expression "(piVar1[3] == 0x100)" ( (binary_expression "piVar1[3] == 0x100" (subscript_expression "piVar1[3]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }" { (expression_statement "piVar3 = (int *)FUN_0001c990(1,0x14);" (assignment_expression "piVar3 = (int *)FUN_0001c990(1,0x14)" identifier = (cast_expression "(int *)FUN_0001c990(1,0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001c990(1,0x14)" identifier (argument_list "(1,0x14)" ( number_literal , number_literal ))))) ;) (expression_statement "piVar3[3] = 0;" (assignment_expression "piVar3[3] = 0" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar3 = (int)piVar1;" (assignment_expression "*piVar3 = (int)piVar1" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(piVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 4)" * (cast_expression "(undefined1 *)(piVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 4)" ( (binary_expression "piVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar4 = FUN_0004b8a0();" (assignment_expression "iVar4 = FUN_0004b8a0()" identifier = (call_expression "FUN_0004b8a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }" { (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;" (assignment_expression "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3" identifier = (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" * (cast_expression "(uint *)(param_1[1] + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);" (assignment_expression "uVar6 = FUN_00041750(uVar5 + local_13c,uVar5)" identifier = (call_expression "FUN_00041750(uVar5 + local_13c,uVar5)" identifier (argument_list "(uVar5 + local_13c,uVar5)" ( (binary_expression "uVar5 + local_13c" identifier + identifier) , identifier )))) ;) (expression_statement "FUN_00056d20(local_134);" (call_expression "FUN_00056d20(local_134)" identifier (argument_list "(local_134)" ( identifier ))) ;) (expression_statement "FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);" (call_expression "FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3)" identifier (argument_list "(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3)" ( identifier , identifier , (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" * (cast_expression "(uint *)(param_1[1] + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) >> number_literal) ))) ;) (expression_statement "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;" (assignment_expression "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3" identifier = (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" * (cast_expression "(uint *)(param_1[1] + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) >> number_literal)) ;) (if_statement "if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" if (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 2" identifier < number_literal) )) (compound_statement "{\n            iVar4 = 0;\n          }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" else (compound_statement "{\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);" do (compound_statement "{\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            }" { (expression_statement "iVar4 = iVar2 + 1;" (assignment_expression "iVar4 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "local_13d = FUN_00041970(param_1[3],iVar2);" (assignment_expression "local_13d = FUN_00041970(param_1[3],iVar2)" identifier = (call_expression "FUN_00041970(param_1[3],iVar2)" identifier (argument_list "(param_1[3],iVar2)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "FUN_00056e00(local_134,&local_13d,1);" (call_expression "FUN_00056e00(local_134,&local_13d,1)" identifier (argument_list "(local_134,&local_13d,1)" ( identifier , (pointer_expression "&local_13d" & identifier) , number_literal ))) ;) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(uVar5 - 1 != iVar4)" ( (binary_expression "uVar5 - 1 != iVar4" (binary_expression "uVar5 - 1" identifier - number_literal) != identifier) )) ;) }))) (expression_statement "local_168 = &local_13d;" (assignment_expression "local_168 = &local_13d" identifier = (pointer_expression "&local_13d" & identifier)) ;) (expression_statement "local_13d = FUN_00041970(param_1[3],iVar4);" (assignment_expression "local_13d = FUN_00041970(param_1[3],iVar4)" identifier = (call_expression "FUN_00041970(param_1[3],iVar4)" identifier (argument_list "(param_1[3],iVar4)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "local_13d = local_13d & 0x7f;" (assignment_expression "local_13d = local_13d & 0x7f" identifier = (binary_expression "local_13d & 0x7f" identifier & number_literal)) ;) (expression_statement "iVar4 = FUN_000419b0(param_1[2],0);" (assignment_expression "iVar4 = FUN_000419b0(param_1[2],0)" identifier = (call_expression "FUN_000419b0(param_1[2],0)" identifier (argument_list "(param_1[2],0)" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "local_13d = local_13d | (byte)(iVar4 << 7);" (assignment_expression "local_13d = local_13d | (byte)(iVar4 << 7)" identifier = (binary_expression "local_13d | (byte)(iVar4 << 7)" identifier | (call_expression "(byte)(iVar4 << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar4 << 7)" ( (binary_expression "iVar4 << 7" identifier << number_literal) ))))) ;) (expression_statement "FUN_00056e00(local_134,local_168,1);" (call_expression "FUN_00056e00(local_134,local_168,1)" identifier (argument_list "(local_134,local_168,1)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_00056e00(local_134,param_4,param_5);" (call_expression "FUN_00056e00(local_134,param_4,param_5)" identifier (argument_list "(local_134,param_4,param_5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00058150(local_134,local_60);" (call_expression "FUN_00058150(local_134,local_60)" identifier (argument_list "(local_134,local_60)" ( identifier , identifier ))) ;) (expression_statement "uVar7 = FUN_00041750(local_60,0x40);" (assignment_expression "uVar7 = FUN_00041750(local_60,0x40)" identifier = (call_expression "FUN_00041750(local_60,0x40)" identifier (argument_list "(local_60,0x40)" ( identifier , number_literal )))) ;) (expression_statement "iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);" (assignment_expression "iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6)" identifier = (call_expression "FUN_0004bf30(param_1[1] + 0x1c,uVar6)" identifier (argument_list "(param_1[1] + 0x1c,uVar6)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) , identifier )))) ;) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (if_statement "if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }" { (expression_statement "iVar2 = FUN_0004bf30(param_1 + 1,uVar7);" (assignment_expression "iVar2 = FUN_0004bf30(param_1 + 1,uVar7)" identifier = (call_expression "FUN_0004bf30(param_1 + 1,uVar7)" identifier (argument_list "(param_1 + 1,uVar7)" ( (binary_expression "param_1 + 1" identifier + number_literal) , identifier )))) ;) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (if_statement "if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }" { (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" else (compound_statement "{\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" { (expression_statement "iVar8 = FUN_0004a100();" (assignment_expression "iVar8 = FUN_0004a100()" identifier = (call_expression "FUN_0004a100()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(iVar2);" (call_expression "FUN_0004bdd0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (if_statement "if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }" { (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" else (compound_statement "{\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" { (expression_statement "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));" (assignment_expression "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" identifier = (call_expression "FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" identifier (argument_list "(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" ( (pointer_expression "*(undefined4 *)(iVar4 + 4)" * (cast_expression "(undefined4 *)(iVar4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 4)" * (cast_expression "(undefined4 *)(iVar8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) )))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (if_statement "if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }" { (expression_statement "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));" (assignment_expression "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" identifier = (call_expression "FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" identifier (argument_list "(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" ( (pointer_expression "*(undefined4 *)(iVar4 + 8)" * (cast_expression "(undefined4 *)(iVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 8)" * (cast_expression "(undefined4 *)(iVar8 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "bVar12 = iVar2 == 0;" (assignment_expression "bVar12 = iVar2 == 0" identifier = (binary_expression "iVar2 == 0" identifier == number_literal)) ;) })) (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(iVar8);" (call_expression "FUN_0004bdd0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) }))) }))) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) })) }) (else_clause "else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" else (compound_statement "{\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" { (expression_statement "iVar2 = FUN_0004b280();" (assignment_expression "iVar2 = FUN_0004b280()" identifier = (call_expression "FUN_0004b280()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }" { (expression_statement "iVar8 = FUN_0004b280();" (assignment_expression "iVar8 = FUN_0004b280()" identifier = (call_expression "FUN_0004b280()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }" { (expression_statement "uVar5 = (*(undefined4 **)(iVar4 + 4))[5];" (assignment_expression "uVar5 = (*(undefined4 **)(iVar4 + 4))[5]" identifier = (subscript_expression "(*(undefined4 **)(iVar4 + 4))[5]" (parenthesized_expression "(*(undefined4 **)(iVar4 + 4))" ( (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) )) [ number_literal ])) ;) (if_statement "if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" if (parenthesized_expression "(0x40 < uVar5)" ( (binary_expression "0x40 < uVar5" number_literal < identifier) )) (compound_statement "{\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" { (expression_statement "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");" (call_expression "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" identifier (argument_list "("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" ( (string_literal ""digestLen <= sizeof(digest)"" " string_content ") , (string_literal ""sshecc.c"" " string_content ") , number_literal , (string_literal ""ecdsa_verifysig"" " string_content ") ))) ;) })) (expression_statement "uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();" (assignment_expression "uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))()" identifier = (call_expression "(*(code *)**(undefined4 **)(iVar4 + 4))()" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar4 + 4))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar4 + 4)" * (cast_expression "(code *)**(undefined4 **)(iVar4 + 4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar4 + 4)" * (pointer_expression "*(undefined4 **)(iVar4 + 4)" * (cast_expression "(undefined4 **)(iVar4 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))))) )) (argument_list "()" ( )))) ;) (expression_statement "(**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);" (call_expression "(**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 4) + 8))" ( (pointer_expression "**(code **)(*(int *)(iVar4 + 4) + 8)" * (pointer_expression "*(code **)(*(int *)(iVar4 + 4) + 8)" * (cast_expression "(code **)(*(int *)(iVar4 + 4) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar4 + 4) + 8)" ( (binary_expression "*(int *)(iVar4 + 4) + 8" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(uVar6,param_4,param_5)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);" (call_expression "(**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 4) + 0xc))" ( (pointer_expression "**(code **)(*(int *)(iVar4 + 4) + 0xc)" * (pointer_expression "*(code **)(*(int *)(iVar4 + 4) + 0xc)" * (cast_expression "(code **)(*(int *)(iVar4 + 4) + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar4 + 4) + 0xc)" ( (binary_expression "*(int *)(iVar4 + 4) + 0xc" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(uVar6,local_60)" ( identifier , identifier ))) ;) (if_statement "if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }" if (parenthesized_expression "(((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))))))" ( (binary_expression "((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))" (parenthesized_expression "((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0))" ( (binary_expression "(*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)" (parenthesized_expression "(*(int *)param_1[1] == 0)" ( (binary_expression "*(int *)param_1[1] == 0" (pointer_expression "*(int *)param_1[1]" * (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) == number_literal) )) && (parenthesized_expression "(iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)" ( (comma_expression "iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0" (assignment_expression "iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8)" identifier = (call_expression "FUN_00041b70(iVar2,PTR_DAT_000a51c8)" identifier (argument_list "(iVar2,PTR_DAT_000a51c8)" ( identifier , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))" ( (parenthesized_expression "(iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))))" ( (comma_expression "iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" (assignment_expression "iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) , (binary_expression "iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" (binary_expression "iVar4 < 0" identifier < number_literal) && (parenthesized_expression "((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" ( (parenthesized_expression "(iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))" ( (comma_expression "iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" (assignment_expression "iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8)" identifier = (call_expression "FUN_00041b70(iVar8,PTR_DAT_000a51c8)" identifier (argument_list "(iVar8,PTR_DAT_000a51c8)" ( identifier , identifier )))) , (binary_expression "iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" (binary_expression "iVar4 != 0" identifier != number_literal) && (parenthesized_expression "(iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" ( (comma_expression "iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0" (assignment_expression "iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) , (binary_expression "iVar4 < 0" identifier < number_literal)) )))) )) )))) )) ))) )) (compound_statement "{\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }" { (expression_statement "local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);" (assignment_expression "local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4)" identifier = (cast_expression "(byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00041680(local_60,uVar5,iVar4,iVar4)" identifier (argument_list "(local_60,uVar5,iVar4,iVar4)" ( identifier , identifier , identifier , identifier ))))) ;) (expression_statement "iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(*(undefined4 *)(param_1[1] + 0x1c))" ( (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (expression_statement "iVar9 = FUN_00041880(local_168);" (assignment_expression "iVar9 = FUN_00041880(local_168)" identifier = (call_expression "FUN_00041880(local_168)" identifier (argument_list "(local_168)" ( identifier )))) ;) (if_statement "if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }" if (parenthesized_expression "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) )) (compound_statement "{\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }" { (expression_statement "iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);" (assignment_expression "iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" identifier = (call_expression "FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" identifier (argument_list "(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" ( identifier , (binary_expression "iVar9 - iVar4" identifier - identifier) , identifier , identifier )))) ;) (expression_statement "FUN_000411f0(local_168);" (call_expression "FUN_000411f0(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "local_168 = (byte *)iVar9;" (assignment_expression "local_168 = (byte *)iVar9" identifier = (cast_expression "(byte *)iVar9" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);" (assignment_expression "uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" identifier = (call_expression "FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" identifier (argument_list "(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "FUN_000411f0(local_168);" (call_expression "FUN_000411f0(local_168)" identifier (argument_list "(local_168)" ( identifier ))) ;) (expression_statement "iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (if_statement "if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" { (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }) (else_clause "else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" else (compound_statement "{\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" { (expression_statement "uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);" (assignment_expression "uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" identifier = (call_expression "FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" identifier (argument_list "(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) , identifier )))) ;) (expression_statement "uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (expression_statement "FUN_000411f0(iVar4);" (call_expression "FUN_000411f0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }" if (parenthesized_expression "(*(int *)param_1[1] == 0)" ( (binary_expression "*(int *)param_1[1] == 0" (pointer_expression "*(int *)param_1[1]" * (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) == number_literal) )) (compound_statement "{\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }" { (expression_statement "FUN_00049b80();" (call_expression "FUN_00049b80()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = FUN_0004be40();" (assignment_expression "iVar4 = FUN_0004be40()" identifier = (call_expression "FUN_0004be40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }" { (expression_statement "iVar9 = FUN_0004be40();" (assignment_expression "iVar9 = FUN_0004be40()" identifier = (call_expression "FUN_0004be40()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                      FUN_0004bdd0(iVar4);\n                    }" { (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" else (compound_statement "{\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" { (expression_statement "iVar11 = FUN_0004a100();" (assignment_expression "iVar11 = FUN_0004a100()" identifier = (call_expression "FUN_0004a100()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0004bdd0(iVar9);" (call_expression "FUN_0004bdd0(iVar9)" identifier (argument_list "(iVar9)" ( identifier ))) ;) (if_statement "if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }" if (parenthesized_expression "((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         ))" ( (binary_expression "(iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )" (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )" ( (parenthesized_expression "(*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))" ( (binary_expression "*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0)" (binary_expression "*(char *)(iVar11 + 0x10) != '\0'" (pointer_expression "*(char *)(iVar11 + 0x10)" * (cast_expression "(char *)(iVar11 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(iVar4 = FUN_00049bd0(), iVar4 != 0)" ( (comma_expression "iVar4 = FUN_00049bd0(), iVar4 != 0" (assignment_expression "iVar4 = FUN_00049bd0()" identifier = (call_expression "FUN_00049bd0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }" { (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar10);" (call_expression "FUN_000411f0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" identifier = (call_expression "FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" identifier (argument_list "(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" ( (pointer_expression "*(undefined4 *)(iVar11 + 4)" * (cast_expression "(undefined4 *)(iVar11 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" * (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0x1c)" ( (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) )))) ;) (expression_statement "FUN_0004bdd0(iVar11);" (call_expression "FUN_0004bdd0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar4 = FUN_00041b70(iVar2,uVar7);" (assignment_expression "iVar4 = FUN_00041b70(iVar2,uVar7)" identifier = (call_expression "FUN_00041b70(iVar2,uVar7)" identifier (argument_list "(iVar2,uVar7)" ( identifier , identifier )))) ;) (expression_statement "bVar12 = iVar4 == 0;" (assignment_expression "bVar12 = iVar4 == 0" identifier = (binary_expression "iVar4 == 0" identifier == number_literal)) ;) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (goto_statement "goto LAB_0004ce42;" goto statement_identifier ;) })) (expression_statement "FUN_0004bdd0(iVar11);" (call_expression "FUN_0004bdd0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) }))) })) })) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar10);" (call_expression "FUN_000411f0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))) ;) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }))) }) (else_clause "else {\n              bVar12 = false;\n            }" else (compound_statement "{\n              bVar12 = false;\n            }" { (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) }))) (labeled_statement "LAB_0004ce42:\n            FUN_000411f0(iVar2);" statement_identifier : (expression_statement "FUN_000411f0(iVar2);" (call_expression "FUN_000411f0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;)) (expression_statement "FUN_000411f0(iVar8);" (call_expression "FUN_000411f0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (goto_statement "goto LAB_0004cb12;" goto statement_identifier ;) })) (expression_statement "FUN_000411f0(iVar2);" (call_expression "FUN_000411f0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) })) }))) })) })) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (labeled_statement "LAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0006dad0();\n  }" { (expression_statement "FUN_0006dad0();" (call_expression "FUN_0006dad0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return bVar12;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT) )) * LIT) == IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) >> LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) != IDENT) )) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , IDENT )))) ;) (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 ( (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (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 = BOOL) ;) (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 = (binary_expression IDENT == LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (argument_list ( )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) , (binary_expression (binary_expression IDENT < LIT) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) , (binary_expression IDENT < LIT)) )))) )) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , 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 (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT - IDENT) , IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) , IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( 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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }))) })) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "bool FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return bVar12;\n}" (primitive_type "bool") (function_declarator "FUN_0004ca60(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" (identifier "FUN_0004ca60") (parameter_list "(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 extraout_ECX;\n  int in_GS_OFFSET;\n  bool bVar12;\n  byte *local_168;\n  byte local_13d;\n  int local_13c;\n  int local_138;\n  undefined1 local_134 [212];\n  undefined1 local_60 [64];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4ca69;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }\n  bVar12 = false;\nLAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }\n  return bVar12;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "byte *local_168;" (type_identifier "byte") (pointer_declarator "*local_168" (* "*") (identifier "local_168")) (; ";")) (declaration "byte local_13d;" (type_identifier "byte") (identifier "local_13d") (; ";")) (declaration "int local_13c;" (primitive_type "int") (identifier "local_13c") (; ";")) (declaration "int local_138;" (primitive_type "int") (identifier "local_138") (; ";")) (declaration "undefined1 local_134 [212];" (type_identifier "undefined1") (array_declarator "local_134 [212]" (identifier "local_134") ([ "[") (number_literal "212") (] "]")) (; ";")) (declaration "undefined1 local_60 [64];" (type_identifier "undefined1") (array_declarator "local_60 [64]" (identifier "local_60") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x4ca69;" (assignment_expression "uStack_14 = 0x4ca69" (identifier "uStack_14") (= "=") (number_literal "0x4ca69")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0))" (( "(") (binary_expression "((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)" (parenthesized_expression "((param_1[2] != 0) && (param_1[3] != 0))" (( "(") (binary_expression "(param_1[2] != 0) && (param_1[3] != 0)" (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[3] != 0)" (( "(") (binary_expression "param_1[3] != 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_1[1] != 0)" (( "(") (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar4 = *(int *)(*param_1 + 0x38);\n    FUN_0004b200(&local_138);\n    if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "iVar4 = *(int *)(*param_1 + 0x38);" (assignment_expression "iVar4 = *(int *)(*param_1 + 0x38)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(*param_1 + 0x38)" (* "*") (cast_expression "(int *)(*param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x38)" (( "(") (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "FUN_0004b200(&local_138);" (call_expression "FUN_0004b200(&local_138)" (identifier "FUN_0004b200") (argument_list "(&local_138)" (( "(") (pointer_expression "&local_138" (& "&") (identifier "local_138")) () ")"))) (; ";")) (if_statement "if (((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)) {\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0))" (( "(") (binary_expression "((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&\n       (FUN_0004b200(&local_138), local_13c != 0)" (parenthesized_expression "((local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0))" (( "(") (binary_expression "(local_13c != 0) &&\n        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)" (parenthesized_expression "(local_13c != 0)" (( "(") (binary_expression "local_13c != 0" (identifier "local_13c") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)" (( "(") (comma_expression "iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0" (assignment_expression "iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" (identifier "iVar2") (= "=") (call_expression "FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" (identifier "FUN_0001d660") (argument_list "(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30))" (( "(") (identifier "local_138") (, ",") (identifier "local_13c") (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x30)" (( "(") (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x30")) () ")")))) () ")")))) (, ",") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(FUN_0004b200(&local_138), local_13c != 0)" (( "(") (comma_expression "FUN_0004b200(&local_138), local_13c != 0" (call_expression "FUN_0004b200(&local_138)" (identifier "FUN_0004b200") (argument_list "(&local_138)" (( "(") (pointer_expression "&local_138" (& "&") (identifier "local_138")) () ")"))) (, ",") (binary_expression "local_13c != 0" (identifier "local_13c") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      piVar1 = (int *)param_1[1];\n      if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }\n    }" ({ "{") (expression_statement "piVar1 = (int *)param_1[1];" (assignment_expression "piVar1 = (int *)param_1[1]" (identifier "piVar1") (= "=") (cast_expression "(int *)param_1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (*piVar1 == 2) {\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }\n      else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" (if "if") (parenthesized_expression "(*piVar1 == 2)" (( "(") (binary_expression "*piVar1 == 2" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }\n      }" ({ "{") (if_statement "if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }" (if "if") (parenthesized_expression "((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100))" (( "(") (binary_expression "(((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)" (parenthesized_expression "(((uint)piVar1[3] >> 3) * 2 == local_138)" (( "(") (binary_expression "((uint)piVar1[3] >> 3) * 2 == local_138" (binary_expression "((uint)piVar1[3] >> 3) * 2" (parenthesized_expression "((uint)piVar1[3] >> 3)" (( "(") (binary_expression "(uint)piVar1[3] >> 3" (cast_expression "(uint)piVar1[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "2")) (== "==") (identifier "local_138")) () ")")) (&& "&&") (parenthesized_expression "(piVar1[3] == 0x100)" (( "(") (binary_expression "piVar1[3] == 0x100" (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0x100")) () ")"))) () ")")) (compound_statement "{\n          piVar3 = (int *)FUN_0001c990(1,0x14);\n          piVar3[3] = 0;\n          *piVar3 = (int)piVar1;\n          piVar3[1] = 0;\n          piVar3[2] = 0;\n          *(undefined1 *)(piVar3 + 4) = 0;\n          iVar4 = FUN_0004b8a0();\n          if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);\n          FUN_00056d20(local_134);\n          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);\n          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;\n          if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }\n          local_168 = &local_13d;\n          local_13d = FUN_00041970(param_1[3],iVar4);\n          local_13d = local_13d & 0x7f;\n          iVar4 = FUN_000419b0(param_1[2],0);\n          local_13d = local_13d | (byte)(iVar4 << 7);\n          FUN_00056e00(local_134,local_168,1);\n          FUN_00056e00(local_134,param_4,param_5);\n          FUN_00058150(local_134,local_60);\n          uVar7 = FUN_00041750(local_60,0x40);\n          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);\n          FUN_000411f0(uVar6);\n          if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }\n          FUN_0004bdd0(piVar3);\n          FUN_000411f0(uVar7);\n        }" ({ "{") (expression_statement "piVar3 = (int *)FUN_0001c990(1,0x14);" (assignment_expression "piVar3 = (int *)FUN_0001c990(1,0x14)" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_0001c990(1,0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001c990(1,0x14)" (identifier "FUN_0001c990") (argument_list "(1,0x14)" (( "(") (number_literal "1") (, ",") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "piVar3[3] = 0;" (assignment_expression "piVar3[3] = 0" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar3 = (int)piVar1;" (assignment_expression "*piVar3 = (int)piVar1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (; ";")) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(piVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 4)" (* "*") (cast_expression "(undefined1 *)(piVar3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 4)" (( "(") (binary_expression "piVar3 + 4" (identifier "piVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = FUN_0004b8a0();" (assignment_expression "iVar4 = FUN_0004b8a0()" (identifier "iVar4") (= "=") (call_expression "FUN_0004b8a0()" (identifier "FUN_0004b8a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0004bdd0(piVar3);\n            bVar12 = false;\n            goto LAB_0004cb12;\n          }" ({ "{") (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" (identifier "FUN_0004bdd0") (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0004cb12;" (goto "goto") (statement_identifier "LAB_0004cb12") (; ";")) (} "}"))) (expression_statement "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;" (assignment_expression "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3" (identifier "uVar5") (= "=") (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" (* "*") (cast_expression "(uint *)(param_1[1] + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0xc)" (( "(") (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);" (assignment_expression "uVar6 = FUN_00041750(uVar5 + local_13c,uVar5)" (identifier "uVar6") (= "=") (call_expression "FUN_00041750(uVar5 + local_13c,uVar5)" (identifier "FUN_00041750") (argument_list "(uVar5 + local_13c,uVar5)" (( "(") (binary_expression "uVar5 + local_13c" (identifier "uVar5") (+ "+") (identifier "local_13c")) (, ",") (identifier "uVar5") () ")")))) (; ";")) (expression_statement "FUN_00056d20(local_134);" (call_expression "FUN_00056d20(local_134)" (identifier "FUN_00056d20") (argument_list "(local_134)" (( "(") (identifier "local_134") () ")"))) (; ";")) (expression_statement "FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);" (call_expression "FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3)" (identifier "FUN_00056e00") (argument_list "(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3)" (( "(") (identifier "local_134") (, ",") (identifier "local_13c") (, ",") (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" (* "*") (cast_expression "(uint *)(param_1[1] + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0xc)" (( "(") (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (>> ">>") (number_literal "3")) () ")"))) (; ";")) (expression_statement "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;" (assignment_expression "uVar5 = *(uint *)(param_1[1] + 0xc) >> 3" (identifier "uVar5") (= "=") (binary_expression "*(uint *)(param_1[1] + 0xc) >> 3" (pointer_expression "*(uint *)(param_1[1] + 0xc)" (* "*") (cast_expression "(uint *)(param_1[1] + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0xc)" (( "(") (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (uVar5 < 2) {\n            iVar4 = 0;\n          }\n          else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" (if "if") (parenthesized_expression "(uVar5 < 2)" (( "(") (binary_expression "uVar5 < 2" (identifier "uVar5") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n            iVar4 = 0;\n          }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" (else "else") (compound_statement "{\n            iVar2 = 0;\n            do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);\n          }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            } while (uVar5 - 1 != iVar4);" (do "do") (compound_statement "{\n              iVar4 = iVar2 + 1;\n              local_13d = FUN_00041970(param_1[3],iVar2);\n              FUN_00056e00(local_134,&local_13d,1);\n              iVar2 = iVar4;\n            }" ({ "{") (expression_statement "iVar4 = iVar2 + 1;" (assignment_expression "iVar4 = iVar2 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_13d = FUN_00041970(param_1[3],iVar2);" (assignment_expression "local_13d = FUN_00041970(param_1[3],iVar2)" (identifier "local_13d") (= "=") (call_expression "FUN_00041970(param_1[3],iVar2)" (identifier "FUN_00041970") (argument_list "(param_1[3],iVar2)" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "iVar2") () ")")))) (; ";")) (expression_statement "FUN_00056e00(local_134,&local_13d,1);" (call_expression "FUN_00056e00(local_134,&local_13d,1)" (identifier "FUN_00056e00") (argument_list "(local_134,&local_13d,1)" (( "(") (identifier "local_134") (, ",") (pointer_expression "&local_13d" (& "&") (identifier "local_13d")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar2 = iVar4;" (assignment_expression "iVar2 = iVar4" (identifier "iVar2") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 - 1 != iVar4)" (( "(") (binary_expression "uVar5 - 1 != iVar4" (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1")) (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (} "}")))) (expression_statement "local_168 = &local_13d;" (assignment_expression "local_168 = &local_13d" (identifier "local_168") (= "=") (pointer_expression "&local_13d" (& "&") (identifier "local_13d"))) (; ";")) (expression_statement "local_13d = FUN_00041970(param_1[3],iVar4);" (assignment_expression "local_13d = FUN_00041970(param_1[3],iVar4)" (identifier "local_13d") (= "=") (call_expression "FUN_00041970(param_1[3],iVar4)" (identifier "FUN_00041970") (argument_list "(param_1[3],iVar4)" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "local_13d = local_13d & 0x7f;" (assignment_expression "local_13d = local_13d & 0x7f" (identifier "local_13d") (= "=") (binary_expression "local_13d & 0x7f" (identifier "local_13d") (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "iVar4 = FUN_000419b0(param_1[2],0);" (assignment_expression "iVar4 = FUN_000419b0(param_1[2],0)" (identifier "iVar4") (= "=") (call_expression "FUN_000419b0(param_1[2],0)" (identifier "FUN_000419b0") (argument_list "(param_1[2],0)" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_13d = local_13d | (byte)(iVar4 << 7);" (assignment_expression "local_13d = local_13d | (byte)(iVar4 << 7)" (identifier "local_13d") (= "=") (binary_expression "local_13d | (byte)(iVar4 << 7)" (identifier "local_13d") (| "|") (call_expression "(byte)(iVar4 << 7)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(iVar4 << 7)" (( "(") (binary_expression "iVar4 << 7" (identifier "iVar4") (<< "<<") (number_literal "7")) () ")"))))) (; ";")) (expression_statement "FUN_00056e00(local_134,local_168,1);" (call_expression "FUN_00056e00(local_134,local_168,1)" (identifier "FUN_00056e00") (argument_list "(local_134,local_168,1)" (( "(") (identifier "local_134") (, ",") (identifier "local_168") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_00056e00(local_134,param_4,param_5);" (call_expression "FUN_00056e00(local_134,param_4,param_5)" (identifier "FUN_00056e00") (argument_list "(local_134,param_4,param_5)" (( "(") (identifier "local_134") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")"))) (; ";")) (expression_statement "FUN_00058150(local_134,local_60);" (call_expression "FUN_00058150(local_134,local_60)" (identifier "FUN_00058150") (argument_list "(local_134,local_60)" (( "(") (identifier "local_134") (, ",") (identifier "local_60") () ")"))) (; ";")) (expression_statement "uVar7 = FUN_00041750(local_60,0x40);" (assignment_expression "uVar7 = FUN_00041750(local_60,0x40)" (identifier "uVar7") (= "=") (call_expression "FUN_00041750(local_60,0x40)" (identifier "FUN_00041750") (argument_list "(local_60,0x40)" (( "(") (identifier "local_60") (, ",") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);" (assignment_expression "iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6)" (identifier "iVar4") (= "=") (call_expression "FUN_0004bf30(param_1[1] + 0x1c,uVar6)" (identifier "FUN_0004bf30") (argument_list "(param_1[1] + 0x1c,uVar6)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" (identifier "FUN_000411f0") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (if_statement "if (iVar4 != 0) {\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);\n            FUN_000411f0(uVar7);\n            if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }\n            goto LAB_0004cb12;\n          }" ({ "{") (expression_statement "iVar2 = FUN_0004bf30(param_1 + 1,uVar7);" (assignment_expression "iVar2 = FUN_0004bf30(param_1 + 1,uVar7)" (identifier "iVar2") (= "=") (call_expression "FUN_0004bf30(param_1 + 1,uVar7)" (identifier "FUN_0004bf30") (argument_list "(param_1 + 1,uVar7)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" (identifier "FUN_000411f0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (if_statement "if (iVar2 == 0) {\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }\n            else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_0004bdd0(iVar4);\n              FUN_0004bdd0(piVar3);\n              bVar12 = false;\n            }" ({ "{") (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" (identifier "FUN_0004bdd0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" (identifier "FUN_0004bdd0") (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" (else "else") (compound_statement "{\n              iVar8 = FUN_0004a100();\n              FUN_0004bdd0(piVar3);\n              FUN_0004bdd0(iVar2);\n              if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }\n            }" ({ "{") (expression_statement "iVar8 = FUN_0004a100();" (assignment_expression "iVar8 = FUN_0004a100()" (identifier "iVar8") (= "=") (call_expression "FUN_0004a100()" (identifier "FUN_0004a100") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" (identifier "FUN_0004bdd0") (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";")) (expression_statement "FUN_0004bdd0(iVar2);" (call_expression "FUN_0004bdd0(iVar2)" (identifier "FUN_0004bdd0") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (if_statement "if (iVar8 == 0) {\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }\n              else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_0004bdd0(iVar4);\n                bVar12 = false;\n              }" ({ "{") (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" (identifier "FUN_0004bdd0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" (else "else") (compound_statement "{\n                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));\n                bVar12 = false;\n                if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }\n                FUN_0004bdd0(iVar4);\n                FUN_0004bdd0(iVar8);\n              }" ({ "{") (expression_statement "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));" (assignment_expression "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" (identifier "iVar2") (= "=") (call_expression "FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" (identifier "FUN_00041b70") (argument_list "(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4))" (( "(") (pointer_expression "*(undefined4 *)(iVar4 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar8 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (if_statement "if (iVar2 == 0) {\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));\n                  bVar12 = iVar2 == 0;\n                }" ({ "{") (expression_statement "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));" (assignment_expression "iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" (identifier "iVar2") (= "=") (call_expression "FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" (identifier "FUN_00041b70") (argument_list "(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8))" (( "(") (pointer_expression "*(undefined4 *)(iVar4 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar8 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "bVar12 = iVar2 == 0;" (assignment_expression "bVar12 = iVar2 == 0" (identifier "bVar12") (= "=") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) (; ";")) (} "}"))) (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" (identifier "FUN_0004bdd0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "FUN_0004bdd0(iVar8);" (call_expression "FUN_0004bdd0(iVar8)" (identifier "FUN_0004bdd0") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (} "}")))) (} "}")))) (goto_statement "goto LAB_0004cb12;" (goto "goto") (statement_identifier "LAB_0004cb12") (; ";")) (} "}"))) (expression_statement "FUN_0004bdd0(piVar3);" (call_expression "FUN_0004bdd0(piVar3)" (identifier "FUN_0004bdd0") (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";")) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" (identifier "FUN_000411f0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" (else "else") (compound_statement "{\n        iVar2 = FUN_0004b280();\n        if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }\n      }" ({ "{") (expression_statement "iVar2 = FUN_0004b280();" (assignment_expression "iVar2 = FUN_0004b280()" (identifier "iVar2") (= "=") (call_expression "FUN_0004b280()" (identifier "FUN_0004b280") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar8 = FUN_0004b280();\n          if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }\n          FUN_000411f0(iVar2);\n        }" ({ "{") (expression_statement "iVar8 = FUN_0004b280();" (assignment_expression "iVar8 = FUN_0004b280()" (identifier "iVar8") (= "=") (call_expression "FUN_0004b280()" (identifier "FUN_0004b280") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 != 0) {\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];\n            if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }\n            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();\n            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);\n            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);\n            if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }\nLAB_0004ce42:\n            FUN_000411f0(iVar2);\n            FUN_000411f0(iVar8);\n            goto LAB_0004cb12;\n          }" ({ "{") (expression_statement "uVar5 = (*(undefined4 **)(iVar4 + 4))[5];" (assignment_expression "uVar5 = (*(undefined4 **)(iVar4 + 4))[5]" (identifier "uVar5") (= "=") (subscript_expression "(*(undefined4 **)(iVar4 + 4))[5]" (parenthesized_expression "(*(undefined4 **)(iVar4 + 4))" (( "(") (pointer_expression "*(undefined4 **)(iVar4 + 4)" (* "*") (cast_expression "(undefined4 **)(iVar4 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) () ")")) ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if (0x40 < uVar5) {\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" (if "if") (parenthesized_expression "(0x40 < uVar5)" (( "(") (binary_expression "0x40 < uVar5" (number_literal "0x40") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n                    \n              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");\n            }" ({ "{") (expression_statement "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");" (call_expression "__assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" (identifier "__assert_fail") (argument_list "("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig")" (( "(") (string_literal ""digestLen <= sizeof(digest)"" (" """) (string_content "digestLen <= sizeof(digest)") (" """)) (, ",") (string_literal ""sshecc.c"" (" """) (string_content "sshecc.c") (" """)) (, ",") (number_literal "0x950") (, ",") (string_literal ""ecdsa_verifysig"" (" """) (string_content "ecdsa_verifysig") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();" (assignment_expression "uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))()" (identifier "uVar6") (= "=") (call_expression "(*(code *)**(undefined4 **)(iVar4 + 4))()" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar4 + 4))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(iVar4 + 4)" (* "*") (cast_expression "(code *)**(undefined4 **)(iVar4 + 4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(iVar4 + 4)" (* "*") (pointer_expression "*(undefined4 **)(iVar4 + 4)" (* "*") (cast_expression "(undefined4 **)(iVar4 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);" (call_expression "(**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 4) + 8))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar4 + 4) + 8)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar4 + 4) + 8)" (* "*") (cast_expression "(code **)(*(int *)(iVar4 + 4) + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 4) + 8)" (( "(") (binary_expression "*(int *)(iVar4 + 4) + 8" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(uVar6,param_4,param_5)" (( "(") (identifier "uVar6") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);" (call_expression "(**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 4) + 0xc))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar4 + 4) + 0xc)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar4 + 4) + 0xc)" (* "*") (cast_expression "(code **)(*(int *)(iVar4 + 4) + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 4) + 0xc)" (( "(") (binary_expression "*(int *)(iVar4 + 4) + 0xc" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(uVar6,local_60)" (( "(") (identifier "uVar6") (, ",") (identifier "local_60") () ")"))) (; ";")) (if_statement "if (((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }\n            else {\n              bVar12 = false;\n            }" (if "if") (parenthesized_expression "(((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))))))" (( "(") (binary_expression "((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&\n               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))" (parenthesized_expression "((*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0))" (( "(") (binary_expression "(*(int *)param_1[1] == 0) &&\n                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)" (parenthesized_expression "(*(int *)param_1[1] == 0)" (( "(") (binary_expression "*(int *)param_1[1] == 0" (pointer_expression "*(int *)param_1[1]" (* "*") (cast_expression "(int *)param_1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)" (( "(") (comma_expression "iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0" (assignment_expression "iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8)" (identifier "iVar4") (= "=") (call_expression "FUN_00041b70(iVar2,PTR_DAT_000a51c8)" (identifier "FUN_00041b70") (argument_list "(iVar2,PTR_DAT_000a51c8)" (( "(") (identifier "iVar2") (, ",") (identifier "PTR_DAT_000a51c8") () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))" (( "(") (parenthesized_expression "(iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))))" (( "(") (comma_expression "iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" (assignment_expression "iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "iVar4") (= "=") (call_expression "FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "FUN_00041b70") (argument_list "(iVar2,*(undefined4 *)(param_1[1] + 0x1c))" (( "(") (identifier "iVar2") (, ",") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) () ")")))) (, ",") (binary_expression "iVar4 < 0 &&\n                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) (&& "&&") (parenthesized_expression "((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))" (( "(") (parenthesized_expression "(iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0))" (( "(") (comma_expression "iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" (assignment_expression "iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8)" (identifier "iVar4") (= "=") (call_expression "FUN_00041b70(iVar8,PTR_DAT_000a51c8)" (identifier "FUN_00041b70") (argument_list "(iVar8,PTR_DAT_000a51c8)" (( "(") (identifier "iVar8") (, ",") (identifier "PTR_DAT_000a51c8") () ")")))) (, ",") (binary_expression "iVar4 != 0 &&\n                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)" (( "(") (comma_expression "iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0" (assignment_expression "iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "iVar4") (= "=") (call_expression "FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "FUN_00041b70") (argument_list "(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" (( "(") (identifier "iVar8") (, ",") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) () ")")))) (, ",") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0"))) () ")")))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);\n              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));\n              iVar9 = FUN_00041880(local_168);\n              if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }\n              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);\n              FUN_000411f0(local_168);\n              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));\n              if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n            }" ({ "{") (expression_statement "local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);" (assignment_expression "local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4)" (identifier "local_168") (= "=") (cast_expression "(byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00041680(local_60,uVar5,iVar4,iVar4)" (identifier "FUN_00041680") (argument_list "(local_60,uVar5,iVar4,iVar4)" (( "(") (identifier "local_60") (, ",") (identifier "uVar5") (, ",") (identifier "iVar4") (, ",") (identifier "iVar4") () ")"))))) (; ";")) (expression_statement "iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c))" (identifier "iVar4") (= "=") (call_expression "FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c))" (identifier "FUN_00041880") (argument_list "(*(undefined4 *)(param_1[1] + 0x1c))" (( "(") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar9 = FUN_00041880(local_168);" (assignment_expression "iVar9 = FUN_00041880(local_168)" (identifier "iVar9") (= "=") (call_expression "FUN_00041880(local_168)" (identifier "FUN_00041880") (argument_list "(local_168)" (( "(") (identifier "local_168") () ")")))) (; ";")) (if_statement "if (iVar4 < iVar9) {\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }" (if "if") (parenthesized_expression "(iVar4 < iVar9)" (( "(") (binary_expression "iVar4 < iVar9" (identifier "iVar4") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);\n                FUN_000411f0(local_168);\n                local_168 = (byte *)iVar9;\n              }" ({ "{") (expression_statement "iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);" (assignment_expression "iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" (identifier "iVar9") (= "=") (call_expression "FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" (identifier "FUN_00041de0") (argument_list "(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX)" (( "(") (identifier "local_168") (, ",") (binary_expression "iVar9 - iVar4" (identifier "iVar9") (- "-") (identifier "iVar4")) (, ",") (identifier "extraout_ECX") (, ",") (identifier "extraout_ECX") () ")")))) (; ";")) (expression_statement "FUN_000411f0(local_168);" (call_expression "FUN_000411f0(local_168)" (identifier "FUN_000411f0") (argument_list "(local_168)" (( "(") (identifier "local_168") () ")"))) (; ";")) (expression_statement "local_168 = (byte *)iVar9;" (assignment_expression "local_168 = (byte *)iVar9" (identifier "local_168") (= "=") (cast_expression "(byte *)iVar9" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar9"))) (; ";")) (} "}"))) (expression_statement "uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);" (assignment_expression "uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" (identifier "uVar6") (= "=") (call_expression "FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" (identifier "FUN_00042780") (argument_list "(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9)" (( "(") (identifier "local_168") (, ",") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "iVar9") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "FUN_000411f0(local_168);" (call_expression "FUN_000411f0(local_168)" (identifier "FUN_000411f0") (argument_list "(local_168)" (( "(") (identifier "local_168") () ")"))) (; ";")) (expression_statement "iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "iVar4") (= "=") (call_expression "FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "FUN_00042e50") (argument_list "(iVar8,*(undefined4 *)(param_1[1] + 0x1c))" (( "(") (identifier "iVar8") (, ",") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }\n              else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" ({ "{") (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" (identifier "FUN_000411f0") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" (else "else") (compound_statement "{\n                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);\n                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));\n                FUN_000411f0(iVar4);\n                if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }\n                FUN_000411f0(uVar7);\n                FUN_000411f0(uVar10);\n                FUN_000411f0(uVar6);\n                bVar12 = false;\n              }" ({ "{") (expression_statement "uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);" (assignment_expression "uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" (identifier "uVar7") (= "=") (call_expression "FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" (identifier "FUN_00041230") (argument_list "(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4)" (( "(") (identifier "uVar6") (, ",") (identifier "iVar4") (, ",") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "uVar10") (= "=") (call_expression "FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" (identifier "FUN_00041230") (argument_list "(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c))" (( "(") (identifier "iVar2") (, ",") (identifier "iVar4") (, ",") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_000411f0(iVar4);" (call_expression "FUN_000411f0(iVar4)" (identifier "FUN_000411f0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (if_statement "if (*(int *)param_1[1] == 0) {\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }" (if "if") (parenthesized_expression "(*(int *)param_1[1] == 0)" (( "(") (binary_expression "*(int *)param_1[1] == 0" (pointer_expression "*(int *)param_1[1]" (* "*") (cast_expression "(int *)param_1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00049b80();\n                  iVar4 = FUN_0004be40();\n                  if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }\n                }" ({ "{") (expression_statement "FUN_00049b80();" (call_expression "FUN_00049b80()" (identifier "FUN_00049b80") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = FUN_0004be40();" (assignment_expression "iVar4 = FUN_0004be40()" (identifier "iVar4") (= "=") (call_expression "FUN_0004be40()" (identifier "FUN_0004be40") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar9 = FUN_0004be40();\n                    if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }\n                  }" ({ "{") (expression_statement "iVar9 = FUN_0004be40();" (assignment_expression "iVar9 = FUN_0004be40()" (identifier "iVar9") (= "=") (call_expression "FUN_0004be40()" (identifier "FUN_0004be40") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar9 == 0) {\n                      FUN_0004bdd0(iVar4);\n                    }\n                    else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      FUN_0004bdd0(iVar4);\n                    }" ({ "{") (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" (identifier "FUN_0004bdd0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" (else "else") (compound_statement "{\n                      iVar11 = FUN_0004a100();\n                      FUN_0004bdd0(iVar4);\n                      FUN_0004bdd0(iVar9);\n                      if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }\n                      FUN_0004bdd0(iVar11);\n                    }" ({ "{") (expression_statement "iVar11 = FUN_0004a100();" (assignment_expression "iVar11 = FUN_0004a100()" (identifier "iVar11") (= "=") (call_expression "FUN_0004a100()" (identifier "FUN_0004a100") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0004bdd0(iVar4);" (call_expression "FUN_0004bdd0(iVar4)" (identifier "FUN_0004bdd0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "FUN_0004bdd0(iVar9);" (call_expression "FUN_0004bdd0(iVar9)" (identifier "FUN_0004bdd0") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")"))) (; ";")) (if_statement "if ((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )) {\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }" (if "if") (parenthesized_expression "((iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         ))" (( "(") (binary_expression "(iVar11 != 0) &&\n                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )" (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))\n                         )" (( "(") (parenthesized_expression "(*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))" (( "(") (binary_expression "*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0)" (binary_expression "*(char *)(iVar11 + 0x10) != '\0'" (pointer_expression "*(char *)(iVar11 + 0x10)" (* "*") (cast_expression "(char *)(iVar11 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x10)" (( "(") (binary_expression "iVar11 + 0x10" (identifier "iVar11") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(iVar4 = FUN_00049bd0(), iVar4 != 0)" (( "(") (comma_expression "iVar4 = FUN_00049bd0(), iVar4 != 0" (assignment_expression "iVar4 = FUN_00049bd0()" (identifier "iVar4") (= "=") (call_expression "FUN_00049bd0()" (identifier "FUN_00049bd0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar10);\n                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));\n                        FUN_0004bdd0(iVar11);\n                        iVar4 = FUN_00041b70(iVar2,uVar7);\n                        bVar12 = iVar4 == 0;\n                        FUN_000411f0(uVar7);\n                        FUN_000411f0(uVar6);\n                        goto LAB_0004ce42;\n                      }" ({ "{") (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" (identifier "FUN_000411f0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "FUN_000411f0(uVar10);" (call_expression "FUN_000411f0(uVar10)" (identifier "FUN_000411f0") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c));" (assignment_expression "uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" (identifier "uVar7") (= "=") (call_expression "FUN_00042780(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" (identifier "FUN_00042780") (argument_list "(*(undefined4 *)(iVar11 + 4),\n                                             *(undefined4 *)(param_1[1] + 0x1c))" (( "(") (pointer_expression "*(undefined4 *)(iVar11 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar11 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0x1c)" (( "(") (binary_expression "param_1[1] + 0x1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_0004bdd0(iVar11);" (call_expression "FUN_0004bdd0(iVar11)" (identifier "FUN_0004bdd0") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "iVar4 = FUN_00041b70(iVar2,uVar7);" (assignment_expression "iVar4 = FUN_00041b70(iVar2,uVar7)" (identifier "iVar4") (= "=") (call_expression "FUN_00041b70(iVar2,uVar7)" (identifier "FUN_00041b70") (argument_list "(iVar2,uVar7)" (( "(") (identifier "iVar2") (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "bVar12 = iVar4 == 0;" (assignment_expression "bVar12 = iVar4 == 0" (identifier "bVar12") (= "=") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) (; ";")) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" (identifier "FUN_000411f0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" (identifier "FUN_000411f0") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (goto_statement "goto LAB_0004ce42;" (goto "goto") (statement_identifier "LAB_0004ce42") (; ";")) (} "}"))) (expression_statement "FUN_0004bdd0(iVar11);" (call_expression "FUN_0004bdd0(iVar11)" (identifier "FUN_0004bdd0") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (expression_statement "FUN_000411f0(uVar7);" (call_expression "FUN_000411f0(uVar7)" (identifier "FUN_000411f0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "FUN_000411f0(uVar10);" (call_expression "FUN_000411f0(uVar10)" (identifier "FUN_000411f0") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "FUN_000411f0(uVar6);" (call_expression "FUN_000411f0(uVar6)" (identifier "FUN_000411f0") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n              bVar12 = false;\n            }" (else "else") (compound_statement "{\n              bVar12 = false;\n            }" ({ "{") (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (} "}")))) (labeled_statement "LAB_0004ce42:\n            FUN_000411f0(iVar2);" (statement_identifier "LAB_0004ce42") (: ":") (expression_statement "FUN_000411f0(iVar2);" (call_expression "FUN_000411f0(iVar2)" (identifier "FUN_000411f0") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";"))) (expression_statement "FUN_000411f0(iVar8);" (call_expression "FUN_000411f0(iVar8)" (identifier "FUN_000411f0") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (goto_statement "goto LAB_0004cb12;" (goto "goto") (statement_identifier "LAB_0004cb12") (; ";")) (} "}"))) (expression_statement "FUN_000411f0(iVar2);" (call_expression "FUN_000411f0(iVar2)" (identifier "FUN_000411f0") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}"))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_0004cb12:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" (statement_identifier "LAB_0004cb12") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006dad0();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0006dad0();\n  }" ({ "{") (expression_statement "FUN_0006dad0();" (call_expression "FUN_0006dad0()" (identifier "FUN_0006dad0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return bVar12;" (return "return") (identifier "bVar12") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int function_1(void *key,char *sig,int siglen,char *data,int datalen)

{
  int var_43;
  type_1 *peVar2;
  char *p_00;
  int var_5;
  type_2 var_13;
  type_3 *var_41;
  int var_10;
  type_4 var_28;
  type_4 var_29;
  type_3 *var_22;
  type_3 *var_23;
  type_3 *var_25;
  type_5 uVar11;
  type_4 pBVar12;
  type_4 var_36;
  type_4 b_00;
  type_4 b_01;
  int var_1;
  type_4 local_168;
  char *local_150 [4];
  type_6 var_17;
  char *var_3;
  int var_7;
  type_7 hs;
  type_6 digest [64];
  
  p_00 = data;
  local_150[0] = sig;
  var_43 = *(int *)(var_1 + 0x14);
  if (((*(int *)((int)key + 8) != 0) && (*(int *)((int)key + 0xc) != 0)) &&
     (*(int *)((int)key + 4) != 0)) {
                    /* WARNING: Load size is inaccurate */
    var_10 = *(int *)(*key + 0x38);
    var_2(local_150,&siglen,&var_3,&var_7);
                    /* WARNING: Load size is inaccurate */
    if (((var_3 != (char *)0x0) && (var_5 = var_4(var_7,var_3,*(char **)(*key + 0x30)), var_5 != 0))
       && (var_2(local_150,&siglen,&var_3,&var_7), var_3 != (char *)0x0)) {
      peVar2 = *(type_1 **)((int)key + 4);
      if (peVar2->type == var_6) {
        if (((peVar2->fieldBits >> 3) * 2 == var_7) && (peVar2->fieldBits == 0x100)) {
          var_41 = (type_3 *)var_8(1,0x14);
          var_41->z = (type_8)0x0;
          var_41->curve = peVar2;
          var_41->x = (type_8)0x0;
          var_41->y = (type_8)0x0;
          var_41->infinity = '\0';
          var_10 = var_9(var_3,*(type_2 *)(*(int *)((int)key + 4) + 0xc) >> 3,var_41);
          if (var_10 == 0) {
            var_11(var_41);
            var_13 = 0;
            goto LAB_0004cb12;
          }
          var_13 = *(type_2 *)(*(int *)((int)key + 4) + 0xc) >> 3;
          var_28 = var_12((type_6 *)(var_3 + var_13),var_13);
          var_14((type_9 *)&hs);
          var_15(&hs,var_3,*(type_2 *)(*(int *)((int)key + 4) + 0xc) >> 3);
          var_13 = *(type_2 *)(*(int *)((int)key + 4) + 0xc) >> 3;
          if (var_13 < 2) {
            var_10 = 0;
          }
          else {
            var_5 = 0;
            do {
              var_10 = var_5 + 1;
              var_5 = var_16(*(type_4 *)((int)key + 0xc),var_5);
              var_17 = (type_6)var_5;
              var_15(&hs,&var_17,1);
              var_5 = var_10;
            } while (var_13 - 1 != var_10);
          }
          local_168 = (type_4)&var_17;
          var_10 = var_16(*(type_4 *)((int)key + 0xc),var_10);
          var_17 = (type_10)var_10 & 0x7f;
          var_10 = var_18(*(type_4 *)((int)key + 8),0);
          var_17 = var_17 | (type_10)(var_10 << 7);
          var_15(&hs,local_168,1);
          var_15(&hs,p_00,datalen);
          var_19(&hs,digest);
          var_29 = var_12(digest,0x40);
          var_22 = var_20((type_3 *)(*(int *)((int)key + 4) + 0x1c),var_28);
          var_21(var_28);
          if (var_22 != (type_3 *)0x0) {
            var_23 = var_20((type_3 *)((int)key + 4),var_29);
            var_21(var_29);
            if (var_23 == (type_3 *)0x0) {
              var_11(var_22);
              var_11(var_41);
              var_13 = 0;
            }
            else {
              var_25 = var_24(var_41,var_23,0);
              var_11(var_41);
              var_11(var_23);
              if (var_25 == (type_3 *)0x0) {
                var_11(var_22);
                var_13 = 0;
              }
              else {
                var_10 = var_26((type_4)var_22->x,(type_4)var_25->x);
                var_13 = 0;
                if (var_10 == 0) {
                  var_10 = var_26((type_4)var_22->y,(type_4)var_25->y);
                  var_13 = (type_2)(var_10 == 0);
                }
                var_11(var_22);
                var_11(var_25);
              }
            }
            goto LAB_0004cb12;
          }
          var_11(var_41);
          var_21(var_29);
        }
      }
      else {
        var_28 = (type_4)var_27(&var_3,&var_7);
        if (var_28 != (type_4)0x0) {
          var_29 = (type_4)var_27(&var_3,&var_7);
          if (var_29 != (type_4)0x0) {
            var_13 = (*(type_5 **)(var_10 + 4))[5];
            if (0x40 < var_13) {
                    /* WARNING: Subroutine does not return */
              var_30("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");
            }
            uVar11 = (*(type_11 *)**(type_5 **)(var_10 + 4))();
            (**(type_11 **)(*(int *)(var_10 + 4) + 8))(uVar11,p_00,datalen);
            (**(type_11 **)(*(int *)(var_10 + 4) + 0xc))(uVar11,digest);
            if (((**(int **)((int)key + 4) == 0) && (var_10 = var_26(var_28,Zero), var_10 != 0))
               && ((var_10 = var_26(var_28,*(type_4 *)(*(int *)((int)key + 4) + 0x1c)),
                   var_10 < 0 &&
                   ((var_10 = var_26(var_29,Zero), var_10 != 0 &&
                    (var_10 = var_26(var_29,*(type_4 *)(*(int *)((int)key + 4) + 0x1c)),
                    var_10 < 0)))))) {
              pBVar12 = var_31(digest,var_13);
              var_10 = var_32(*(type_4 *)(*(int *)((int)key + 4) + 0x1c));
              var_5 = var_32(pBVar12);
              local_168 = pBVar12;
              if (var_10 < var_5) {
                local_168 = var_33(pBVar12,var_5 - var_10);
                var_21(pBVar12);
              }
              pBVar12 = var_34(local_168,*(type_4 *)(*(int *)((int)key + 4) + 0x1c));
              var_21(local_168);
              var_36 = var_35(var_29,*(type_4 *)(*(int *)((int)key + 4) + 0x1c));
              if (var_36 == (type_4)0x0) {
                var_21(pBVar12);
                var_13 = 0;
              }
              else {
                b_00 = var_37(pBVar12,var_36,*(type_4 *)(*(int *)((int)key + 4) + 0x1c));
                b_01 = var_37(var_28,var_36,*(type_4 *)(*(int *)((int)key + 4) + 0x1c));
                var_21(var_36);
                if ((*(type_1 **)((int)key + 4))->type == var_38) {
                  var_10 = var_39(*(type_1 **)((int)key + 4));
                  var_41 = var_40((type_3 *)(*(int *)((int)key + 4) + 0x20),b_00,var_10);
                  if (var_41 != (type_3 *)0x0) {
                    var_22 = var_40((type_3 *)((int)key + 4),b_01,var_10);
                    if (var_22 == (type_3 *)0x0) {
                      var_11(var_41);
                    }
                    else {
                      var_23 = var_24(var_41,var_22,var_10);
                      var_11(var_41);
                      var_11(var_22);
                      if ((var_23 != (type_3 *)0x0) &&
                         ((var_23->infinity != '\0' || (var_10 = var_42(var_23), var_10 != 0)
                          ))) {
                        var_21(b_00);
                        var_21(b_01);
                        var_36 = var_34((type_4)var_23->x,
                                         *(type_4 *)(*(int *)((int)key + 4) + 0x1c));
                        var_11(var_23);
                        var_10 = var_26(var_28,var_36);
                        var_13 = (type_2)(var_10 == 0);
                        var_21(var_36);
                        var_21(pBVar12);
                        goto LAB_0004ce42;
                      }
                      var_11(var_23);
                    }
                  }
                }
                var_21(b_00);
                var_21(b_01);
                var_21(pBVar12);
                var_13 = 0;
              }
            }
            else {
              var_13 = 0;
            }
LAB_0004ce42:
            var_21(var_28);
            var_21(var_29);
            goto LAB_0004cb12;
          }
          var_21(var_28);
        }
      }
    }
  }
  var_13 = 0;
LAB_0004cb12:
  if (var_43 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_44();
  }
  return var_13;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  uint uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 extraout_ECX;
  int in_GS_OFFSET;
  bool bVar12;
  byte *local_168;
  byte local_13d;
  int local_13c;
  int local_138;
  undefined1 local_134 [212];
  undefined1 local_60 [64];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x4ca69;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (((param_1[2] != 0) && (param_1[3] != 0)) && (param_1[1] != 0)) {
    iVar4 = *(int *)(*param_1 + 0x38);
    FUN_0004b200(&local_138);
    if (((local_13c != 0) &&
        (iVar2 = FUN_0001d660(local_138,local_13c,*(undefined4 *)(*param_1 + 0x30)), iVar2 != 0)) &&
       (FUN_0004b200(&local_138), local_13c != 0)) {
      piVar1 = (int *)param_1[1];
      if (*piVar1 == 2) {
        if ((((uint)piVar1[3] >> 3) * 2 == local_138) && (piVar1[3] == 0x100)) {
          piVar3 = (int *)FUN_0001c990(1,0x14);
          piVar3[3] = 0;
          *piVar3 = (int)piVar1;
          piVar3[1] = 0;
          piVar3[2] = 0;
          *(undefined1 *)(piVar3 + 4) = 0;
          iVar4 = FUN_0004b8a0();
          if (iVar4 == 0) {
            FUN_0004bdd0(piVar3);
            bVar12 = false;
            goto LAB_0004cb12;
          }
          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;
          uVar6 = FUN_00041750(uVar5 + local_13c,uVar5);
          FUN_00056d20(local_134);
          FUN_00056e00(local_134,local_13c,*(uint *)(param_1[1] + 0xc) >> 3);
          uVar5 = *(uint *)(param_1[1] + 0xc) >> 3;
          if (uVar5 < 2) {
            iVar4 = 0;
          }
          else {
            iVar2 = 0;
            do {
              iVar4 = iVar2 + 1;
              local_13d = FUN_00041970(param_1[3],iVar2);
              FUN_00056e00(local_134,&local_13d,1);
              iVar2 = iVar4;
            } while (uVar5 - 1 != iVar4);
          }
          local_168 = &local_13d;
          local_13d = FUN_00041970(param_1[3],iVar4);
          local_13d = local_13d & 0x7f;
          iVar4 = FUN_000419b0(param_1[2],0);
          local_13d = local_13d | (byte)(iVar4 << 7);
          FUN_00056e00(local_134,local_168,1);
          FUN_00056e00(local_134,param_4,param_5);
          FUN_00058150(local_134,local_60);
          uVar7 = FUN_00041750(local_60,0x40);
          iVar4 = FUN_0004bf30(param_1[1] + 0x1c,uVar6);
          FUN_000411f0(uVar6);
          if (iVar4 != 0) {
            iVar2 = FUN_0004bf30(param_1 + 1,uVar7);
            FUN_000411f0(uVar7);
            if (iVar2 == 0) {
              FUN_0004bdd0(iVar4);
              FUN_0004bdd0(piVar3);
              bVar12 = false;
            }
            else {
              iVar8 = FUN_0004a100();
              FUN_0004bdd0(piVar3);
              FUN_0004bdd0(iVar2);
              if (iVar8 == 0) {
                FUN_0004bdd0(iVar4);
                bVar12 = false;
              }
              else {
                iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 4),*(undefined4 *)(iVar8 + 4));
                bVar12 = false;
                if (iVar2 == 0) {
                  iVar2 = FUN_00041b70(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar8 + 8));
                  bVar12 = iVar2 == 0;
                }
                FUN_0004bdd0(iVar4);
                FUN_0004bdd0(iVar8);
              }
            }
            goto LAB_0004cb12;
          }
          FUN_0004bdd0(piVar3);
          FUN_000411f0(uVar7);
        }
      }
      else {
        iVar2 = FUN_0004b280();
        if (iVar2 != 0) {
          iVar8 = FUN_0004b280();
          if (iVar8 != 0) {
            uVar5 = (*(undefined4 **)(iVar4 + 4))[5];
            if (0x40 < uVar5) {
                    /* WARNING: Subroutine does not return */
              __assert_fail("digestLen <= sizeof(digest)","sshecc.c",0x950,"ecdsa_verifysig");
            }
            uVar6 = (*(code *)**(undefined4 **)(iVar4 + 4))();
            (**(code **)(*(int *)(iVar4 + 4) + 8))(uVar6,param_4,param_5);
            (**(code **)(*(int *)(iVar4 + 4) + 0xc))(uVar6,local_60);
            if (((*(int *)param_1[1] == 0) &&
                (iVar4 = FUN_00041b70(iVar2,PTR_DAT_000a51c8), iVar4 != 0)) &&
               ((iVar4 = FUN_00041b70(iVar2,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0 &&
                ((iVar4 = FUN_00041b70(iVar8,PTR_DAT_000a51c8), iVar4 != 0 &&
                 (iVar4 = FUN_00041b70(iVar8,*(undefined4 *)(param_1[1] + 0x1c)), iVar4 < 0)))))) {
              local_168 = (byte *)FUN_00041680(local_60,uVar5,iVar4,iVar4);
              iVar4 = FUN_00041880(*(undefined4 *)(param_1[1] + 0x1c));
              iVar9 = FUN_00041880(local_168);
              if (iVar4 < iVar9) {
                iVar9 = FUN_00041de0(local_168,iVar9 - iVar4,extraout_ECX,extraout_ECX);
                FUN_000411f0(local_168);
                local_168 = (byte *)iVar9;
              }
              uVar6 = FUN_00042780(local_168,*(undefined4 *)(param_1[1] + 0x1c),iVar9,iVar9);
              FUN_000411f0(local_168);
              iVar4 = FUN_00042e50(iVar8,*(undefined4 *)(param_1[1] + 0x1c));
              if (iVar4 == 0) {
                FUN_000411f0(uVar6);
                bVar12 = false;
              }
              else {
                uVar7 = FUN_00041230(uVar6,iVar4,*(undefined4 *)(param_1[1] + 0x1c),iVar4);
                uVar10 = FUN_00041230(iVar2,iVar4,*(undefined4 *)(param_1[1] + 0x1c));
                FUN_000411f0(iVar4);
                if (*(int *)param_1[1] == 0) {
                  FUN_00049b80();
                  iVar4 = FUN_0004be40();
                  if (iVar4 != 0) {
                    iVar9 = FUN_0004be40();
                    if (iVar9 == 0) {
                      FUN_0004bdd0(iVar4);
                    }
                    else {
                      iVar11 = FUN_0004a100();
                      FUN_0004bdd0(iVar4);
                      FUN_0004bdd0(iVar9);
                      if ((iVar11 != 0) &&
                         ((*(char *)(iVar11 + 0x10) != '\0' || (iVar4 = FUN_00049bd0(), iVar4 != 0))
                         )) {
                        FUN_000411f0(uVar7);
                        FUN_000411f0(uVar10);
                        uVar7 = FUN_00042780(*(undefined4 *)(iVar11 + 4),
                                             *(undefined4 *)(param_1[1] + 0x1c));
                        FUN_0004bdd0(iVar11);
                        iVar4 = FUN_00041b70(iVar2,uVar7);
                        bVar12 = iVar4 == 0;
                        FUN_000411f0(uVar7);
                        FUN_000411f0(uVar6);
                        goto LAB_0004ce42;
                      }
                      FUN_0004bdd0(iVar11);
                    }
                  }
                }
                FUN_000411f0(uVar7);
                FUN_000411f0(uVar10);
                FUN_000411f0(uVar6);
                bVar12 = false;
              }
            }
            else {
              bVar12 = false;
            }
LAB_0004ce42:
            FUN_000411f0(iVar2);
            FUN_000411f0(iVar8);
            goto LAB_0004cb12;
          }
          FUN_000411f0(iVar2);
        }
      }
    }
  }
  bVar12 = false;
LAB_0004cb12:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0006dad0();
  }
  return bVar12;
}

