
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int decodepoint_ed(char *p,int length,ec_point *point)

{
  uint uVar1;
  ec_curve *curve;
  uint uVar2;
  int iVar3;
  int iVar4;
  Bignum_conflict pBVar5;
  Bignum_conflict pBVar6;
  Bignum_conflict pBVar7;
  Bignum_conflict pBVar8;
  
  pBVar5 = bignum_from_bytes_le((uchar *)p,length);
  point->y = pBVar5;
  uVar2 = bignum_bitcount(pBVar5);
  uVar1 = point->curve->fieldBits;
  if (uVar1 < uVar2) {
    freebn((Bignum_conflict)point->y);
    point->y = (Bignum)0x0;
  }
  else {
    iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);
    bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);
    bn_restore_invariant((Bignum_conflict)point->y);
    curve = point->curve;
    pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);
    pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);
    pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);
    freebn(pBVar6);
    pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);
    freebn(pBVar7);
    if (pBVar6 == (Bignum_conflict)0x0) {
      freebn(pBVar5);
      point->x = (Bignum)0x0;
    }
    else {
      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);
      freebn(pBVar5);
      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);
      freebn(pBVar7);
      freebn(pBVar6);
      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);
      pBVar6 = bignum_rshift(pBVar5,3);
      freebn(pBVar5);
      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);
      freebn(pBVar6);
      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);
      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);
      freebn(pBVar6);
      freebn(pBVar8);
      iVar4 = bignum_cmp(pBVar7,Zero);
      if (iVar4 == 0) {
        freebn(pBVar7);
      }
      else {
        freebn(pBVar7);
        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);
        pBVar7 = bignum_rshift(pBVar6,2);
        freebn(pBVar6);
        pBVar6 = bignum_from_long(2);
        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);
        freebn(pBVar6);
        freebn(pBVar7);
        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);
        freebn(pBVar5);
        freebn(pBVar8);
        pBVar5 = pBVar6;
      }
      iVar4 = bignum_bit(pBVar5,0);
      pBVar6 = pBVar5;
      if (iVar4 != 0) {
        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);
        freebn(pBVar5);
      }
      point->x = pBVar6;
      if (pBVar6 != (Bignum_conflict)0x0) {
        if (iVar3 != 0) {
          pBVar5 = (Bignum_conflict)point->curve->p;
          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);
          freebn((Bignum_conflict)point->x);
          point->x = pBVar5;
        }
        iVar3 = ec_point_verify(point);
        if (iVar3 != 0) {
          return 1;
        }
        freebn((Bignum_conflict)point->x);
        point->x = (Bignum)0x0;
        freebn((Bignum_conflict)point->y);
        point->y = (Bignum)0x0;
        return 0;
      }
    }
    freebn((Bignum_conflict)point->y);
    point->y = (Bignum)0x0;
  }
  return 0;
}



undefined4 FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  long lVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  long lVar9;
  
  lVar4 = FUN_0014a1d6();
  param_3[2] = lVar4;
  uVar1 = FUN_0014a306(lVar4);
  if (*(uint *)(*param_3 + 0x18) < uVar1) {
    FUN_00149d43(param_3[2]);
    param_3[2] = 0;
  }
  else {
    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);
    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);
    FUN_00149cd4(param_3[2]);
    lVar4 = *param_3;
    uVar5 = FUN_00151710(param_3[2],lVar4);
    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));
    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);
    FUN_00149d43(uVar6);
    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));
    FUN_00149d43(uVar7);
    if (lVar8 == 0) {
      FUN_00149d43(uVar5);
      param_3[1] = 0;
    }
    else {
      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar5);
      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar6);
      FUN_00149d43(lVar8);
      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);
      uVar7 = FUN_0014a764(uVar6,3);
      FUN_00149d43(uVar6);
      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar7);
      uVar6 = FUN_00151710(lVar8,lVar4);
      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar6);
      FUN_00149d43(uVar5);
      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);
      if (iVar3 == 0) {
        FUN_00149d43(uVar7);
      }
      else {
        FUN_00149d43(uVar7);
        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,
                             *(undefined8 *)(lVar4 + 0x20));
        uVar6 = FUN_0014a764(uVar5,2);
        FUN_00149d43(uVar5);
        uVar5 = FUN_0014ae53(2);
        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));
        FUN_00149d43(uVar5);
        FUN_00149d43(uVar6);
        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));
        FUN_00149d43(lVar8);
        FUN_00149d43(uVar7);
        lVar8 = lVar9;
      }
      iVar3 = FUN_0014a3e0(lVar8,0);
      lVar9 = lVar8;
      if (iVar3 != 0) {
        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));
        FUN_00149d43(lVar8);
      }
      param_3[1] = lVar9;
      if (lVar9 != 0) {
        if (iVar2 != 0) {
          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,
                               *(undefined8 *)(*param_3 + 0x20));
          FUN_00149d43(param_3[1]);
          param_3[1] = lVar4;
        }
        iVar2 = FUN_001532da(param_3);
        if (iVar2 != 0) {
          return 1;
        }
        FUN_00149d43(param_3[1]);
        param_3[1] = 0;
        FUN_00149d43(param_3[2]);
        param_3[2] = 0;
        return 0;
      }
    }
    FUN_00149d43(param_3[2]);
    param_3[2] = 0;
  }
  return 0;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
