
Bignum_conflict modsub(Bignum_conflict a,Bignum_conflict b,Bignum_conflict n)

{
  int iVar1;
  Bignum_conflict pBVar2;
  Bignum_conflict a_00;
  Bignum_conflict b_00;
  Bignum_conflict a_01;
  
  iVar1 = bignum_cmp(a,n);
  a_00 = a;
  if (-1 < iVar1) {
    a_00 = bigmod(a,n);
  }
  iVar1 = bignum_cmp(b,n);
  b_00 = b;
  if (-1 < iVar1) {
    b_00 = bigmod(b,n);
  }
  iVar1 = bignum_cmp(a_00,b_00);
  if (iVar1 < 0) {
    a_01 = bigsub(n,b_00);
    if (a_01 == (Bignum_conflict)0x0) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("tmp","sshbn.c",0x523,"modsub");
    }
    pBVar2 = bigadd(a_01,a_00);
    freebn(a_01);
  }
  else {
    pBVar2 = bigsub(a_00,b_00);
  }
  if (a_00 != a) {
    freebn(a_00);
  }
  if (b_00 != b) {
    freebn(b_00);
  }
  return pBVar2;
}



undefined8 FUN_0013306c(long param_1,long param_2,undefined8 param_3)

{
  int iVar1;
  undefined8 uVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  
  iVar1 = FUN_00132034(param_1,param_3);
  lVar3 = param_1;
  if (-1 < iVar1) {
    lVar3 = FUN_00132ba8(param_1,param_3);
  }
  iVar1 = FUN_00132034(param_2,param_3);
  lVar4 = param_2;
  if (-1 < iVar1) {
    lVar4 = FUN_00132ba8(param_2,param_3);
  }
  iVar1 = FUN_00132034(lVar3,lVar4);
  if (iVar1 < 0) {
    lVar5 = FUN_001327c6(param_3,lVar4);
    if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("tmp","sshbn.c",0x523,"modsub");
    }
    uVar2 = FUN_001326d7(lVar5,lVar3);
    FUN_00131850(lVar5);
  }
  else {
    uVar2 = FUN_001327c6(lVar3,lVar4);
  }
  if (lVar3 != param_1) {
    FUN_00131850(lVar3);
  }
  if (lVar4 != param_2) {
    FUN_00131850(lVar4);
  }
  return uVar2;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV R13,RDI
