
int rsa_verify(RSAKey *key)

{
  Bignum pvVar1;
  uint uVar2;
  int iVar3;
  Bignum_conflict pBVar4;
  Bignum_conflict pBVar5;
  
  uVar2 = bignum_cmp((Bignum_conflict)key->modulus,Zero);
  if (uVar2 != 0) {
    pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q);
    iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus);
    freebn(pBVar4);
    if (iVar3 == 0) {
      pBVar4 = copybn((Bignum_conflict)key->p);
      decbn(pBVar4);
      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);
      freebn(pBVar4);
      iVar3 = bignum_cmp(pBVar5,One);
      freebn(pBVar5);
      uVar2 = 0;
      if (iVar3 == 0) {
        pBVar4 = copybn((Bignum_conflict)key->q);
        decbn(pBVar4);
        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4
                       );
        freebn(pBVar4);
        iVar3 = bignum_cmp(pBVar5,One);
        freebn(pBVar5);
        if (iVar3 == 0) {
          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);
          if (iVar3 < 1) {
            pvVar1 = key->p;
            key->p = key->q;
            key->q = pvVar1;
            freebn((Bignum_conflict)key->iqmp);
            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);
            key->iqmp = pBVar4;
            if (pBVar4 == (Bignum_conflict)0x0) {
              return 0;
            }
          }
          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p
                         );
          iVar3 = bignum_cmp(pBVar4,One);
          freebn(pBVar4);
          uVar2 = (uint)(iVar3 == 0);
        }
        else {
          uVar2 = 0;
        }
      }
    }
    else {
      uVar2 = 0;
    }
  }
  return uVar2;
}



uint FUN_0014a305(long param_1)

{
  uint uVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  long lVar5;
  
  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);
  if (uVar1 != 0) {
    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));
    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));
    FUN_001372e1(uVar3);
    if (iVar2 == 0) {
      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));
      FUN_0013763f(uVar3);
      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);
      FUN_001372e1(uVar3);
      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);
      FUN_001372e1(uVar4);
      uVar1 = 0;
      if (iVar2 == 0) {
        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));
        FUN_0013763f(uVar3);
        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);
        FUN_001372e1(uVar3);
        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);
        FUN_001372e1(uVar4);
        if (iVar2 == 0) {
          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));
          if (iVar2 < 1) {
            uVar3 = *(undefined8 *)(param_1 + 0x20);
            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);
            *(undefined8 *)(param_1 + 0x28) = uVar3;
            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));
            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));
            *(long *)(param_1 + 0x30) = lVar5;
            if (lVar5 == 0) {
              return 0;
            }
          }
          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),
                               *(undefined8 *)(param_1 + 0x20));
          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);
          FUN_001372e1(uVar3);
          uVar1 = (uint)(iVar2 == 0);
        }
        else {
          uVar1 = 0;
        }
      }
    }
    else {
      uVar1 = 0;
    }
  }
  return uVar1;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,RDI