MOV RBX,RDX
CALL 0x0014a1d6
MOV qword ptr [RBX + 0x10],RAX
MOV RDI,RAX
CALL 0x0014a306
MOV RDX,qword ptr [RBX]
MOV ESI,dword ptr [RDX + 0x18]
CMP EAX,ESI
JA 0x00153722
SUB ESI,0x1
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x0014a3e0
MOV dword ptr [RSP + 0xc],EAX
MOV RAX,qword ptr [RBX]
MOV ESI,dword ptr [RAX + 0x18]
SUB ESI,0x1
MOV RDI,qword ptr [RBX + 0x10]
MOV EDX,0x0
CALL 0x0014a41b
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00149cd4
MOV RBP,qword ptr [RBX]
MOV RDI,qword ptr [RBX + 0x10]
MOV RSI,RBP
CALL 0x00151710
MOV R12,RAX
MOV RDX,qword ptr [RBP + 0x20]
MOV RDI,qword ptr [RBP + 0x30]
MOV RSI,RAX
CALL 0x00149d61
MOV R13,RAX
MOV RDX,RBP
MOV RSI,qword ptr [0x001ef2e8]
MOV RDI,RAX
CALL 0x00151916
MOV R14,RAX
MOV RDI,R13
CALL 0x00149d43
MOV RSI,qword ptr [RBP + 0x20]
MOV RDI,R14
CALL 0x0014b6e0
MOV R13,RAX
MOV RDI,R14
CALL 0x00149d43
TEST R13,R13
JZ 0x0015373a
MOV RDX,qword ptr [RBP + 0x20]
MOV RSI,qword ptr [0x001ef2e8]
MOV RDI,R12
CALL 0x0014b55f
MOV R14,RAX
MOV RDI,R12
CALL 0x00149d43
MOV RDX,qword ptr [RBP + 0x20]
MOV RSI,R13
MOV RDI,R14
CALL 0x00149d61
MOV R12,RAX
MOV RDI,R14
CALL 0x00149d43
MOV RDI,R13
CALL 0x00149d43
MOV RDI,qword ptr [RBP + 0x20]
MOV ESI,0x3
CALL 0x0014af1f
MOV R13,RAX
MOV ESI,0x3
MOV RDI,RAX
CALL 0x0014a764
MOV R14,RAX
MOV RDI,R13
CALL 0x00149d43
MOV RDX,qword ptr [RBP + 0x20]
MOV RSI,R14
MOV RDI,R12
CALL 0x0014b985
MOV R13,RAX
MOV RDI,R14
CALL 0x00149d43
MOV RSI,RBP
MOV RDI,R13
CALL 0x00151710
MOV R14,RAX
MOV RDX,qword ptr [RBP + 0x20]
MOV RSI,R12
MOV RDI,RAX
CALL 0x0014b55f
MOV R15,RAX
MOV RDI,R14
CALL 0x00149d43
MOV RDI,R12
CALL 0x00149d43
MOV RSI,qword ptr [0x001ef2f0]
MOV RDI,R15
CALL 0x0014a527
TEST EAX,EAX
JZ 0x00153762
MOV RDI,R15
CALL 0x00149d43
MOV RDI,qword ptr [RBP + 0x20]
MOV RDX,RDI
MOV RSI,qword ptr [0x001ef2e8]
CALL 0x0014b55f
MOV R14,RAX
MOV ESI,0x2
MOV RDI,RAX
CALL 0x0014a764
MOV R12,RAX
MOV RDI,R14
CALL 0x00149d43
MOV EDI,0x2
CALL 0x0014ae53
MOV R14,RAX
MOV RDX,qword ptr [RBP + 0x20]
MOV RSI,R12
MOV RDI,RAX
CALL 0x0014b985
MOV R15,RAX
MOV RDI,R14
CALL 0x00149d43
MOV RDI,R12
CALL 0x00149d43
MOV RDX,qword ptr [RBP + 0x20]
MOV RSI,R15
MOV RDI,R13
CALL 0x00149d61
MOV R12,RAX
MOV RDI,R13
CALL 0x00149d43
MOV RDI,R15
CALL 0x00149d43
MOV ESI,0x0
MOV RDI,R12
CALL 0x0014a3e0
TEST EAX,EAX
JNZ 0x00153772
MOV qword ptr [RBX + 0x8],R12
TEST R12,R12
JZ 0x0015374a
CMP dword ptr [RSP + 0xc],0x0
JNZ 0x00153794
MOV RDI,RBX
CALL 0x001532da
MOV EBP,EAX
TEST EAX,EAX
JZ 0x001537bb
MOV EBP,0x1
MOV EAX,EBP
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00149d43
MOV qword ptr [RBX + 0x10],0x0
MOV EBP,0x0
JMP 0x00153711
MOV RDI,R12
CALL 0x00149d43
MOV qword ptr [RBX + 0x8],0x0
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00149d43
MOV qword ptr [RBX + 0x10],0x0
MOV EBP,0x0
JMP 0x00153711
MOV RDI,R15
CALL 0x00149d43
MOV R12,R13
JMP 0x001536d1
MOV RDI,qword ptr [RBP + 0x20]
MOV RDX,RDI
MOV RSI,R12
CALL 0x0014b55f
MOV RBP,RAX
MOV RDI,R12
CALL 0x00149d43
MOV R12,RBP
JMP 0x001536e6
MOV RAX,qword ptr [RBX]
MOV RDI,qword ptr [RAX + 0x20]
MOV RDX,RDI
MOV RSI,R12
CALL 0x0014b55f
MOV RBP,RAX
MOV RDI,qword ptr [RBX + 0x8]
CALL 0x00149d43
MOV qword ptr [RBX + 0x8],RBP
JMP 0x001536fa
MOV RDI,qword ptr [RBX + 0x8]
CALL 0x00149d43
MOV qword ptr [RBX + 0x8],0x0
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00149d43
MOV qword ptr [RBX + 0x10],0x0
JMP 0x00153711
(translation_unit "undefined4 FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,long *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar4 = FUN_0014a1d6();" (assignment_expression "lVar4 = FUN_0014a1d6()" identifier = (call_expression "FUN_0014a1d6()" identifier (argument_list "()" ( )))) ;) (expression_statement "param_3[2] = lVar4;" (assignment_expression "param_3[2] = lVar4" (subscript_expression "param_3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = FUN_0014a306(lVar4);" (assignment_expression "uVar1 = FUN_0014a306(lVar4)" identifier = (call_expression "FUN_0014a306(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (if_statement "if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" if (parenthesized_expression "(*(uint *)(*param_3 + 0x18) < uVar1)" ( (binary_expression "*(uint *)(*param_3 + 0x18) < uVar1" (pointer_expression "*(uint *)(*param_3 + 0x18)" * (cast_expression "(uint *)(*param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x18)" ( (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) < identifier) )) (compound_statement "{\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" { (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" else (compound_statement "{\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" { (expression_statement "iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);" (assignment_expression "iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" identifier = (call_expression "FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" identifier (argument_list "(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) , (binary_expression "*(uint *)(*param_3 + 0x18) - 1" (pointer_expression "*(uint *)(*param_3 + 0x18)" * (cast_expression "(uint *)(*param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x18)" ( (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) - number_literal) )))) ;) (expression_statement "FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);" (call_expression "FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0)" identifier (argument_list "(param_3[2],*(int *)(*param_3 + 0x18) + -1,0)" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) , (binary_expression "*(int *)(*param_3 + 0x18) + -1" (pointer_expression "*(int *)(*param_3 + 0x18)" * (cast_expression "(int *)(*param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x18)" ( (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "FUN_00149cd4(param_3[2]);" (call_expression "FUN_00149cd4(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar4 = *param_3;" (assignment_expression "lVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar5 = FUN_00151710(param_3[2],lVar4);" (assignment_expression "uVar5 = FUN_00151710(param_3[2],lVar4)" identifier = (call_expression "FUN_00151710(param_3[2],lVar4)" identifier (argument_list "(param_3[2],lVar4)" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);" (assignment_expression "uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4)" identifier = (call_expression "FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4)" identifier (argument_list "(uVar6,PTR_DAT_001ef2e8,lVar4)" ( identifier , identifier , identifier )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar7,*(undefined8 *)(lVar4 + 0x20))" ( identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (if_statement "if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }" { (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" else (compound_statement "{\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" { (expression_statement "uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);" (assignment_expression "uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3)" identifier = (call_expression "FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3)" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x20),3)" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "uVar7 = FUN_0014a764(uVar6,3);" (assignment_expression "uVar7 = FUN_0014a764(uVar6,3)" identifier = (call_expression "FUN_0014a764(uVar6,3)" identifier (argument_list "(uVar6,3)" ( identifier , number_literal )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "uVar6 = FUN_00151710(lVar8,lVar4);" (assignment_expression "uVar6 = FUN_00151710(lVar8,lVar4)" identifier = (call_expression "FUN_00151710(lVar8,lVar4)" identifier (argument_list "(lVar8,lVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);" (assignment_expression "iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0)" identifier = (call_expression "FUN_0014a527(uVar7,PTR_DAT_001ef2f0)" identifier (argument_list "(uVar7,PTR_DAT_001ef2f0)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00149d43(uVar7);\n      }" { (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) }) (else_clause "else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" else (compound_statement "{\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" { (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "uVar6 = FUN_0014a764(uVar5,2);" (assignment_expression "uVar6 = FUN_0014a764(uVar5,2)" identifier = (call_expression "FUN_0014a764(uVar5,2)" identifier (argument_list "(uVar5,2)" ( identifier , number_literal )))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_0014ae53(2);" (assignment_expression "uVar5 = FUN_0014ae53(2)" identifier = (call_expression "FUN_0014ae53(2)" identifier (argument_list "(2)" ( number_literal )))) ;) (expression_statement "uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) }))) (expression_statement "iVar3 = FUN_0014a3e0(lVar8,0);" (assignment_expression "iVar3 = FUN_0014a3e0(lVar8,0)" identifier = (call_expression "FUN_0014a3e0(lVar8,0)" identifier (argument_list "(lVar8,0)" ( identifier , number_literal )))) ;) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }" { (expression_statement "lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) })) (expression_statement "param_3[1] = lVar9;" (assignment_expression "param_3[1] = lVar9" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }" if (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }" { (if_statement "if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }" { (expression_statement "lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));" (assignment_expression "lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" identifier = (call_expression "FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" identifier (argument_list "(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" ( (pointer_expression "*(undefined8 *)(*param_3 + 0x20)" * (cast_expression "(undefined8 *)(*param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x20)" ( (binary_expression "*param_3 + 0x20" (pointer_expression "*param_3" * identifier) + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(*param_3 + 0x20)" * (cast_expression "(undefined8 *)(*param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x20)" ( (binary_expression "*param_3 + 0x20" (pointer_expression "*param_3" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(param_3[1]);" (call_expression "FUN_00149d43(param_3[1])" identifier (argument_list "(param_3[1])" ( (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[1] = lVar4;" (assignment_expression "param_3[1] = lVar4" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar2 = FUN_001532da(param_3);" (assignment_expression "iVar2 = FUN_001532da(param_3)" identifier = (call_expression "FUN_001532da(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "FUN_00149d43(param_3[1]);" (call_expression "FUN_00149d43(param_3[1])" identifier (argument_list "(param_3[1])" ( (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint decodepoint_ed(char *p,int length,ec_point *point)\n\n{\n  uint uVar1;\n  ec_curve *curve;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  Bignum_conflict pBVar5;\n  Bignum_conflict pBVar6;\n  Bignum_conflict pBVar7;\n  Bignum_conflict pBVar8;\n  \n  pBVar5 = bignum_from_bytes_le((uchar *)p,length);\n  point->y = pBVar5;\n  uVar2 = bignum_bitcount(pBVar5);\n  uVar1 = point->curve->fieldBits;\n  if (uVar1 < uVar2) {\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }\n  else {\n    iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);\n    bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);\n    bn_restore_invariant((Bignum_conflict)point->y);\n    curve = point->curve;\n    pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);\n    pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);\n    pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);\n    freebn(pBVar6);\n    pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);\n    freebn(pBVar7);\n    if (pBVar6 == (Bignum_conflict)0x0) {\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }\n    else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }\n  return 0;\n}\n\n" comment (function_definition "int decodepoint_ed(char *p,int length,ec_point *point)\n\n{\n  uint uVar1;\n  ec_curve *curve;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  Bignum_conflict pBVar5;\n  Bignum_conflict pBVar6;\n  Bignum_conflict pBVar7;\n  Bignum_conflict pBVar8;\n  \n  pBVar5 = bignum_from_bytes_le((uchar *)p,length);\n  point->y = pBVar5;\n  uVar2 = bignum_bitcount(pBVar5);\n  uVar1 = point->curve->fieldBits;\n  if (uVar1 < uVar2) {\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }\n  else {\n    iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);\n    bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);\n    bn_restore_invariant((Bignum_conflict)point->y);\n    curve = point->curve;\n    pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);\n    pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);\n    pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);\n    freebn(pBVar6);\n    pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);\n    freebn(pBVar7);\n    if (pBVar6 == (Bignum_conflict)0x0) {\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }\n    else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }\n  return 0;\n}" primitive_type (function_declarator "decodepoint_ed(char *p,int length,ec_point *point)" identifier (parameter_list "(char *p,int length,ec_point *point)" ( (parameter_declaration "char *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "int length" primitive_type identifier) , (parameter_declaration "ec_point *point" type_identifier (pointer_declarator "*point" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  ec_curve *curve;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  Bignum_conflict pBVar5;\n  Bignum_conflict pBVar6;\n  Bignum_conflict pBVar7;\n  Bignum_conflict pBVar8;\n  \n  pBVar5 = bignum_from_bytes_le((uchar *)p,length);\n  point->y = pBVar5;\n  uVar2 = bignum_bitcount(pBVar5);\n  uVar1 = point->curve->fieldBits;\n  if (uVar1 < uVar2) {\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }\n  else {\n    iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);\n    bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);\n    bn_restore_invariant((Bignum_conflict)point->y);\n    curve = point->curve;\n    pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);\n    pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);\n    pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);\n    freebn(pBVar6);\n    pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);\n    freebn(pBVar7);\n    if (pBVar6 == (Bignum_conflict)0x0) {\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }\n    else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "ec_curve *curve;" type_identifier (pointer_declarator "*curve" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Bignum_conflict pBVar5;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar6;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar7;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar8;" type_identifier identifier ;) (expression_statement "pBVar5 = bignum_from_bytes_le((uchar *)p,length);" (assignment_expression "pBVar5 = bignum_from_bytes_le((uchar *)p,length)" identifier = (call_expression "bignum_from_bytes_le((uchar *)p,length)" identifier (argument_list "((uchar *)p,length)" ( (cast_expression "(uchar *)p" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "point->y = pBVar5;" (assignment_expression "point->y = pBVar5" (field_expression "point->y" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar2 = bignum_bitcount(pBVar5);" (assignment_expression "uVar2 = bignum_bitcount(pBVar5)" identifier = (call_expression "bignum_bitcount(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (expression_statement "uVar1 = point->curve->fieldBits;" (assignment_expression "uVar1 = point->curve->fieldBits" identifier = (field_expression "point->curve->fieldBits" (field_expression "point->curve" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (uVar1 < uVar2) {\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }\n  else {\n    iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);\n    bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);\n    bn_restore_invariant((Bignum_conflict)point->y);\n    curve = point->curve;\n    pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);\n    pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);\n    pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);\n    freebn(pBVar6);\n    pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);\n    freebn(pBVar7);\n    if (pBVar6 == (Bignum_conflict)0x0) {\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }\n    else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }" if (parenthesized_expression "(uVar1 < uVar2)" ( (binary_expression "uVar1 < uVar2" identifier < identifier) )) (compound_statement "{\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }" { (expression_statement "freebn((Bignum_conflict)point->y);" (call_expression "freebn((Bignum_conflict)point->y)" identifier (argument_list "((Bignum_conflict)point->y)" ( (cast_expression "(Bignum_conflict)point->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->y" identifier -> field_identifier)) ))) ;) (expression_statement "point->y = (Bignum)0x0;" (assignment_expression "point->y = (Bignum)0x0" (field_expression "point->y" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n    iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);\n    bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);\n    bn_restore_invariant((Bignum_conflict)point->y);\n    curve = point->curve;\n    pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);\n    pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);\n    pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);\n    freebn(pBVar6);\n    pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);\n    freebn(pBVar7);\n    if (pBVar6 == (Bignum_conflict)0x0) {\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }\n    else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }" else (compound_statement "{\n    iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);\n    bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);\n    bn_restore_invariant((Bignum_conflict)point->y);\n    curve = point->curve;\n    pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);\n    pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);\n    pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);\n    freebn(pBVar6);\n    pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);\n    freebn(pBVar7);\n    if (pBVar6 == (Bignum_conflict)0x0) {\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }\n    else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }\n    freebn((Bignum_conflict)point->y);\n    point->y = (Bignum)0x0;\n  }" { (expression_statement "iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1);" (assignment_expression "iVar3 = bignum_bit((Bignum_conflict)point->y,uVar1 - 1)" identifier = (call_expression "bignum_bit((Bignum_conflict)point->y,uVar1 - 1)" identifier (argument_list "((Bignum_conflict)point->y,uVar1 - 1)" ( (cast_expression "(Bignum_conflict)point->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->y" identifier -> field_identifier)) , (binary_expression "uVar1 - 1" identifier - number_literal) )))) ;) (expression_statement "bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0);" (call_expression "bignum_set_bit((Bignum_conflict)point->y,point->curve->fieldBits - 1,0)" identifier (argument_list "((Bignum_conflict)point->y,point->curve->fieldBits - 1,0)" ( (cast_expression "(Bignum_conflict)point->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->y" identifier -> field_identifier)) , (binary_expression "point->curve->fieldBits - 1" (field_expression "point->curve->fieldBits" (field_expression "point->curve" identifier -> field_identifier) -> field_identifier) - number_literal) , number_literal ))) ;) (expression_statement "bn_restore_invariant((Bignum_conflict)point->y);" (call_expression "bn_restore_invariant((Bignum_conflict)point->y)" identifier (argument_list "((Bignum_conflict)point->y)" ( (cast_expression "(Bignum_conflict)point->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->y" identifier -> field_identifier)) ))) ;) (expression_statement "curve = point->curve;" (assignment_expression "curve = point->curve" identifier = (field_expression "point->curve" identifier -> field_identifier)) ;) (expression_statement "pBVar5 = (Bignum_conflict)ecf_square(point->y,curve);" (assignment_expression "pBVar5 = (Bignum_conflict)ecf_square(point->y,curve)" identifier = (cast_expression "(Bignum_conflict)ecf_square(point->y,curve)" ( (type_descriptor "Bignum_conflict" type_identifier) ) (call_expression "ecf_square(point->y,curve)" identifier (argument_list "(point->y,curve)" ( (field_expression "point->y" identifier -> field_identifier) , identifier ))))) ;) (expression_statement "pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p);" (assignment_expression "pBVar6 = modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p)" identifier = (call_expression "modmul((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p)" identifier (argument_list "((Bignum_conflict)(curve->field_5).w.b,pBVar5,(Bignum_conflict)curve->p)" ( (field_expression "(Bignum_conflict)(curve->field_5).w.b" (field_expression "(Bignum_conflict)(curve->field_5).w" (call_expression "(Bignum_conflict)(curve->field_5)" (parenthesized_expression "(Bignum_conflict)" ( identifier )) (argument_list "(curve->field_5)" ( (field_expression "curve->field_5" identifier -> field_identifier) ))) . field_identifier) . field_identifier) , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve);" (assignment_expression "pBVar7 = (Bignum_conflict)ecf_add(pBVar6,One,curve)" identifier = (cast_expression "(Bignum_conflict)ecf_add(pBVar6,One,curve)" ( (type_descriptor "Bignum_conflict" type_identifier) ) (call_expression "ecf_add(pBVar6,One,curve)" identifier (argument_list "(pBVar6,One,curve)" ( identifier , identifier , identifier ))))) ;) (expression_statement "freebn(pBVar6);" (call_expression "freebn(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) (expression_statement "pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p);" (assignment_expression "pBVar6 = modinv(pBVar7,(Bignum_conflict)curve->p)" identifier = (call_expression "modinv(pBVar7,(Bignum_conflict)curve->p)" identifier (argument_list "(pBVar7,(Bignum_conflict)curve->p)" ( identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;) (if_statement "if (pBVar6 == (Bignum_conflict)0x0) {\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }\n    else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }" if (parenthesized_expression "(pBVar6 == (Bignum_conflict)0x0)" ( (binary_expression "pBVar6 == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n      freebn(pBVar5);\n      point->x = (Bignum)0x0;\n    }" { (expression_statement "freebn(pBVar5);" (call_expression "freebn(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier ))) ;) (expression_statement "point->x = (Bignum)0x0;" (assignment_expression "point->x = (Bignum)0x0" (field_expression "point->x" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }" else (compound_statement "{\n      pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);\n      freebn(pBVar5);\n      pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar7);\n      freebn(pBVar6);\n      pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);\n      pBVar6 = bignum_rshift(pBVar5,3);\n      freebn(pBVar5);\n      pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);\n      pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);\n      freebn(pBVar6);\n      freebn(pBVar8);\n      iVar4 = bignum_cmp(pBVar7,Zero);\n      if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }\n      iVar4 = bignum_bit(pBVar5,0);\n      pBVar6 = pBVar5;\n      if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }\n      point->x = pBVar6;\n      if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }\n    }" { (expression_statement "pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p);" (assignment_expression "pBVar7 = modsub(pBVar5,One,(Bignum_conflict)curve->p)" identifier = (call_expression "modsub(pBVar5,One,(Bignum_conflict)curve->p)" identifier (argument_list "(pBVar5,One,(Bignum_conflict)curve->p)" ( identifier , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar5);" (call_expression "freebn(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier ))) ;) (expression_statement "pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p);" (assignment_expression "pBVar8 = modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p)" identifier = (call_expression "modmul(pBVar7,pBVar6,(Bignum_conflict)curve->p)" identifier (argument_list "(pBVar7,pBVar6,(Bignum_conflict)curve->p)" ( identifier , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;) (expression_statement "freebn(pBVar6);" (call_expression "freebn(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) (expression_statement "pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3);" (assignment_expression "pBVar5 = bignum_add_long((Bignum_conflict)curve->p,3)" identifier = (call_expression "bignum_add_long((Bignum_conflict)curve->p,3)" identifier (argument_list "((Bignum_conflict)curve->p,3)" ( (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) , number_literal )))) ;) (expression_statement "pBVar6 = bignum_rshift(pBVar5,3);" (assignment_expression "pBVar6 = bignum_rshift(pBVar5,3)" identifier = (call_expression "bignum_rshift(pBVar5,3)" identifier (argument_list "(pBVar5,3)" ( identifier , number_literal )))) ;) (expression_statement "freebn(pBVar5);" (call_expression "freebn(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier ))) ;) (expression_statement "pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p);" (assignment_expression "pBVar5 = modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p)" identifier = (call_expression "modpow(pBVar8,pBVar6,(Bignum_conflict)curve->p)" identifier (argument_list "(pBVar8,pBVar6,(Bignum_conflict)curve->p)" ( identifier , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar6);" (call_expression "freebn(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) (expression_statement "pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve);" (assignment_expression "pBVar6 = (Bignum_conflict)ecf_square(pBVar5,curve)" identifier = (cast_expression "(Bignum_conflict)ecf_square(pBVar5,curve)" ( (type_descriptor "Bignum_conflict" type_identifier) ) (call_expression "ecf_square(pBVar5,curve)" identifier (argument_list "(pBVar5,curve)" ( identifier , identifier ))))) ;) (expression_statement "pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p);" (assignment_expression "pBVar7 = modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p)" identifier = (call_expression "modsub(pBVar6,pBVar8,(Bignum_conflict)curve->p)" identifier (argument_list "(pBVar6,pBVar8,(Bignum_conflict)curve->p)" ( identifier , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar6);" (call_expression "freebn(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) (expression_statement "freebn(pBVar8);" (call_expression "freebn(pBVar8)" identifier (argument_list "(pBVar8)" ( identifier ))) ;) (expression_statement "iVar4 = bignum_cmp(pBVar7,Zero);" (assignment_expression "iVar4 = bignum_cmp(pBVar7,Zero)" identifier = (call_expression "bignum_cmp(pBVar7,Zero)" identifier (argument_list "(pBVar7,Zero)" ( identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n        freebn(pBVar7);\n      }\n      else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        freebn(pBVar7);\n      }" { (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;) }) (else_clause "else {\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }" else (compound_statement "{\n        freebn(pBVar7);\n        pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);\n        pBVar7 = bignum_rshift(pBVar6,2);\n        freebn(pBVar6);\n        pBVar6 = bignum_from_long(2);\n        pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);\n        freebn(pBVar6);\n        freebn(pBVar7);\n        pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n        freebn(pBVar8);\n        pBVar5 = pBVar6;\n      }" { (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;) (expression_statement "pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p);" (assignment_expression "pBVar6 = modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p)" identifier = (call_expression "modsub((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p)" identifier (argument_list "((Bignum_conflict)curve->p,One,(Bignum_conflict)curve->p)" ( (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "pBVar7 = bignum_rshift(pBVar6,2);" (assignment_expression "pBVar7 = bignum_rshift(pBVar6,2)" identifier = (call_expression "bignum_rshift(pBVar6,2)" identifier (argument_list "(pBVar6,2)" ( identifier , number_literal )))) ;) (expression_statement "freebn(pBVar6);" (call_expression "freebn(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) (expression_statement "pBVar6 = bignum_from_long(2);" (assignment_expression "pBVar6 = bignum_from_long(2)" identifier = (call_expression "bignum_from_long(2)" identifier (argument_list "(2)" ( number_literal )))) ;) (expression_statement "pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p);" (assignment_expression "pBVar8 = modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p)" identifier = (call_expression "modpow(pBVar6,pBVar7,(Bignum_conflict)curve->p)" identifier (argument_list "(pBVar6,pBVar7,(Bignum_conflict)curve->p)" ( identifier , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar6);" (call_expression "freebn(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) (expression_statement "freebn(pBVar7);" (call_expression "freebn(pBVar7)" identifier (argument_list "(pBVar7)" ( identifier ))) ;) (expression_statement "pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p);" (assignment_expression "pBVar6 = modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p)" identifier = (call_expression "modmul(pBVar5,pBVar8,(Bignum_conflict)curve->p)" identifier (argument_list "(pBVar5,pBVar8,(Bignum_conflict)curve->p)" ( identifier , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar5);" (call_expression "freebn(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier ))) ;) (expression_statement "freebn(pBVar8);" (call_expression "freebn(pBVar8)" identifier (argument_list "(pBVar8)" ( identifier ))) ;) (expression_statement "pBVar5 = pBVar6;" (assignment_expression "pBVar5 = pBVar6" identifier = identifier) ;) }))) (expression_statement "iVar4 = bignum_bit(pBVar5,0);" (assignment_expression "iVar4 = bignum_bit(pBVar5,0)" identifier = (call_expression "bignum_bit(pBVar5,0)" identifier (argument_list "(pBVar5,0)" ( identifier , number_literal )))) ;) (expression_statement "pBVar6 = pBVar5;" (assignment_expression "pBVar6 = pBVar5" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);\n        freebn(pBVar5);\n      }" { (expression_statement "pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p);" (assignment_expression "pBVar6 = modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p)" identifier = (call_expression "modsub((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p)" identifier (argument_list "((Bignum_conflict)curve->p,pBVar5,(Bignum_conflict)curve->p)" ( (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) , identifier , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar5);" (call_expression "freebn(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier ))) ;) })) (expression_statement "point->x = pBVar6;" (assignment_expression "point->x = pBVar6" (field_expression "point->x" identifier -> field_identifier) = identifier) ;) (if_statement "if (pBVar6 != (Bignum_conflict)0x0) {\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }" if (parenthesized_expression "(pBVar6 != (Bignum_conflict)0x0)" ( (binary_expression "pBVar6 != (Bignum_conflict)0x0" identifier != (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n        if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }\n        iVar3 = ec_point_verify(point);\n        if (iVar3 != 0) {\n          return 1;\n        }\n        freebn((Bignum_conflict)point->x);\n        point->x = (Bignum)0x0;\n        freebn((Bignum_conflict)point->y);\n        point->y = (Bignum)0x0;\n        return 0;\n      }" { (if_statement "if (iVar3 != 0) {\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          pBVar5 = (Bignum_conflict)point->curve->p;\n          pBVar5 = modsub(pBVar5,pBVar6,pBVar5);\n          freebn((Bignum_conflict)point->x);\n          point->x = pBVar5;\n        }" { (expression_statement "pBVar5 = (Bignum_conflict)point->curve->p;" (assignment_expression "pBVar5 = (Bignum_conflict)point->curve->p" identifier = (cast_expression "(Bignum_conflict)point->curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->curve->p" (field_expression "point->curve" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "pBVar5 = modsub(pBVar5,pBVar6,pBVar5);" (assignment_expression "pBVar5 = modsub(pBVar5,pBVar6,pBVar5)" identifier = (call_expression "modsub(pBVar5,pBVar6,pBVar5)" identifier (argument_list "(pBVar5,pBVar6,pBVar5)" ( identifier , identifier , identifier )))) ;) (expression_statement "freebn((Bignum_conflict)point->x);" (call_expression "freebn((Bignum_conflict)point->x)" identifier (argument_list "((Bignum_conflict)point->x)" ( (cast_expression "(Bignum_conflict)point->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->x" identifier -> field_identifier)) ))) ;) (expression_statement "point->x = pBVar5;" (assignment_expression "point->x = pBVar5" (field_expression "point->x" identifier -> field_identifier) = identifier) ;) })) (expression_statement "iVar3 = ec_point_verify(point);" (assignment_expression "iVar3 = ec_point_verify(point)" identifier = (call_expression "ec_point_verify(point)" identifier (argument_list "(point)" ( identifier )))) ;) (if_statement "if (iVar3 != 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "freebn((Bignum_conflict)point->x);" (call_expression "freebn((Bignum_conflict)point->x)" identifier (argument_list "((Bignum_conflict)point->x)" ( (cast_expression "(Bignum_conflict)point->x" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->x" identifier -> field_identifier)) ))) ;) (expression_statement "point->x = (Bignum)0x0;" (assignment_expression "point->x = (Bignum)0x0" (field_expression "point->x" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) (expression_statement "freebn((Bignum_conflict)point->y);" (call_expression "freebn((Bignum_conflict)point->y)" identifier (argument_list "((Bignum_conflict)point->y)" ( (cast_expression "(Bignum_conflict)point->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->y" identifier -> field_identifier)) ))) ;) (expression_statement "point->y = (Bignum)0x0;" (assignment_expression "point->y = (Bignum)0x0" (field_expression "point->y" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "freebn((Bignum_conflict)point->y);" (call_expression "freebn((Bignum_conflict)point->y)" identifier (argument_list "((Bignum_conflict)point->y)" ( (cast_expression "(Bignum_conflict)point->y" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "point->y" identifier -> field_identifier)) ))) ;) (expression_statement "point->y = (Bignum)0x0;" (assignment_expression "point->y = (Bignum)0x0" (field_expression "point->y" identifier -> field_identifier) = (cast_expression "(Bignum)0x0" ( (type_descriptor "Bignum" type_identifier) ) number_literal)) ;) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,long *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar4 = FUN_0014a1d6();" (assignment_expression "lVar4 = FUN_0014a1d6()" identifier = (call_expression "FUN_0014a1d6()" identifier (argument_list "()" ( )))) ;) (expression_statement "param_3[2] = lVar4;" (assignment_expression "param_3[2] = lVar4" (subscript_expression "param_3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = FUN_0014a306(lVar4);" (assignment_expression "uVar1 = FUN_0014a306(lVar4)" identifier = (call_expression "FUN_0014a306(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (if_statement "if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" if (parenthesized_expression "(*(uint *)(*param_3 + 0x18) < uVar1)" ( (binary_expression "*(uint *)(*param_3 + 0x18) < uVar1" (pointer_expression "*(uint *)(*param_3 + 0x18)" * (cast_expression "(uint *)(*param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x18)" ( (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) < identifier) )) (compound_statement "{\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" { (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" else (compound_statement "{\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" { (expression_statement "iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);" (assignment_expression "iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" identifier = (call_expression "FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" identifier (argument_list "(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) , (binary_expression "*(uint *)(*param_3 + 0x18) - 1" (pointer_expression "*(uint *)(*param_3 + 0x18)" * (cast_expression "(uint *)(*param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x18)" ( (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) - number_literal) )))) ;) (expression_statement "FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);" (call_expression "FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0)" identifier (argument_list "(param_3[2],*(int *)(*param_3 + 0x18) + -1,0)" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) , (binary_expression "*(int *)(*param_3 + 0x18) + -1" (pointer_expression "*(int *)(*param_3 + 0x18)" * (cast_expression "(int *)(*param_3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x18)" ( (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" * identifier) + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "FUN_00149cd4(param_3[2]);" (call_expression "FUN_00149cd4(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar4 = *param_3;" (assignment_expression "lVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar5 = FUN_00151710(param_3[2],lVar4);" (assignment_expression "uVar5 = FUN_00151710(param_3[2],lVar4)" identifier = (call_expression "FUN_00151710(param_3[2],lVar4)" identifier (argument_list "(param_3[2],lVar4)" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) , identifier )))) ;) (expression_statement "uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);" (assignment_expression "uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4)" identifier = (call_expression "FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4)" identifier (argument_list "(uVar6,PTR_DAT_001ef2e8,lVar4)" ( identifier , identifier , identifier )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar7,*(undefined8 *)(lVar4 + 0x20))" ( identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (if_statement "if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }" { (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" else (compound_statement "{\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" { (expression_statement "uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);" (assignment_expression "uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3)" identifier = (call_expression "FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3)" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x20),3)" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "uVar7 = FUN_0014a764(uVar6,3);" (assignment_expression "uVar7 = FUN_0014a764(uVar6,3)" identifier = (call_expression "FUN_0014a764(uVar6,3)" identifier (argument_list "(uVar6,3)" ( identifier , number_literal )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "uVar6 = FUN_00151710(lVar8,lVar4);" (assignment_expression "uVar6 = FUN_00151710(lVar8,lVar4)" identifier = (call_expression "FUN_00151710(lVar8,lVar4)" identifier (argument_list "(lVar8,lVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);" (assignment_expression "iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0)" identifier = (call_expression "FUN_0014a527(uVar7,PTR_DAT_001ef2f0)" identifier (argument_list "(uVar7,PTR_DAT_001ef2f0)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00149d43(uVar7);\n      }" { (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) }) (else_clause "else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" else (compound_statement "{\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" { (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "uVar6 = FUN_0014a764(uVar5,2);" (assignment_expression "uVar6 = FUN_0014a764(uVar5,2)" identifier = (call_expression "FUN_0014a764(uVar5,2)" identifier (argument_list "(uVar5,2)" ( identifier , number_literal )))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "uVar5 = FUN_0014ae53(2);" (assignment_expression "uVar5 = FUN_0014ae53(2)" identifier = (call_expression "FUN_0014ae53(2)" identifier (argument_list "(2)" ( number_literal )))) ;) (expression_statement "uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) }))) (expression_statement "iVar3 = FUN_0014a3e0(lVar8,0);" (assignment_expression "iVar3 = FUN_0014a3e0(lVar8,0)" identifier = (call_expression "FUN_0014a3e0(lVar8,0)" identifier (argument_list "(lVar8,0)" ( identifier , number_literal )))) ;) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }" { (expression_statement "lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier = (call_expression "FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" identifier (argument_list "(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" ( (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) })) (expression_statement "param_3[1] = lVar9;" (assignment_expression "param_3[1] = lVar9" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }" if (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }" { (if_statement "if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }" { (expression_statement "lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));" (assignment_expression "lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" identifier = (call_expression "FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" identifier (argument_list "(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" ( (pointer_expression "*(undefined8 *)(*param_3 + 0x20)" * (cast_expression "(undefined8 *)(*param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x20)" ( (binary_expression "*param_3 + 0x20" (pointer_expression "*param_3" * identifier) + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(*param_3 + 0x20)" * (cast_expression "(undefined8 *)(*param_3 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + 0x20)" ( (binary_expression "*param_3 + 0x20" (pointer_expression "*param_3" * identifier) + number_literal) )))) )))) ;) (expression_statement "FUN_00149d43(param_3[1]);" (call_expression "FUN_00149d43(param_3[1])" identifier (argument_list "(param_3[1])" ( (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[1] = lVar4;" (assignment_expression "param_3[1] = lVar4" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar2 = FUN_001532da(param_3);" (assignment_expression "iVar2 = FUN_001532da(param_3)" identifier = (call_expression "FUN_001532da(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "FUN_00149d43(param_3[1]);" (call_expression "FUN_00149d43(param_3[1])" identifier (argument_list "(param_3[1])" ( (subscript_expression "param_3[1]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" identifier (argument_list "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) ))) ;) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) - LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (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 = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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 IDENT + LIT) )))) )))) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (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 IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 IDENT + LIT) )))) )))) ;) (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) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 IDENT + 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 = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (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 (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) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (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 IDENT + LIT) )))) )))) ;) (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 ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 (pointer_expression * IDENT) + LIT) )))) , 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 ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return LIT ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_001534be(undefined8 param_1,undefined8 param_2,long *param_3)" (identifier "FUN_001534be") (parameter_list "(undefined8 param_1,undefined8 param_2,long *param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  long lVar9;\n  \n  lVar4 = FUN_0014a1d6();\n  param_3[2] = lVar4;\n  uVar1 = FUN_0014a306(lVar4);\n  if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (expression_statement "lVar4 = FUN_0014a1d6();" (assignment_expression "lVar4 = FUN_0014a1d6()" (identifier "lVar4") (= "=") (call_expression "FUN_0014a1d6()" (identifier "FUN_0014a1d6") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "param_3[2] = lVar4;" (assignment_expression "param_3[2] = lVar4" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "uVar1 = FUN_0014a306(lVar4);" (assignment_expression "uVar1 = FUN_0014a306(lVar4)" (identifier "uVar1") (= "=") (call_expression "FUN_0014a306(lVar4)" (identifier "FUN_0014a306") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")")))) (; ";")) (if_statement "if (*(uint *)(*param_3 + 0x18) < uVar1) {\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }\n  else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" (if "if") (parenthesized_expression "(*(uint *)(*param_3 + 0x18) < uVar1)" (( "(") (binary_expression "*(uint *)(*param_3 + 0x18) < uVar1" (pointer_expression "*(uint *)(*param_3 + 0x18)" (* "*") (cast_expression "(uint *)(*param_3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + 0x18)" (( "(") (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x18")) () ")")))) (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" ({ "{") (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" (identifier "FUN_00149d43") (argument_list "(param_3[2])" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" (else "else") (compound_statement "{\n    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);\n    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);\n    FUN_00149cd4(param_3[2]);\n    lVar4 = *param_3;\n    uVar5 = FUN_00151710(param_3[2],lVar4);\n    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));\n    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);\n    FUN_00149d43(uVar6);\n    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));\n    FUN_00149d43(uVar7);\n    if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }\n    FUN_00149d43(param_3[2]);\n    param_3[2] = 0;\n  }" ({ "{") (expression_statement "iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);" (assignment_expression "iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" (identifier "iVar2") (= "=") (call_expression "FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" (identifier "FUN_0014a3e0") (argument_list "(param_3[2],*(uint *)(*param_3 + 0x18) - 1)" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "*(uint *)(*param_3 + 0x18) - 1" (pointer_expression "*(uint *)(*param_3 + 0x18)" (* "*") (cast_expression "(uint *)(*param_3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + 0x18)" (( "(") (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x18")) () ")")))) (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);" (call_expression "FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0)" (identifier "FUN_0014a41b") (argument_list "(param_3[2],*(int *)(*param_3 + 0x18) + -1,0)" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "*(int *)(*param_3 + 0x18) + -1" (pointer_expression "*(int *)(*param_3 + 0x18)" (* "*") (cast_expression "(int *)(*param_3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + 0x18)" (( "(") (binary_expression "*param_3 + 0x18" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "-1")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00149cd4(param_3[2]);" (call_expression "FUN_00149cd4(param_3[2])" (identifier "FUN_00149cd4") (argument_list "(param_3[2])" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "lVar4 = *param_3;" (assignment_expression "lVar4 = *param_3" (identifier "lVar4") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar5 = FUN_00151710(param_3[2],lVar4);" (assignment_expression "uVar5 = FUN_00151710(param_3[2],lVar4)" (identifier "uVar5") (= "=") (call_expression "FUN_00151710(param_3[2],lVar4)" (identifier "FUN_00151710") (argument_list "(param_3[2],lVar4)" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "lVar4") () ")")))) (; ";")) (expression_statement "uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" (identifier "uVar6") (= "=") (call_expression "FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_00149d61") (argument_list "(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20))" (( "(") (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x30)" (( "(") (binary_expression "lVar4 + 0x30" (identifier "lVar4") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (identifier "uVar5") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);" (assignment_expression "uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4)" (identifier "uVar7") (= "=") (call_expression "FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4)" (identifier "FUN_00151916") (argument_list "(uVar6,PTR_DAT_001ef2e8,lVar4)" (( "(") (identifier "uVar6") (, ",") (identifier "PTR_DAT_001ef2e8") (, ",") (identifier "lVar4") () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" (identifier "FUN_00149d43") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20))" (identifier "lVar8") (= "=") (call_expression "FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_0014b6e0") (argument_list "(uVar7,*(undefined8 *)(lVar4 + 0x20))" (( "(") (identifier "uVar7") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" (identifier "FUN_00149d43") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (if_statement "if (lVar8 == 0) {\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }\n    else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00149d43(uVar5);\n      param_3[1] = 0;\n    }" ({ "{") (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" (identifier "FUN_00149d43") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" (else "else") (compound_statement "{\n      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar5);\n      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(lVar8);\n      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);\n      uVar7 = FUN_0014a764(uVar6,3);\n      FUN_00149d43(uVar6);\n      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar7);\n      uVar6 = FUN_00151710(lVar8,lVar4);\n      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));\n      FUN_00149d43(uVar6);\n      FUN_00149d43(uVar5);\n      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);\n      if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }\n      iVar3 = FUN_0014a3e0(lVar8,0);\n      lVar9 = lVar8;\n      if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }\n      param_3[1] = lVar9;\n      if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }\n    }" ({ "{") (expression_statement "uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" (identifier "uVar6") (= "=") (call_expression "FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_0014b55f") (argument_list "(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20))" (( "(") (identifier "uVar5") (, ",") (identifier "PTR_DAT_001ef2e8") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" (identifier "FUN_00149d43") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" (identifier "uVar5") (= "=") (call_expression "FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_00149d61") (argument_list "(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20))" (( "(") (identifier "uVar6") (, ",") (identifier "lVar8") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" (identifier "FUN_00149d43") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" (identifier "FUN_00149d43") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (expression_statement "uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);" (assignment_expression "uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3)" (identifier "uVar6") (= "=") (call_expression "FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3)" (identifier "FUN_0014af1f") (argument_list "(*(undefined8 *)(lVar4 + 0x20),3)" (( "(") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (number_literal "3") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_0014a764(uVar6,3);" (assignment_expression "uVar7 = FUN_0014a764(uVar6,3)" (identifier "uVar7") (= "=") (call_expression "FUN_0014a764(uVar6,3)" (identifier "FUN_0014a764") (argument_list "(uVar6,3)" (( "(") (identifier "uVar6") (, ",") (number_literal "3") () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" (identifier "FUN_00149d43") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" (identifier "lVar8") (= "=") (call_expression "FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_0014b985") (argument_list "(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20))" (( "(") (identifier "uVar5") (, ",") (identifier "uVar7") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" (identifier "FUN_00149d43") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "uVar6 = FUN_00151710(lVar8,lVar4);" (assignment_expression "uVar6 = FUN_00151710(lVar8,lVar4)" (identifier "uVar6") (= "=") (call_expression "FUN_00151710(lVar8,lVar4)" (identifier "FUN_00151710") (argument_list "(lVar8,lVar4)" (( "(") (identifier "lVar8") (, ",") (identifier "lVar4") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" (identifier "uVar7") (= "=") (call_expression "FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_0014b55f") (argument_list "(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20))" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" (identifier "FUN_00149d43") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" (identifier "FUN_00149d43") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);" (assignment_expression "iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0)" (identifier "iVar3") (= "=") (call_expression "FUN_0014a527(uVar7,PTR_DAT_001ef2f0)" (identifier "FUN_0014a527") (argument_list "(uVar7,PTR_DAT_001ef2f0)" (( "(") (identifier "uVar7") (, ",") (identifier "PTR_DAT_001ef2f0") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        FUN_00149d43(uVar7);\n      }\n      else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00149d43(uVar7);\n      }" ({ "{") (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" (identifier "FUN_00149d43") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" (else "else") (compound_statement "{\n        FUN_00149d43(uVar7);\n        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));\n        uVar6 = FUN_0014a764(uVar5,2);\n        FUN_00149d43(uVar5);\n        uVar5 = FUN_0014ae53(2);\n        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(uVar5);\n        FUN_00149d43(uVar6);\n        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n        FUN_00149d43(uVar7);\n        lVar8 = lVar9;\n      }" ({ "{") (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" (identifier "FUN_00149d43") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" (identifier "uVar5") (= "=") (call_expression "FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_0014b55f") (argument_list "(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,\n                             *(undefined8 *)(lVar4 + 0x20))" (( "(") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "PTR_DAT_001ef2e8") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar6 = FUN_0014a764(uVar5,2);" (assignment_expression "uVar6 = FUN_0014a764(uVar5,2)" (identifier "uVar6") (= "=") (call_expression "FUN_0014a764(uVar5,2)" (identifier "FUN_0014a764") (argument_list "(uVar5,2)" (( "(") (identifier "uVar5") (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" (identifier "FUN_00149d43") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "uVar5 = FUN_0014ae53(2);" (assignment_expression "uVar5 = FUN_0014ae53(2)" (identifier "uVar5") (= "=") (call_expression "FUN_0014ae53(2)" (identifier "FUN_0014ae53") (argument_list "(2)" (( "(") (number_literal "2") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" (identifier "uVar7") (= "=") (call_expression "FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_0014b985") (argument_list "(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20))" (( "(") (identifier "uVar5") (, ",") (identifier "uVar6") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(uVar5);" (call_expression "FUN_00149d43(uVar5)" (identifier "FUN_00149d43") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "FUN_00149d43(uVar6);" (call_expression "FUN_00149d43(uVar6)" (identifier "FUN_00149d43") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" (identifier "lVar9") (= "=") (call_expression "FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_00149d61") (argument_list "(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20))" (( "(") (identifier "lVar8") (, ",") (identifier "uVar7") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" (identifier "FUN_00149d43") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (expression_statement "FUN_00149d43(uVar7);" (call_expression "FUN_00149d43(uVar7)" (identifier "FUN_00149d43") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" (identifier "lVar8") (= "=") (identifier "lVar9")) (; ";")) (} "}")))) (expression_statement "iVar3 = FUN_0014a3e0(lVar8,0);" (assignment_expression "iVar3 = FUN_0014a3e0(lVar8,0)" (identifier "iVar3") (= "=") (call_expression "FUN_0014a3e0(lVar8,0)" (identifier "FUN_0014a3e0") (argument_list "(lVar8,0)" (( "(") (identifier "lVar8") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "lVar9 = lVar8;" (assignment_expression "lVar9 = lVar8" (identifier "lVar9") (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (iVar3 != 0) {\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));\n        FUN_00149d43(lVar8);\n      }" ({ "{") (expression_statement "lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));" (assignment_expression "lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" (identifier "lVar9") (= "=") (call_expression "FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" (identifier "FUN_0014b55f") (argument_list "(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20))" (( "(") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "lVar8") (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(lVar8);" (call_expression "FUN_00149d43(lVar8)" (identifier "FUN_00149d43") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "param_3[1] = lVar9;" (assignment_expression "param_3[1] = lVar9" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar9")) (; ";")) (if_statement "if (lVar9 != 0) {\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }" (if "if") (parenthesized_expression "(lVar9 != 0)" (( "(") (binary_expression "lVar9 != 0" (identifier "lVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }\n        iVar2 = FUN_001532da(param_3);\n        if (iVar2 != 0) {\n          return 1;\n        }\n        FUN_00149d43(param_3[1]);\n        param_3[1] = 0;\n        FUN_00149d43(param_3[2]);\n        param_3[2] = 0;\n        return 0;\n      }" ({ "{") (if_statement "if (iVar2 != 0) {\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));\n          FUN_00149d43(param_3[1]);\n          param_3[1] = lVar4;\n        }" ({ "{") (expression_statement "lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20));" (assignment_expression "lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" (identifier "lVar4") (= "=") (call_expression "FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" (identifier "FUN_0014b55f") (argument_list "(*(undefined8 *)(*param_3 + 0x20),lVar9,\n                               *(undefined8 *)(*param_3 + 0x20))" (( "(") (pointer_expression "*(undefined8 *)(*param_3 + 0x20)" (* "*") (cast_expression "(undefined8 *)(*param_3 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + 0x20)" (( "(") (binary_expression "*param_3 + 0x20" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "lVar9") (, ",") (pointer_expression "*(undefined8 *)(*param_3 + 0x20)" (* "*") (cast_expression "(undefined8 *)(*param_3 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + 0x20)" (( "(") (binary_expression "*param_3 + 0x20" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00149d43(param_3[1]);" (call_expression "FUN_00149d43(param_3[1])" (identifier "FUN_00149d43") (argument_list "(param_3[1])" (( "(") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "param_3[1] = lVar4;" (assignment_expression "param_3[1] = lVar4" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_001532da(param_3);" (assignment_expression "iVar2 = FUN_001532da(param_3)" (identifier "iVar2") (= "=") (call_expression "FUN_001532da(param_3)" (identifier "FUN_001532da") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n          return 1;\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return 1;\n        }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "FUN_00149d43(param_3[1]);" (call_expression "FUN_00149d43(param_3[1])" (identifier "FUN_00149d43") (argument_list "(param_3[1])" (( "(") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" (identifier "FUN_00149d43") (argument_list "(param_3[2])" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_00149d43(param_3[2]);" (call_expression "FUN_00149d43(param_3[2])" (identifier "FUN_00149d43") (argument_list "(param_3[2])" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int function_1(char *p,int length,type_1 *point)

{
  type_2 var_3;
  type_3 *curve;
  type_2 var_4;
  int var_21;
  int var_19;
  type_4 pBVar5;
  type_4 var_13;
  type_4 pBVar7;
  type_4 pBVar8;
  
  pBVar5 = var_1((type_5 *)p,length);
  point->y = pBVar5;
  var_4 = var_2(pBVar5);
  var_3 = point->curve->fieldBits;
  if (var_3 < var_4) {
    var_5((type_4)point->y);
    point->y = (type_6)0x0;
  }
  else {
    var_21 = var_6((type_4)point->y,var_3 - 1);
    var_7((type_4)point->y,point->curve->fieldBits - 1,0);
    var_8((type_4)point->y);
    curve = point->curve;
    pBVar5 = (type_4)var_9(point->y,curve);
    var_13 = var_10((type_4)(curve->field_5).w.b,pBVar5,(type_4)curve->p);
    pBVar7 = (type_4)var_11(var_13,One,curve);
    var_5(var_13);
    var_13 = var_12(pBVar7,(type_4)curve->p);
    var_5(pBVar7);
    if (var_13 == (type_4)0x0) {
      var_5(pBVar5);
      point->x = (type_6)0x0;
    }
    else {
      pBVar7 = var_14(pBVar5,One,(type_4)curve->p);
      var_5(pBVar5);
      pBVar8 = var_10(pBVar7,var_13,(type_4)curve->p);
      var_5(pBVar7);
      var_5(var_13);
      pBVar5 = var_15((type_4)curve->p,3);
      var_13 = var_16(pBVar5,3);
      var_5(pBVar5);
      pBVar5 = var_17(pBVar8,var_13,(type_4)curve->p);
      var_5(var_13);
      var_13 = (type_4)var_9(pBVar5,curve);
      pBVar7 = var_14(var_13,pBVar8,(type_4)curve->p);
      var_5(var_13);
      var_5(pBVar8);
      var_19 = var_18(pBVar7,Zero);
      if (var_19 == 0) {
        var_5(pBVar7);
      }
      else {
        var_5(pBVar7);
        var_13 = var_14((type_4)curve->p,One,(type_4)curve->p);
        pBVar7 = var_16(var_13,2);
        var_5(var_13);
        var_13 = var_20(2);
        pBVar8 = var_17(var_13,pBVar7,(type_4)curve->p);
        var_5(var_13);
        var_5(pBVar7);
        var_13 = var_10(pBVar5,pBVar8,(type_4)curve->p);
        var_5(pBVar5);
        var_5(pBVar8);
        pBVar5 = var_13;
      }
      var_19 = var_6(pBVar5,0);
      var_13 = pBVar5;
      if (var_19 != 0) {
        var_13 = var_14((type_4)curve->p,pBVar5,(type_4)curve->p);
        var_5(pBVar5);
      }
      point->x = var_13;
      if (var_13 != (type_4)0x0) {
        if (var_21 != 0) {
          pBVar5 = (type_4)point->curve->p;
          pBVar5 = var_14(pBVar5,var_13,pBVar5);
          var_5((type_4)point->x);
          point->x = pBVar5;
        }
        var_21 = var_22(point);
        if (var_21 != 0) {
          return 1;
        }
        var_5((type_4)point->x);
        point->x = (type_6)0x0;
        var_5((type_4)point->y);
        point->y = (type_6)0x0;
        return 0;
      }
    }
    var_5((type_4)point->y);
    point->y = (type_6)0x0;
  }
  return 0;
}


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

undefined4 MASKED(undefined8 param_1,undefined8 param_2,long *param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  long lVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  long lVar9;
  
  lVar4 = FUN_0014a1d6();
  param_3[2] = lVar4;
  uVar1 = FUN_0014a306(lVar4);
  if (*(uint *)(*param_3 + 0x18) < uVar1) {
    FUN_00149d43(param_3[2]);
    param_3[2] = 0;
  }
  else {
    iVar2 = FUN_0014a3e0(param_3[2],*(uint *)(*param_3 + 0x18) - 1);
    FUN_0014a41b(param_3[2],*(int *)(*param_3 + 0x18) + -1,0);
    FUN_00149cd4(param_3[2]);
    lVar4 = *param_3;
    uVar5 = FUN_00151710(param_3[2],lVar4);
    uVar6 = FUN_00149d61(*(undefined8 *)(lVar4 + 0x30),uVar5,*(undefined8 *)(lVar4 + 0x20));
    uVar7 = FUN_00151916(uVar6,PTR_DAT_001ef2e8,lVar4);
    FUN_00149d43(uVar6);
    lVar8 = FUN_0014b6e0(uVar7,*(undefined8 *)(lVar4 + 0x20));
    FUN_00149d43(uVar7);
    if (lVar8 == 0) {
      FUN_00149d43(uVar5);
      param_3[1] = 0;
    }
    else {
      uVar6 = FUN_0014b55f(uVar5,PTR_DAT_001ef2e8,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar5);
      uVar5 = FUN_00149d61(uVar6,lVar8,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar6);
      FUN_00149d43(lVar8);
      uVar6 = FUN_0014af1f(*(undefined8 *)(lVar4 + 0x20),3);
      uVar7 = FUN_0014a764(uVar6,3);
      FUN_00149d43(uVar6);
      lVar8 = FUN_0014b985(uVar5,uVar7,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar7);
      uVar6 = FUN_00151710(lVar8,lVar4);
      uVar7 = FUN_0014b55f(uVar6,uVar5,*(undefined8 *)(lVar4 + 0x20));
      FUN_00149d43(uVar6);
      FUN_00149d43(uVar5);
      iVar3 = FUN_0014a527(uVar7,PTR_DAT_001ef2f0);
      if (iVar3 == 0) {
        FUN_00149d43(uVar7);
      }
      else {
        FUN_00149d43(uVar7);
        uVar5 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),PTR_DAT_001ef2e8,
                             *(undefined8 *)(lVar4 + 0x20));
        uVar6 = FUN_0014a764(uVar5,2);
        FUN_00149d43(uVar5);
        uVar5 = FUN_0014ae53(2);
        uVar7 = FUN_0014b985(uVar5,uVar6,*(undefined8 *)(lVar4 + 0x20));
        FUN_00149d43(uVar5);
        FUN_00149d43(uVar6);
        lVar9 = FUN_00149d61(lVar8,uVar7,*(undefined8 *)(lVar4 + 0x20));
        FUN_00149d43(lVar8);
        FUN_00149d43(uVar7);
        lVar8 = lVar9;
      }
      iVar3 = FUN_0014a3e0(lVar8,0);
      lVar9 = lVar8;
      if (iVar3 != 0) {
        lVar9 = FUN_0014b55f(*(undefined8 *)(lVar4 + 0x20),lVar8,*(undefined8 *)(lVar4 + 0x20));
        FUN_00149d43(lVar8);
      }
      param_3[1] = lVar9;
      if (lVar9 != 0) {
        if (iVar2 != 0) {
          lVar4 = FUN_0014b55f(*(undefined8 *)(*param_3 + 0x20),lVar9,
                               *(undefined8 *)(*param_3 + 0x20));
          FUN_00149d43(param_3[1]);
          param_3[1] = lVar4;
        }
        iVar2 = FUN_001532da(param_3);
        if (iVar2 != 0) {
          return 1;
        }
        FUN_00149d43(param_3[1]);
        param_3[1] = 0;
        FUN_00149d43(param_3[2]);
        param_3[2] = 0;
        return 0;
      }
    }
    FUN_00149d43(param_3[2]);
    param_3[2] = 0;
  }
  return 0;
}