MOV R12,RSI
MOV R14,RDX
MOV RSI,RDX
CALL 0x00132034
MOV RBP,R13
TEST EAX,EAX
JNS 0x001330ed
MOV RSI,R14
MOV RDI,R12
CALL 0x00132034
MOV RBX,R12
TEST EAX,EAX
JNS 0x001330fd
MOV RSI,RBX
MOV RDI,RBP
CALL 0x00132034
TEST EAX,EAX
JS 0x0013310d
MOV RSI,RBX
MOV RDI,RBP
CALL 0x001327c6
MOV R14,RAX
CMP RBP,R13
JZ 0x001330ce
MOV RDI,RBP
CALL 0x00131850
CMP RBX,R12
JZ 0x001330db
MOV RDI,RBX
CALL 0x00131850
MOV RAX,R14
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RSI,R14
MOV RDI,R13
CALL 0x00132ba8
MOV RBP,RAX
JMP 0x00133092
MOV RSI,R14
MOV RDI,R12
CALL 0x00132ba8
MOV RBX,RAX
JMP 0x001330a4
MOV RSI,RBX
MOV RDI,R14
CALL 0x001327c6
MOV R15,RAX
TEST RAX,RAX
JZ 0x00133138
MOV RSI,RBP
MOV RDI,RAX
CALL 0x001326d7
MOV R14,RAX
MOV RDI,R15
CALL 0x00131850
JMP 0x001330c1
LEA RCX,[0x167a48]
MOV EDX,0x523
LEA RSI,[0x167888]
LEA RDI,[0x16e5a9]
CALL 0x00108340
(translation_unit "undefined8 FUN_0013306c(long param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined8 FUN_0013306c(long param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0013306c(long param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar1 = FUN_00132034(param_1,param_3);" (assignment_expression "iVar1 = FUN_00132034(param_1,param_3)" identifier = (call_expression "FUN_00132034(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" identifier = identifier) ;) (if_statement "if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }" { (expression_statement "lVar3 = FUN_00132ba8(param_1,param_3);" (assignment_expression "lVar3 = FUN_00132ba8(param_1,param_3)" identifier = (call_expression "FUN_00132ba8(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) })) (expression_statement "iVar1 = FUN_00132034(param_2,param_3);" (assignment_expression "iVar1 = FUN_00132034(param_2,param_3)" identifier = (call_expression "FUN_00132034(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier )))) ;) (expression_statement "lVar4 = param_2;" (assignment_expression "lVar4 = param_2" identifier = identifier) ;) (if_statement "if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }" { (expression_statement "lVar4 = FUN_00132ba8(param_2,param_3);" (assignment_expression "lVar4 = FUN_00132ba8(param_2,param_3)" identifier = (call_expression "FUN_00132ba8(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier )))) ;) })) (expression_statement "iVar1 = FUN_00132034(lVar3,lVar4);" (assignment_expression "iVar1 = FUN_00132034(lVar3,lVar4)" identifier = (call_expression "FUN_00132034(lVar3,lVar4)" identifier (argument_list "(lVar3,lVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }" { (expression_statement "lVar5 = FUN_001327c6(param_3,lVar4);" (assignment_expression "lVar5 = FUN_001327c6(param_3,lVar4)" identifier = (call_expression "FUN_001327c6(param_3,lVar4)" identifier (argument_list "(param_3,lVar4)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" { comment (expression_statement "__assert_fail("tmp","sshbn.c",0x523,"modsub");" (call_expression "__assert_fail("tmp","sshbn.c",0x523,"modsub")" identifier (argument_list "("tmp","sshbn.c",0x523,"modsub")" ( (string_literal ""tmp"" " string_content ") , (string_literal ""sshbn.c"" " string_content ") , number_literal , (string_literal ""modsub"" " string_content ") ))) ;) })) (expression_statement "uVar2 = FUN_001326d7(lVar5,lVar3);" (assignment_expression "uVar2 = FUN_001326d7(lVar5,lVar3)" identifier = (call_expression "FUN_001326d7(lVar5,lVar3)" identifier (argument_list "(lVar5,lVar3)" ( identifier , identifier )))) ;) (expression_statement "FUN_00131850(lVar5);" (call_expression "FUN_00131850(lVar5)" identifier (argument_list "(lVar5)" ( identifier ))) ;) }) (else_clause "else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" else (compound_statement "{\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" { (expression_statement "uVar2 = FUN_001327c6(lVar3,lVar4);" (assignment_expression "uVar2 = FUN_001327c6(lVar3,lVar4)" identifier = (call_expression "FUN_001327c6(lVar3,lVar4)" identifier (argument_list "(lVar3,lVar4)" ( identifier , identifier )))) ;) }))) (if_statement "if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }" if (parenthesized_expression "(lVar3 != param_1)" ( (binary_expression "lVar3 != param_1" identifier != identifier) )) (compound_statement "{\n    FUN_00131850(lVar3);\n  }" { (expression_statement "FUN_00131850(lVar3);" (call_expression "FUN_00131850(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) })) (if_statement "if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }" if (parenthesized_expression "(lVar4 != param_2)" ( (binary_expression "lVar4 != param_2" identifier != identifier) )) (compound_statement "{\n    FUN_00131850(lVar4);\n  }" { (expression_statement "FUN_00131850(lVar4);" (call_expression "FUN_00131850(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "Bignum_conflict modsub(Bignum_conflict a,Bignum_conflict b,Bignum_conflict n)\n\n{\n  int iVar1;\n  Bignum_conflict pBVar2;\n  Bignum_conflict a_00;\n  Bignum_conflict b_00;\n  Bignum_conflict a_01;\n  \n  iVar1 = bignum_cmp(a,n);\n  a_00 = a;\n  if (-1 < iVar1) {\n    a_00 = bigmod(a,n);\n  }\n  iVar1 = bignum_cmp(b,n);\n  b_00 = b;\n  if (-1 < iVar1) {\n    b_00 = bigmod(b,n);\n  }\n  iVar1 = bignum_cmp(a_00,b_00);\n  if (iVar1 < 0) {\n    a_01 = bigsub(n,b_00);\n    if (a_01 == (Bignum_conflict)0x0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    pBVar2 = bigadd(a_01,a_00);\n    freebn(a_01);\n  }\n  else {\n    pBVar2 = bigsub(a_00,b_00);\n  }\n  if (a_00 != a) {\n    freebn(a_00);\n  }\n  if (b_00 != b) {\n    freebn(b_00);\n  }\n  return pBVar2;\n}\n\n" (function_definition "Bignum_conflict modsub(Bignum_conflict a,Bignum_conflict b,Bignum_conflict n)\n\n{\n  int iVar1;\n  Bignum_conflict pBVar2;\n  Bignum_conflict a_00;\n  Bignum_conflict b_00;\n  Bignum_conflict a_01;\n  \n  iVar1 = bignum_cmp(a,n);\n  a_00 = a;\n  if (-1 < iVar1) {\n    a_00 = bigmod(a,n);\n  }\n  iVar1 = bignum_cmp(b,n);\n  b_00 = b;\n  if (-1 < iVar1) {\n    b_00 = bigmod(b,n);\n  }\n  iVar1 = bignum_cmp(a_00,b_00);\n  if (iVar1 < 0) {\n    a_01 = bigsub(n,b_00);\n    if (a_01 == (Bignum_conflict)0x0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    pBVar2 = bigadd(a_01,a_00);\n    freebn(a_01);\n  }\n  else {\n    pBVar2 = bigsub(a_00,b_00);\n  }\n  if (a_00 != a) {\n    freebn(a_00);\n  }\n  if (b_00 != b) {\n    freebn(b_00);\n  }\n  return pBVar2;\n}" type_identifier (function_declarator "modsub(Bignum_conflict a,Bignum_conflict b,Bignum_conflict n)" identifier (parameter_list "(Bignum_conflict a,Bignum_conflict b,Bignum_conflict n)" ( (parameter_declaration "Bignum_conflict a" type_identifier identifier) , (parameter_declaration "Bignum_conflict b" type_identifier identifier) , (parameter_declaration "Bignum_conflict n" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  Bignum_conflict pBVar2;\n  Bignum_conflict a_00;\n  Bignum_conflict b_00;\n  Bignum_conflict a_01;\n  \n  iVar1 = bignum_cmp(a,n);\n  a_00 = a;\n  if (-1 < iVar1) {\n    a_00 = bigmod(a,n);\n  }\n  iVar1 = bignum_cmp(b,n);\n  b_00 = b;\n  if (-1 < iVar1) {\n    b_00 = bigmod(b,n);\n  }\n  iVar1 = bignum_cmp(a_00,b_00);\n  if (iVar1 < 0) {\n    a_01 = bigsub(n,b_00);\n    if (a_01 == (Bignum_conflict)0x0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    pBVar2 = bigadd(a_01,a_00);\n    freebn(a_01);\n  }\n  else {\n    pBVar2 = bigsub(a_00,b_00);\n  }\n  if (a_00 != a) {\n    freebn(a_00);\n  }\n  if (b_00 != b) {\n    freebn(b_00);\n  }\n  return pBVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "Bignum_conflict pBVar2;" type_identifier identifier ;) (declaration "Bignum_conflict a_00;" type_identifier identifier ;) (declaration "Bignum_conflict b_00;" type_identifier identifier ;) (declaration "Bignum_conflict a_01;" type_identifier identifier ;) (expression_statement "iVar1 = bignum_cmp(a,n);" (assignment_expression "iVar1 = bignum_cmp(a,n)" identifier = (call_expression "bignum_cmp(a,n)" identifier (argument_list "(a,n)" ( identifier , identifier )))) ;) (expression_statement "a_00 = a;" (assignment_expression "a_00 = a" identifier = identifier) ;) (if_statement "if (-1 < iVar1) {\n    a_00 = bigmod(a,n);\n  }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n    a_00 = bigmod(a,n);\n  }" { (expression_statement "a_00 = bigmod(a,n);" (assignment_expression "a_00 = bigmod(a,n)" identifier = (call_expression "bigmod(a,n)" identifier (argument_list "(a,n)" ( identifier , identifier )))) ;) })) (expression_statement "iVar1 = bignum_cmp(b,n);" (assignment_expression "iVar1 = bignum_cmp(b,n)" identifier = (call_expression "bignum_cmp(b,n)" identifier (argument_list "(b,n)" ( identifier , identifier )))) ;) (expression_statement "b_00 = b;" (assignment_expression "b_00 = b" identifier = identifier) ;) (if_statement "if (-1 < iVar1) {\n    b_00 = bigmod(b,n);\n  }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n    b_00 = bigmod(b,n);\n  }" { (expression_statement "b_00 = bigmod(b,n);" (assignment_expression "b_00 = bigmod(b,n)" identifier = (call_expression "bigmod(b,n)" identifier (argument_list "(b,n)" ( identifier , identifier )))) ;) })) (expression_statement "iVar1 = bignum_cmp(a_00,b_00);" (assignment_expression "iVar1 = bignum_cmp(a_00,b_00)" identifier = (call_expression "bignum_cmp(a_00,b_00)" identifier (argument_list "(a_00,b_00)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 < 0) {\n    a_01 = bigsub(n,b_00);\n    if (a_01 == (Bignum_conflict)0x0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    pBVar2 = bigadd(a_01,a_00);\n    freebn(a_01);\n  }\n  else {\n    pBVar2 = bigsub(a_00,b_00);\n  }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n    a_01 = bigsub(n,b_00);\n    if (a_01 == (Bignum_conflict)0x0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    pBVar2 = bigadd(a_01,a_00);\n    freebn(a_01);\n  }" { (expression_statement "a_01 = bigsub(n,b_00);" (assignment_expression "a_01 = bigsub(n,b_00)" identifier = (call_expression "bigsub(n,b_00)" identifier (argument_list "(n,b_00)" ( identifier , identifier )))) ;) (if_statement "if (a_01 == (Bignum_conflict)0x0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" if (parenthesized_expression "(a_01 == (Bignum_conflict)0x0)" ( (binary_expression "a_01 == (Bignum_conflict)0x0" identifier == (cast_expression "(Bignum_conflict)0x0" ( (type_descriptor "Bignum_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" { comment (expression_statement "__assert_fail("tmp","sshbn.c",0x523,"modsub");" (call_expression "__assert_fail("tmp","sshbn.c",0x523,"modsub")" identifier (argument_list "("tmp","sshbn.c",0x523,"modsub")" ( (string_literal ""tmp"" " string_content ") , (string_literal ""sshbn.c"" " string_content ") , number_literal , (string_literal ""modsub"" " string_content ") ))) ;) })) (expression_statement "pBVar2 = bigadd(a_01,a_00);" (assignment_expression "pBVar2 = bigadd(a_01,a_00)" identifier = (call_expression "bigadd(a_01,a_00)" identifier (argument_list "(a_01,a_00)" ( identifier , identifier )))) ;) (expression_statement "freebn(a_01);" (call_expression "freebn(a_01)" identifier (argument_list "(a_01)" ( identifier ))) ;) }) (else_clause "else {\n    pBVar2 = bigsub(a_00,b_00);\n  }" else (compound_statement "{\n    pBVar2 = bigsub(a_00,b_00);\n  }" { (expression_statement "pBVar2 = bigsub(a_00,b_00);" (assignment_expression "pBVar2 = bigsub(a_00,b_00)" identifier = (call_expression "bigsub(a_00,b_00)" identifier (argument_list "(a_00,b_00)" ( identifier , identifier )))) ;) }))) (if_statement "if (a_00 != a) {\n    freebn(a_00);\n  }" if (parenthesized_expression "(a_00 != a)" ( (binary_expression "a_00 != a" identifier != identifier) )) (compound_statement "{\n    freebn(a_00);\n  }" { (expression_statement "freebn(a_00);" (call_expression "freebn(a_00)" identifier (argument_list "(a_00)" ( identifier ))) ;) })) (if_statement "if (b_00 != b) {\n    freebn(b_00);\n  }" if (parenthesized_expression "(b_00 != b)" ( (binary_expression "b_00 != b" identifier != identifier) )) (compound_statement "{\n    freebn(b_00);\n  }" { (expression_statement "freebn(b_00);" (call_expression "freebn(b_00)" identifier (argument_list "(b_00)" ( identifier ))) ;) })) (return_statement "return pBVar2;" return identifier ;) })))
(translation_unit "undefined8 FUN_0013306c(long param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined8 FUN_0013306c(long param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0013306c(long param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar1 = FUN_00132034(param_1,param_3);" (assignment_expression "iVar1 = FUN_00132034(param_1,param_3)" identifier = (call_expression "FUN_00132034(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" identifier = identifier) ;) (if_statement "if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }" { (expression_statement "lVar3 = FUN_00132ba8(param_1,param_3);" (assignment_expression "lVar3 = FUN_00132ba8(param_1,param_3)" identifier = (call_expression "FUN_00132ba8(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) })) (expression_statement "iVar1 = FUN_00132034(param_2,param_3);" (assignment_expression "iVar1 = FUN_00132034(param_2,param_3)" identifier = (call_expression "FUN_00132034(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier )))) ;) (expression_statement "lVar4 = param_2;" (assignment_expression "lVar4 = param_2" identifier = identifier) ;) (if_statement "if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }" { (expression_statement "lVar4 = FUN_00132ba8(param_2,param_3);" (assignment_expression "lVar4 = FUN_00132ba8(param_2,param_3)" identifier = (call_expression "FUN_00132ba8(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier )))) ;) })) (expression_statement "iVar1 = FUN_00132034(lVar3,lVar4);" (assignment_expression "iVar1 = FUN_00132034(lVar3,lVar4)" identifier = (call_expression "FUN_00132034(lVar3,lVar4)" identifier (argument_list "(lVar3,lVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }" { (expression_statement "lVar5 = FUN_001327c6(param_3,lVar4);" (assignment_expression "lVar5 = FUN_001327c6(param_3,lVar4)" identifier = (call_expression "FUN_001327c6(param_3,lVar4)" identifier (argument_list "(param_3,lVar4)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" { (expression_statement "__assert_fail("tmp","sshbn.c",0x523,"modsub");" (call_expression "__assert_fail("tmp","sshbn.c",0x523,"modsub")" identifier (argument_list "("tmp","sshbn.c",0x523,"modsub")" ( (string_literal ""tmp"" " string_content ") , (string_literal ""sshbn.c"" " string_content ") , number_literal , (string_literal ""modsub"" " string_content ") ))) ;) })) (expression_statement "uVar2 = FUN_001326d7(lVar5,lVar3);" (assignment_expression "uVar2 = FUN_001326d7(lVar5,lVar3)" identifier = (call_expression "FUN_001326d7(lVar5,lVar3)" identifier (argument_list "(lVar5,lVar3)" ( identifier , identifier )))) ;) (expression_statement "FUN_00131850(lVar5);" (call_expression "FUN_00131850(lVar5)" identifier (argument_list "(lVar5)" ( identifier ))) ;) }) (else_clause "else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" else (compound_statement "{\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" { (expression_statement "uVar2 = FUN_001327c6(lVar3,lVar4);" (assignment_expression "uVar2 = FUN_001327c6(lVar3,lVar4)" identifier = (call_expression "FUN_001327c6(lVar3,lVar4)" identifier (argument_list "(lVar3,lVar4)" ( identifier , identifier )))) ;) }))) (if_statement "if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }" if (parenthesized_expression "(lVar3 != param_1)" ( (binary_expression "lVar3 != param_1" identifier != identifier) )) (compound_statement "{\n    FUN_00131850(lVar3);\n  }" { (expression_statement "FUN_00131850(lVar3);" (call_expression "FUN_00131850(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) })) (if_statement "if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }" if (parenthesized_expression "(lVar4 != param_2)" ( (binary_expression "lVar4 != param_2" identifier != identifier) )) (compound_statement "{\n    FUN_00131850(lVar4);\n  }" { (expression_statement "FUN_00131850(lVar4);" (call_expression "FUN_00131850(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_0013306c(long param_1,long param_2,undefined8 param_3)\n\n{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}" (type_identifier "undefined8") (function_declarator "FUN_0013306c(long param_1,long param_2,undefined8 param_3)" (identifier "FUN_0013306c") (parameter_list "(long param_1,long param_2,undefined8 param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  \n  iVar1 = FUN_00132034(param_1,param_3);\n  lVar3 = param_1;\n  if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }\n  iVar1 = FUN_00132034(param_2,param_3);\n  lVar4 = param_2;\n  if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }\n  iVar1 = FUN_00132034(lVar3,lVar4);\n  if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }\n  if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }\n  if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }\n  return uVar2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (expression_statement "iVar1 = FUN_00132034(param_1,param_3);" (assignment_expression "iVar1 = FUN_00132034(param_1,param_3)" (identifier "iVar1") (= "=") (call_expression "FUN_00132034(param_1,param_3)" (identifier "FUN_00132034") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" (identifier "lVar3") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (-1 < iVar1) {\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n    lVar3 = FUN_00132ba8(param_1,param_3);\n  }" ({ "{") (expression_statement "lVar3 = FUN_00132ba8(param_1,param_3);" (assignment_expression "lVar3 = FUN_00132ba8(param_1,param_3)" (identifier "lVar3") (= "=") (call_expression "FUN_00132ba8(param_1,param_3)" (identifier "FUN_00132ba8") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_00132034(param_2,param_3);" (assignment_expression "iVar1 = FUN_00132034(param_2,param_3)" (identifier "iVar1") (= "=") (call_expression "FUN_00132034(param_2,param_3)" (identifier "FUN_00132034") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "lVar4 = param_2;" (assignment_expression "lVar4 = param_2" (identifier "lVar4") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (-1 < iVar1) {\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n    lVar4 = FUN_00132ba8(param_2,param_3);\n  }" ({ "{") (expression_statement "lVar4 = FUN_00132ba8(param_2,param_3);" (assignment_expression "lVar4 = FUN_00132ba8(param_2,param_3)" (identifier "lVar4") (= "=") (call_expression "FUN_00132ba8(param_2,param_3)" (identifier "FUN_00132ba8") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_00132034(lVar3,lVar4);" (assignment_expression "iVar1 = FUN_00132034(lVar3,lVar4)" (identifier "iVar1") (= "=") (call_expression "FUN_00132034(lVar3,lVar4)" (identifier "FUN_00132034") (argument_list "(lVar3,lVar4)" (( "(") (identifier "lVar3") (, ",") (identifier "lVar4") () ")")))) (; ";")) (if_statement "if (iVar1 < 0) {\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }\n  else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" (if "if") (parenthesized_expression "(iVar1 < 0)" (( "(") (binary_expression "iVar1 < 0" (identifier "iVar1") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    lVar5 = FUN_001327c6(param_3,lVar4);\n    if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }\n    uVar2 = FUN_001326d7(lVar5,lVar3);\n    FUN_00131850(lVar5);\n  }" ({ "{") (expression_statement "lVar5 = FUN_001327c6(param_3,lVar4);" (assignment_expression "lVar5 = FUN_001327c6(param_3,lVar4)" (identifier "lVar5") (= "=") (call_expression "FUN_001327c6(param_3,lVar4)" (identifier "FUN_001327c6") (argument_list "(param_3,lVar4)" (( "(") (identifier "param_3") (, ",") (identifier "lVar4") () ")")))) (; ";")) (if_statement "if (lVar5 == 0) {\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      __assert_fail("tmp","sshbn.c",0x523,"modsub");\n    }" ({ "{") (expression_statement "__assert_fail("tmp","sshbn.c",0x523,"modsub");" (call_expression "__assert_fail("tmp","sshbn.c",0x523,"modsub")" (identifier "__assert_fail") (argument_list "("tmp","sshbn.c",0x523,"modsub")" (( "(") (string_literal ""tmp"" (" """) (string_content "tmp") (" """)) (, ",") (string_literal ""sshbn.c"" (" """) (string_content "sshbn.c") (" """)) (, ",") (number_literal "0x523") (, ",") (string_literal ""modsub"" (" """) (string_content "modsub") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_001326d7(lVar5,lVar3);" (assignment_expression "uVar2 = FUN_001326d7(lVar5,lVar3)" (identifier "uVar2") (= "=") (call_expression "FUN_001326d7(lVar5,lVar3)" (identifier "FUN_001326d7") (argument_list "(lVar5,lVar3)" (( "(") (identifier "lVar5") (, ",") (identifier "lVar3") () ")")))) (; ";")) (expression_statement "FUN_00131850(lVar5);" (call_expression "FUN_00131850(lVar5)" (identifier "FUN_00131850") (argument_list "(lVar5)" (( "(") (identifier "lVar5") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" (else "else") (compound_statement "{\n    uVar2 = FUN_001327c6(lVar3,lVar4);\n  }" ({ "{") (expression_statement "uVar2 = FUN_001327c6(lVar3,lVar4);" (assignment_expression "uVar2 = FUN_001327c6(lVar3,lVar4)" (identifier "uVar2") (= "=") (call_expression "FUN_001327c6(lVar3,lVar4)" (identifier "FUN_001327c6") (argument_list "(lVar3,lVar4)" (( "(") (identifier "lVar3") (, ",") (identifier "lVar4") () ")")))) (; ";")) (} "}")))) (if_statement "if (lVar3 != param_1) {\n    FUN_00131850(lVar3);\n  }" (if "if") (parenthesized_expression "(lVar3 != param_1)" (( "(") (binary_expression "lVar3 != param_1" (identifier "lVar3") (!= "!=") (identifier "param_1")) () ")")) (compound_statement "{\n    FUN_00131850(lVar3);\n  }" ({ "{") (expression_statement "FUN_00131850(lVar3);" (call_expression "FUN_00131850(lVar3)" (identifier "FUN_00131850") (argument_list "(lVar3)" (( "(") (identifier "lVar3") () ")"))) (; ";")) (} "}"))) (if_statement "if (lVar4 != param_2) {\n    FUN_00131850(lVar4);\n  }" (if "if") (parenthesized_expression "(lVar4 != param_2)" (( "(") (binary_expression "lVar4 != param_2" (identifier "lVar4") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n    FUN_00131850(lVar4);\n  }" ({ "{") (expression_statement "FUN_00131850(lVar4);" (call_expression "FUN_00131850(lVar4)" (identifier "FUN_00131850") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")"))) (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

type_1 function_1(type_1 var_10,type_1 var_12,type_1 n)

{
  int var_2;
  type_1 pBVar2;
  type_1 var_9;
  type_1 var_11;
  type_1 var_5;
  
  var_2 = var_1(var_10,n);
  var_9 = var_10;
  if (-1 < var_2) {
    var_9 = var_3(var_10,n);
  }
  var_2 = var_1(var_12,n);
  var_11 = var_12;
  if (-1 < var_2) {
    var_11 = var_3(var_12,n);
  }
  var_2 = var_1(var_9,var_11);
  if (var_2 < 0) {
    var_5 = var_4(n,var_11);
    if (var_5 == (type_1)0x0) {
                    /* WARNING: Subroutine does not return */
      var_6("tmp","sshbn.c",0x523,"modsub");
    }
    pBVar2 = var_7(var_5,var_9);
    var_8(var_5);
  }
  else {
    pBVar2 = var_4(var_9,var_11);
  }
  if (var_9 != var_10) {
    var_8(var_9);
  }
  if (var_11 != var_12) {
    var_8(var_11);
  }
  return pBVar2;
}


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

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

{
  int iVar1;
  undefined8 uVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  
  iVar1 = FUN_00132034(param_1,param_3);
  lVar3 = param_1;
  if (-1 < iVar1) {
    lVar3 = FUN_00132ba8(param_1,param_3);
  }
  iVar1 = FUN_00132034(param_2,param_3);
  lVar4 = param_2;
  if (-1 < iVar1) {
    lVar4 = FUN_00132ba8(param_2,param_3);
  }
  iVar1 = FUN_00132034(lVar3,lVar4);
  if (iVar1 < 0) {
    lVar5 = FUN_001327c6(param_3,lVar4);
    if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("tmp","sshbn.c",0x523,"modsub");
    }
    uVar2 = FUN_001326d7(lVar5,lVar3);
    FUN_00131850(lVar5);
  }
  else {
    uVar2 = FUN_001327c6(lVar3,lVar4);
  }
  if (lVar3 != param_1) {
    FUN_00131850(lVar3);
  }
  if (lVar4 != param_2) {
    FUN_00131850(lVar4);
  }
  return uVar2;
}