MOV RDI,qword ptr [RDI + 0x8]
MOV RSI,qword ptr [0x001855f0]
CALL 0x00137ac5
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x0014a335
MOV EAX,EBP
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
MOV RSI,qword ptr [RBX + 0x28]
MOV RDI,qword ptr [RBX + 0x20]
CALL 0x00138155
MOV R12,RAX
MOV RSI,qword ptr [RBX + 0x8]
MOV RDI,RAX
CALL 0x00137ac5
MOV EBP,EAX
MOV RDI,R12
CALL 0x001372e1
TEST EBP,EBP
JZ 0x0014a366
MOV EBP,0x0
JMP 0x0014a328
MOV RDI,qword ptr [RBX + 0x20]
CALL 0x0013729c
MOV R12,RAX
MOV RDI,RAX
CALL 0x0013763f
MOV RSI,qword ptr [RBX + 0x18]
MOV RDI,qword ptr [RBX + 0x10]
MOV RDX,R12
CALL 0x001372ff
MOV R13,RAX
MOV RDI,R12
CALL 0x001372e1
MOV RSI,qword ptr [0x001855e8]
MOV RDI,R13
CALL 0x00137ac5
MOV R12D,EAX
MOV RDI,R13
CALL 0x001372e1
TEST R12D,R12D
JNZ 0x0014a328
MOV RDI,qword ptr [RBX + 0x28]
CALL 0x0013729c
MOV RBP,RAX
MOV RDI,RAX
CALL 0x0013763f
MOV RSI,qword ptr [RBX + 0x18]
MOV RDI,qword ptr [RBX + 0x10]
MOV RDX,RBP
CALL 0x001372ff
MOV R13,RAX
MOV RDI,RBP
CALL 0x001372e1
MOV RSI,qword ptr [0x001855e8]
MOV RDI,R13
CALL 0x00137ac5
MOV EBP,EAX
MOV RDI,R13
CALL 0x001372e1
TEST EBP,EBP
JZ 0x0014a40c
MOV EBP,R12D
JMP 0x0014a328
MOV RSI,qword ptr [RBX + 0x28]
MOV RDI,qword ptr [RBX + 0x20]
CALL 0x00137ac5
TEST EAX,EAX
JLE 0x0014a459
MOV RDX,qword ptr [RBX + 0x20]
MOV RSI,qword ptr [RBX + 0x28]
MOV RDI,qword ptr [RBX + 0x30]
CALL 0x001372ff
MOV RBX,RAX
MOV RSI,qword ptr [0x001855e8]
MOV RDI,RAX
CALL 0x00137ac5
MOV EBP,EAX
MOV RDI,RBX
CALL 0x001372e1
TEST EBP,EBP
SETZ BPL
MOVZX EBP,BPL
JMP 0x0014a328
MOV RAX,qword ptr [RBX + 0x20]
MOV RDX,qword ptr [RBX + 0x28]
MOV qword ptr [RBX + 0x20],RDX
MOV qword ptr [RBX + 0x28],RAX
MOV RDI,qword ptr [RBX + 0x30]
CALL 0x001372e1
MOV RSI,qword ptr [RBX + 0x20]
MOV RDI,qword ptr [RBX + 0x28]
CALL 0x00138c7e
MOV qword ptr [RBX + 0x30],RAX
TEST RAX,RAX
JNZ 0x0014a41d
JMP 0x0014a328
(translation_unit "uint FUN_0014a305(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}\n\n" (function_definition "uint FUN_0014a305(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}" type_identifier (function_declarator "FUN_0014a305(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (expression_statement "uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);" (assignment_expression "uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" identifier = (call_expression "FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }" { (expression_statement "uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));" (assignment_expression "uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier = (call_expression "FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));" (assignment_expression "iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8))" identifier = (call_expression "FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8))" identifier (argument_list "(uVar3,*(undefined8 *)(param_1 + 8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }" { (expression_statement "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));" (assignment_expression "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20))" identifier = (call_expression "FUN_0013729c(*(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_0013763f(uVar3);" (call_expression "FUN_0013763f(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);" (assignment_expression "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier = (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier = (call_expression "FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier (argument_list "(uVar4,PTR_DAT_001855e8)" ( identifier , identifier )))) ;) (expression_statement "FUN_001372e1(uVar4);" (call_expression "FUN_001372e1(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (if_statement "if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }" { (expression_statement "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));" (assignment_expression "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28))" identifier = (call_expression "FUN_0013729c(*(undefined8 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_0013763f(uVar3);" (call_expression "FUN_0013763f(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);" (assignment_expression "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier = (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier = (call_expression "FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier (argument_list "(uVar4,PTR_DAT_001855e8)" ( identifier , identifier )))) ;) (expression_statement "FUN_001372e1(uVar4);" (call_expression "FUN_001372e1(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (if_statement "if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }" { (expression_statement "iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));" (assignment_expression "iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier = (call_expression "FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }" { (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x20);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "*(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28)" (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x28) = uVar3;" (assignment_expression "*(undefined8 *)(param_1 + 0x28) = uVar3" (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_001372e1(*(undefined8 *)(param_1 + 0x30));" (call_expression "FUN_001372e1(*(undefined8 *)(param_1 + 0x30))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x30))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) (expression_statement "lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));" (assignment_expression "lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" identifier = (call_expression "FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "*(long *)(param_1 + 0x30) = lVar5;" (assignment_expression "*(long *)(param_1 + 0x30) = lVar5" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar5 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));" (assignment_expression "uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" identifier = (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8)" identifier = (call_expression "FUN_00137ac5(uVar3,PTR_DAT_001855e8)" identifier (argument_list "(uVar3,PTR_DAT_001855e8)" ( identifier , identifier )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar1 = (uint)(iVar2 == 0);" (assignment_expression "uVar1 = (uint)(iVar2 == 0)" identifier = (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n          uVar1 = 0;\n        }" else (compound_statement "{\n          uVar1 = 0;\n        }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) }))) })) }) (else_clause "else {\n      uVar1 = 0;\n    }" else (compound_statement "{\n      uVar1 = 0;\n    }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) }))) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "int rsa_verify(RSAKey *key)\n\n{\n  Bignum pvVar1;\n  uint uVar2;\n  int iVar3;\n  Bignum_conflict pBVar4;\n  Bignum_conflict pBVar5;\n  \n  uVar2 = bignum_cmp((Bignum_conflict)key->modulus,Zero);\n  if (uVar2 != 0) {\n    pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n    iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus);\n    freebn(pBVar4);\n    if (iVar3 == 0) {\n      pBVar4 = copybn((Bignum_conflict)key->p);\n      decbn(pBVar4);\n      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);\n      freebn(pBVar4);\n      iVar3 = bignum_cmp(pBVar5,One);\n      freebn(pBVar5);\n      uVar2 = 0;\n      if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }\n    }\n    else {\n      uVar2 = 0;\n    }\n  }\n  return uVar2;\n}\n\n" (function_definition "int rsa_verify(RSAKey *key)\n\n{\n  Bignum pvVar1;\n  uint uVar2;\n  int iVar3;\n  Bignum_conflict pBVar4;\n  Bignum_conflict pBVar5;\n  \n  uVar2 = bignum_cmp((Bignum_conflict)key->modulus,Zero);\n  if (uVar2 != 0) {\n    pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n    iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus);\n    freebn(pBVar4);\n    if (iVar3 == 0) {\n      pBVar4 = copybn((Bignum_conflict)key->p);\n      decbn(pBVar4);\n      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);\n      freebn(pBVar4);\n      iVar3 = bignum_cmp(pBVar5,One);\n      freebn(pBVar5);\n      uVar2 = 0;\n      if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }\n    }\n    else {\n      uVar2 = 0;\n    }\n  }\n  return uVar2;\n}" primitive_type (function_declarator "rsa_verify(RSAKey *key)" identifier (parameter_list "(RSAKey *key)" ( (parameter_declaration "RSAKey *key" type_identifier (pointer_declarator "*key" * identifier)) ))) (compound_statement "{\n  Bignum pvVar1;\n  uint uVar2;\n  int iVar3;\n  Bignum_conflict pBVar4;\n  Bignum_conflict pBVar5;\n  \n  uVar2 = bignum_cmp((Bignum_conflict)key->modulus,Zero);\n  if (uVar2 != 0) {\n    pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n    iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus);\n    freebn(pBVar4);\n    if (iVar3 == 0) {\n      pBVar4 = copybn((Bignum_conflict)key->p);\n      decbn(pBVar4);\n      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);\n      freebn(pBVar4);\n      iVar3 = bignum_cmp(pBVar5,One);\n      freebn(pBVar5);\n      uVar2 = 0;\n      if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }\n    }\n    else {\n      uVar2 = 0;\n    }\n  }\n  return uVar2;\n}" { (declaration "Bignum pvVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Bignum_conflict pBVar4;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar5;" type_identifier identifier ;) (expression_statement "uVar2 = bignum_cmp((Bignum_conflict)key->modulus,Zero);" (assignment_expression "uVar2 = bignum_cmp((Bignum_conflict)key->modulus,Zero)" identifier = (call_expression "bignum_cmp((Bignum_conflict)key->modulus,Zero)" identifier (argument_list "((Bignum_conflict)key->modulus,Zero)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) , identifier )))) ;) (if_statement "if (uVar2 != 0) {\n    pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n    iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus);\n    freebn(pBVar4);\n    if (iVar3 == 0) {\n      pBVar4 = copybn((Bignum_conflict)key->p);\n      decbn(pBVar4);\n      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);\n      freebn(pBVar4);\n      iVar3 = bignum_cmp(pBVar5,One);\n      freebn(pBVar5);\n      uVar2 = 0;\n      if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }\n    }\n    else {\n      uVar2 = 0;\n    }\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n    iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus);\n    freebn(pBVar4);\n    if (iVar3 == 0) {\n      pBVar4 = copybn((Bignum_conflict)key->p);\n      decbn(pBVar4);\n      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);\n      freebn(pBVar4);\n      iVar3 = bignum_cmp(pBVar5,One);\n      freebn(pBVar5);\n      uVar2 = 0;\n      if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }\n    }\n    else {\n      uVar2 = 0;\n    }\n  }" { (expression_statement "pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q);" (assignment_expression "pBVar4 = bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q)" identifier = (call_expression "bigmul((Bignum_conflict)key->p,(Bignum_conflict)key->q)" identifier (argument_list "((Bignum_conflict)key->p,(Bignum_conflict)key->q)" ( (cast_expression "(Bignum_conflict)key->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->p" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)key->q" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->q" identifier -> field_identifier)) )))) ;) (expression_statement "iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus);" (assignment_expression "iVar3 = bignum_cmp(pBVar4,(Bignum_conflict)key->modulus)" identifier = (call_expression "bignum_cmp(pBVar4,(Bignum_conflict)key->modulus)" identifier (argument_list "(pBVar4,(Bignum_conflict)key->modulus)" ( identifier , (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (expression_statement "freebn(pBVar4);" (call_expression "freebn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (if_statement "if (iVar3 == 0) {\n      pBVar4 = copybn((Bignum_conflict)key->p);\n      decbn(pBVar4);\n      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);\n      freebn(pBVar4);\n      iVar3 = bignum_cmp(pBVar5,One);\n      freebn(pBVar5);\n      uVar2 = 0;\n      if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }\n    }\n    else {\n      uVar2 = 0;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      pBVar4 = copybn((Bignum_conflict)key->p);\n      decbn(pBVar4);\n      pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);\n      freebn(pBVar4);\n      iVar3 = bignum_cmp(pBVar5,One);\n      freebn(pBVar5);\n      uVar2 = 0;\n      if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }\n    }" { (expression_statement "pBVar4 = copybn((Bignum_conflict)key->p);" (assignment_expression "pBVar4 = copybn((Bignum_conflict)key->p)" identifier = (call_expression "copybn((Bignum_conflict)key->p)" identifier (argument_list "((Bignum_conflict)key->p)" ( (cast_expression "(Bignum_conflict)key->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->p" identifier -> field_identifier)) )))) ;) (expression_statement "decbn(pBVar4);" (call_expression "decbn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (expression_statement "pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4);" (assignment_expression "pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4)" identifier = (call_expression "modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4)" identifier (argument_list "((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4)" ( (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)key->private_exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->private_exponent" identifier -> field_identifier)) , identifier )))) ;) (expression_statement "freebn(pBVar4);" (call_expression "freebn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (expression_statement "iVar3 = bignum_cmp(pBVar5,One);" (assignment_expression "iVar3 = bignum_cmp(pBVar5,One)" identifier = (call_expression "bignum_cmp(pBVar5,One)" identifier (argument_list "(pBVar5,One)" ( identifier , identifier )))) ;) (expression_statement "freebn(pBVar5);" (call_expression "freebn(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier ))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (iVar3 == 0) {\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        pBVar4 = copybn((Bignum_conflict)key->q);\n        decbn(pBVar4);\n        pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );\n        freebn(pBVar4);\n        iVar3 = bignum_cmp(pBVar5,One);\n        freebn(pBVar5);\n        if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }\n      }" { (expression_statement "pBVar4 = copybn((Bignum_conflict)key->q);" (assignment_expression "pBVar4 = copybn((Bignum_conflict)key->q)" identifier = (call_expression "copybn((Bignum_conflict)key->q)" identifier (argument_list "((Bignum_conflict)key->q)" ( (cast_expression "(Bignum_conflict)key->q" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->q" identifier -> field_identifier)) )))) ;) (expression_statement "decbn(pBVar4);" (call_expression "decbn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (expression_statement "pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       );" (assignment_expression "pBVar5 = modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       )" identifier = (call_expression "modmul((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       )" identifier (argument_list "((Bignum_conflict)key->exponent,(Bignum_conflict)key->private_exponent,pBVar4\n                       )" ( (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)key->private_exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->private_exponent" identifier -> field_identifier)) , identifier )))) ;) (expression_statement "freebn(pBVar4);" (call_expression "freebn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (expression_statement "iVar3 = bignum_cmp(pBVar5,One);" (assignment_expression "iVar3 = bignum_cmp(pBVar5,One)" identifier = (call_expression "bignum_cmp(pBVar5,One)" identifier (argument_list "(pBVar5,One)" ( identifier , identifier )))) ;) (expression_statement "freebn(pBVar5);" (call_expression "freebn(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier ))) ;) (if_statement "if (iVar3 == 0) {\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }\n        else {\n          uVar2 = 0;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);\n          if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }\n          pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );\n          iVar3 = bignum_cmp(pBVar4,One);\n          freebn(pBVar4);\n          uVar2 = (uint)(iVar3 == 0);\n        }" { (expression_statement "iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q);" (assignment_expression "iVar3 = bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q)" identifier = (call_expression "bignum_cmp((Bignum_conflict)key->p,(Bignum_conflict)key->q)" identifier (argument_list "((Bignum_conflict)key->p,(Bignum_conflict)key->q)" ( (cast_expression "(Bignum_conflict)key->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->p" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)key->q" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->q" identifier -> field_identifier)) )))) ;) (if_statement "if (iVar3 < 1) {\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(iVar3 < 1)" ( (binary_expression "iVar3 < 1" identifier < number_literal) )) (compound_statement "{\n            pvVar1 = key->p;\n            key->p = key->q;\n            key->q = pvVar1;\n            freebn((Bignum_conflict)key->iqmp);\n            pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);\n            key->iqmp = pBVar4;\n            if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }\n          }" { (expression_statement "pvVar1 = key->p;" (assignment_expression "pvVar1 = key->p" identifier = (field_expression "key->p" identifier -> field_identifier)) ;) (expression_statement "key->p = key->q;" (assignment_expression "key->p = key->q" (field_expression "key->p" identifier -> field_identifier) = (field_expression "key->q" identifier -> field_identifier)) ;) (expression_statement "key->q = pvVar1;" (assignment_expression "key->q = pvVar1" (field_expression "key->q" identifier -> field_identifier) = identifier) ;) (expression_statement "freebn((Bignum_conflict)key->iqmp);" (call_expression "freebn((Bignum_conflict)key->iqmp)" identifier (argument_list "((Bignum_conflict)key->iqmp)" ( (cast_expression "(Bignum_conflict)key->iqmp" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->iqmp" identifier -> field_identifier)) ))) ;) (expression_statement "pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p);" (assignment_expression "pBVar4 = modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p)" identifier = (call_expression "modinv((Bignum_conflict)key->q,(Bignum_conflict)key->p)" identifier (argument_list "((Bignum_conflict)key->q,(Bignum_conflict)key->p)" ( (cast_expression "(Bignum_conflict)key->q" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->q" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)key->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->p" identifier -> field_identifier)) )))) ;) (expression_statement "key->iqmp = pBVar4;" (assignment_expression "key->iqmp = pBVar4" (field_expression "key->iqmp" identifier -> field_identifier) = identifier) ;) (if_statement "if (pBVar4 == (Bignum_conflict)0x0) {\n              return 0;\n            }" if (parenthesized_expression "(pBVar4 == (Bignum_conflict)0x0)" ( (binary_expression "pBVar4 == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         );" (assignment_expression "pBVar4 = modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         )" identifier = (call_expression "modmul((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         )" identifier (argument_list "((Bignum_conflict)key->iqmp,(Bignum_conflict)key->q,(Bignum_conflict)key->p\n                         )" ( (cast_expression "(Bignum_conflict)key->iqmp" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->iqmp" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)key->q" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->q" identifier -> field_identifier)) , (cast_expression "(Bignum_conflict)key->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->p" identifier -> field_identifier)) )))) ;) (expression_statement "iVar3 = bignum_cmp(pBVar4,One);" (assignment_expression "iVar3 = bignum_cmp(pBVar4,One)" identifier = (call_expression "bignum_cmp(pBVar4,One)" identifier (argument_list "(pBVar4,One)" ( identifier , identifier )))) ;) (expression_statement "freebn(pBVar4);" (call_expression "freebn(pBVar4)" identifier (argument_list "(pBVar4)" ( identifier ))) ;) (expression_statement "uVar2 = (uint)(iVar3 == 0);" (assignment_expression "uVar2 = (uint)(iVar3 == 0)" identifier = (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n          uVar2 = 0;\n        }" else (compound_statement "{\n          uVar2 = 0;\n        }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) }))) })) }) (else_clause "else {\n      uVar2 = 0;\n    }" else (compound_statement "{\n      uVar2 = 0;\n    }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) }))) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "uint FUN_0014a305(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}\n\n" (function_definition "uint FUN_0014a305(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}" type_identifier (function_declarator "FUN_0014a305(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (expression_statement "uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);" (assignment_expression "uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" identifier = (call_expression "FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }" { (expression_statement "uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));" (assignment_expression "uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier = (call_expression "FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));" (assignment_expression "iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8))" identifier = (call_expression "FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8))" identifier (argument_list "(uVar3,*(undefined8 *)(param_1 + 8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (if_statement "if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }" { (expression_statement "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));" (assignment_expression "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20))" identifier = (call_expression "FUN_0013729c(*(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_0013763f(uVar3);" (call_expression "FUN_0013763f(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);" (assignment_expression "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier = (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier = (call_expression "FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier (argument_list "(uVar4,PTR_DAT_001855e8)" ( identifier , identifier )))) ;) (expression_statement "FUN_001372e1(uVar4);" (call_expression "FUN_001372e1(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (if_statement "if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }" { (expression_statement "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));" (assignment_expression "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28))" identifier = (call_expression "FUN_0013729c(*(undefined8 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_0013763f(uVar3);" (call_expression "FUN_0013763f(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);" (assignment_expression "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier = (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier = (call_expression "FUN_00137ac5(uVar4,PTR_DAT_001855e8)" identifier (argument_list "(uVar4,PTR_DAT_001855e8)" ( identifier , identifier )))) ;) (expression_statement "FUN_001372e1(uVar4);" (call_expression "FUN_001372e1(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (if_statement "if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }" { (expression_statement "iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));" (assignment_expression "iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier = (call_expression "FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }" { (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x20);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "*(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28)" (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x28) = uVar3;" (assignment_expression "*(undefined8 *)(param_1 + 0x28) = uVar3" (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_001372e1(*(undefined8 *)(param_1 + 0x30));" (call_expression "FUN_001372e1(*(undefined8 *)(param_1 + 0x30))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x30))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) (expression_statement "lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));" (assignment_expression "lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" identifier = (call_expression "FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "*(long *)(param_1 + 0x30) = lVar5;" (assignment_expression "*(long *)(param_1 + 0x30) = lVar5" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar5 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));" (assignment_expression "uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" identifier = (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )))) ;) (expression_statement "iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8)" identifier = (call_expression "FUN_00137ac5(uVar3,PTR_DAT_001855e8)" identifier (argument_list "(uVar3,PTR_DAT_001855e8)" ( identifier , identifier )))) ;) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar1 = (uint)(iVar2 == 0);" (assignment_expression "uVar1 = (uint)(iVar2 == 0)" identifier = (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n          uVar1 = 0;\n        }" else (compound_statement "{\n          uVar1 = 0;\n        }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) }))) })) }) (else_clause "else {\n      uVar1 = 0;\n    }" else (compound_statement "{\n      uVar1 = 0;\n    }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) }))) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) 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 )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (return_statement return IDENT ;) })))
(function_definition "uint FUN_0014a305(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}" (type_identifier "uint") (function_declarator "FUN_0014a305(long param_1)" (identifier "FUN_0014a305") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  \n  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);\n  if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }\n  return uVar1;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (expression_statement "uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);" (assignment_expression "uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" (identifier "uVar1") (= "=") (call_expression "FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" (identifier "FUN_00137ac5") (argument_list "(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "PTR_DAT_001855f0") () ")")))) (; ";")) (if_statement "if (uVar1 != 0) {\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));\n    FUN_001372e1(uVar3);\n    if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }\n  }" ({ "{") (expression_statement "uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));" (assignment_expression "uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" (identifier "uVar3") (= "=") (call_expression "FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" (identifier "FUN_00138155") (argument_list "(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));" (assignment_expression "iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8))" (identifier "iVar2") (= "=") (call_expression "FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8))" (identifier "FUN_00137ac5") (argument_list "(uVar3,*(undefined8 *)(param_1 + 8))" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" (identifier "FUN_001372e1") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (iVar2 == 0) {\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }\n    else {\n      uVar1 = 0;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));\n      FUN_0013763f(uVar3);\n      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n      FUN_001372e1(uVar3);\n      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n      FUN_001372e1(uVar4);\n      uVar1 = 0;\n      if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }\n    }" ({ "{") (expression_statement "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));" (assignment_expression "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20))" (identifier "uVar3") (= "=") (call_expression "FUN_0013729c(*(undefined8 *)(param_1 + 0x20))" (identifier "FUN_0013729c") (argument_list "(*(undefined8 *)(param_1 + 0x20))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_0013763f(uVar3);" (call_expression "FUN_0013763f(uVar3)" (identifier "FUN_0013763f") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);" (assignment_expression "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" (identifier "uVar4") (= "=") (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" (identifier "FUN_001372ff") (argument_list "(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" (identifier "FUN_001372e1") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8)" (identifier "iVar2") (= "=") (call_expression "FUN_00137ac5(uVar4,PTR_DAT_001855e8)" (identifier "FUN_00137ac5") (argument_list "(uVar4,PTR_DAT_001855e8)" (( "(") (identifier "uVar4") (, ",") (identifier "PTR_DAT_001855e8") () ")")))) (; ";")) (expression_statement "FUN_001372e1(uVar4);" (call_expression "FUN_001372e1(uVar4)" (identifier "FUN_001372e1") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar2 == 0) {\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));\n        FUN_0013763f(uVar3);\n        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);\n        FUN_001372e1(uVar3);\n        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);\n        FUN_001372e1(uVar4);\n        if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }\n      }" ({ "{") (expression_statement "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));" (assignment_expression "uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28))" (identifier "uVar3") (= "=") (call_expression "FUN_0013729c(*(undefined8 *)(param_1 + 0x28))" (identifier "FUN_0013729c") (argument_list "(*(undefined8 *)(param_1 + 0x28))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_0013763f(uVar3);" (call_expression "FUN_0013763f(uVar3)" (identifier "FUN_0013763f") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);" (assignment_expression "uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" (identifier "uVar4") (= "=") (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" (identifier "FUN_001372ff") (argument_list "(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" (identifier "FUN_001372e1") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8)" (identifier "iVar2") (= "=") (call_expression "FUN_00137ac5(uVar4,PTR_DAT_001855e8)" (identifier "FUN_00137ac5") (argument_list "(uVar4,PTR_DAT_001855e8)" (( "(") (identifier "uVar4") (, ",") (identifier "PTR_DAT_001855e8") () ")")))) (; ";")) (expression_statement "FUN_001372e1(uVar4);" (call_expression "FUN_001372e1(uVar4)" (identifier "FUN_001372e1") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if (iVar2 == 0) {\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }\n        else {\n          uVar1 = 0;\n        }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));\n          if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }\n          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));\n          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);\n          FUN_001372e1(uVar3);\n          uVar1 = (uint)(iVar2 == 0);\n        }" ({ "{") (expression_statement "iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));" (assignment_expression "iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" (identifier "iVar2") (= "=") (call_expression "FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" (identifier "FUN_00137ac5") (argument_list "(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar2 < 1) {\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }" (if "if") (parenthesized_expression "(iVar2 < 1)" (( "(") (binary_expression "iVar2 < 1" (identifier "iVar2") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            uVar3 = *(undefined8 *)(param_1 + 0x20);\n            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);\n            *(undefined8 *)(param_1 + 0x28) = uVar3;\n            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));\n            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));\n            *(long *)(param_1 + 0x30) = lVar5;\n            if (lVar5 == 0) {\n              return 0;\n            }\n          }" ({ "{") (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x20);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x20)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "*(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28)" (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x28) = uVar3;" (assignment_expression "*(undefined8 *)(param_1 + 0x28) = uVar3" (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "FUN_001372e1(*(undefined8 *)(param_1 + 0x30));" (call_expression "FUN_001372e1(*(undefined8 *)(param_1 + 0x30))" (identifier "FUN_001372e1") (argument_list "(*(undefined8 *)(param_1 + 0x30))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) () ")"))) (; ";")) (expression_statement "lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));" (assignment_expression "lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" (identifier "lVar5") (= "=") (call_expression "FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" (identifier "FUN_00138c7e") (argument_list "(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "*(long *)(param_1 + 0x30) = lVar5;" (assignment_expression "*(long *)(param_1 + 0x30) = lVar5" (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (if_statement "if (lVar5 == 0) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20));" (assignment_expression "uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" (identifier "uVar3") (= "=") (call_expression "FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" (identifier "FUN_001372ff") (argument_list "(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),\n                               *(undefined8 *)(param_1 + 0x20))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);" (assignment_expression "iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8)" (identifier "iVar2") (= "=") (call_expression "FUN_00137ac5(uVar3,PTR_DAT_001855e8)" (identifier "FUN_00137ac5") (argument_list "(uVar3,PTR_DAT_001855e8)" (( "(") (identifier "uVar3") (, ",") (identifier "PTR_DAT_001855e8") () ")")))) (; ";")) (expression_statement "FUN_001372e1(uVar3);" (call_expression "FUN_001372e1(uVar3)" (identifier "FUN_001372e1") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar1 = (uint)(iVar2 == 0);" (assignment_expression "uVar1 = (uint)(iVar2 == 0)" (identifier "uVar1") (= "=") (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          uVar1 = 0;\n        }" (else "else") (compound_statement "{\n          uVar1 = 0;\n        }" ({ "{") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n      uVar1 = 0;\n    }" (else "else") (compound_statement "{\n      uVar1 = 0;\n    }" ({ "{") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

int function_1(type_1 *key)

{
  type_2 pvVar1;
  type_3 var_2;
  int var_5;
  type_4 var_10;
  type_4 pBVar5;
  
  var_2 = var_1((type_4)key->modulus,Zero);
  if (var_2 != 0) {
    var_10 = var_3((type_4)key->p,(type_4)key->q);
    var_5 = var_1(var_10,(type_4)key->modulus);
    var_4(var_10);
    if (var_5 == 0) {
      var_10 = var_6((type_4)key->p);
      var_7(var_10);
      pBVar5 = var_8((type_4)key->exponent,(type_4)key->private_exponent,var_10);
      var_4(var_10);
      var_5 = var_1(pBVar5,One);
      var_4(pBVar5);
      var_2 = 0;
      if (var_5 == 0) {
        var_10 = var_6((type_4)key->q);
        var_7(var_10);
        pBVar5 = var_8((type_4)key->exponent,(type_4)key->private_exponent,var_10
                       );
        var_4(var_10);
        var_5 = var_1(pBVar5,One);
        var_4(pBVar5);
        if (var_5 == 0) {
          var_5 = var_1((type_4)key->p,(type_4)key->q);
          if (var_5 < 1) {
            pvVar1 = key->p;
            key->p = key->q;
            key->q = pvVar1;
            var_4((type_4)key->iqmp);
            var_10 = var_9((type_4)key->q,(type_4)key->p);
            key->iqmp = var_10;
            if (var_10 == (type_4)0x0) {
              return 0;
            }
          }
          var_10 = var_8((type_4)key->iqmp,(type_4)key->q,(type_4)key->p
                         );
          var_5 = var_1(var_10,One);
          var_4(var_10);
          var_2 = (type_3)(var_5 == 0);
        }
        else {
          var_2 = 0;
        }
      }
    }
    else {
      var_2 = 0;
    }
  }
  return var_2;
}


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

uint MASKED(long param_1)

{
  uint uVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  long lVar5;
  
  uVar1 = FUN_00137ac5(*(undefined8 *)(param_1 + 8),PTR_DAT_001855f0);
  if (uVar1 != 0) {
    uVar3 = FUN_00138155(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));
    iVar2 = FUN_00137ac5(uVar3,*(undefined8 *)(param_1 + 8));
    FUN_001372e1(uVar3);
    if (iVar2 == 0) {
      uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x20));
      FUN_0013763f(uVar3);
      uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);
      FUN_001372e1(uVar3);
      iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);
      FUN_001372e1(uVar4);
      uVar1 = 0;
      if (iVar2 == 0) {
        uVar3 = FUN_0013729c(*(undefined8 *)(param_1 + 0x28));
        FUN_0013763f(uVar3);
        uVar4 = FUN_001372ff(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),uVar3);
        FUN_001372e1(uVar3);
        iVar2 = FUN_00137ac5(uVar4,PTR_DAT_001855e8);
        FUN_001372e1(uVar4);
        if (iVar2 == 0) {
          iVar2 = FUN_00137ac5(*(undefined8 *)(param_1 + 0x20),*(undefined8 *)(param_1 + 0x28));
          if (iVar2 < 1) {
            uVar3 = *(undefined8 *)(param_1 + 0x20);
            *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x28);
            *(undefined8 *)(param_1 + 0x28) = uVar3;
            FUN_001372e1(*(undefined8 *)(param_1 + 0x30));
            lVar5 = FUN_00138c7e(*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x20));
            *(long *)(param_1 + 0x30) = lVar5;
            if (lVar5 == 0) {
              return 0;
            }
          }
          uVar3 = FUN_001372ff(*(undefined8 *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x28),
                               *(undefined8 *)(param_1 + 0x20));
          iVar2 = FUN_00137ac5(uVar3,PTR_DAT_001855e8);
          FUN_001372e1(uVar3);
          uVar1 = (uint)(iVar2 == 0);
        }
        else {
          uVar1 = 0;
        }
      }
    }
    else {
      uVar1 = 0;
    }
  }
  return uVar1;
}

