
strtol_error bkm_scale_by_power(uintmax_t *x,int base,int power)

{
  undefined1 auVar1 [16];
  undefined1 auVar2 [16];
  ulong uVar3;
  int iVar4;
  strtol_error sVar5;
  bool bVar6;
  
  iVar4 = power + -1;
  if (power == 0) {
    sVar5 = LONGINT_OK;
  }
  else {
    uVar3 = *x;
    sVar5 = LONGINT_OK;
    do {
      auVar1._8_8_ = 0;
      auVar1._0_8_ = uVar3;
      auVar2._8_8_ = 0;
      auVar2._0_8_ = (long)base;
      uVar3 = SUB168(auVar1 * auVar2,0);
      bVar6 = SUB168(auVar1 * auVar2,8) != 0;
      if (bVar6) {
        uVar3 = 0xffffffffffffffff;
      }
      sVar5 = sVar5 | bVar6;
      iVar4 = iVar4 + -1;
    } while (iVar4 != -1);
    *x = uVar3;
  }
  return sVar5;
}



byte FUN_001074e3(ulong *param_1,int param_2,int param_3)

{
  undefined1 auVar1 [16];
  undefined1 auVar2 [16];
  ulong uVar3;
  int iVar4;
  byte bVar5;
  bool bVar6;
  
  iVar4 = param_3 + -1;
  if (param_3 == 0) {
    bVar5 = 0;
  }
  else {
    uVar3 = *param_1;
    bVar5 = 0;
    do {
      auVar1._8_8_ = 0;
      auVar1._0_8_ = uVar3;
      auVar2._8_8_ = 0;
      auVar2._0_8_ = (long)param_2;
      uVar3 = SUB168(auVar1 * auVar2,0);
      bVar6 = SUB168(auVar1 * auVar2,8) != 0;
      if (bVar6) {
        uVar3 = 0xffffffffffffffff;
      }
      bVar5 = bVar5 | bVar6;
      iVar4 = iVar4 + -1;
    } while (iVar4 != -1);
    *param_1 = uVar3;
  }
  return bVar5;
}


LEA R8D,[RDX + -0x1]
TEST EDX,EDX
JZ 0x00107533
MOV RCX,qword ptr [RDI]
MOV R9D,0x0
MOVSXD RSI,ESI
MOV R11D,0x1
MOV R10D,0x0
JMP 0x00107518
MOV RCX,RAX
MOV EAX,R10D
OR R9D,EAX
SUB R8D,0x1
CMP R8D,-0x1
JZ 0x0010752c
MOV RAX,RCX
MUL RSI
JNO 0x00107505
MOV RCX,-0x1
MOV EAX,R11D
JMP 0x0010750b
MOV qword ptr [RDI],RCX
MOV EAX,R9D
RET
MOV R9D,0x0
JMP 0x0010752f
(translation_unit "byte FUN_001074e3(ulong *param_1,int param_2,int param_3)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}\n\n" (function_definition "byte FUN_001074e3(ulong *param_1,int param_2,int param_3)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}" type_identifier (function_declarator "FUN_001074e3(ulong *param_1,int param_2,int param_3)" identifier (parameter_list "(ulong *param_1,int param_2,int param_3)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "iVar4 = param_3 + -1;" (assignment_expression "iVar4 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (if_statement "if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar5 = 0;\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" else (compound_statement "{\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" { (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);" do (compound_statement "{\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    }" { (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar1._0_8_ = uVar3;" (assignment_expression "auVar1._0_8_ = uVar3" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = (long)param_2;" (assignment_expression "auVar2._0_8_ = (long)param_2" (field_expression "auVar2._0_8_" identifier . field_identifier) = (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar3 = SUB168(auVar1 * auVar2,0);" (assignment_expression "uVar3 = SUB168(auVar1 * auVar2,0)" identifier = (call_expression "SUB168(auVar1 * auVar2,0)" identifier (argument_list "(auVar1 * auVar2,0)" ( (binary_expression "auVar1 * auVar2" identifier * identifier) , number_literal )))) ;) (expression_statement "bVar6 = SUB168(auVar1 * auVar2,8) != 0;" (assignment_expression "bVar6 = SUB168(auVar1 * auVar2,8) != 0" identifier = (binary_expression "SUB168(auVar1 * auVar2,8) != 0" (call_expression "SUB168(auVar1 * auVar2,8)" identifier (argument_list "(auVar1 * auVar2,8)" ( (binary_expression "auVar1 * auVar2" identifier * identifier) , number_literal ))) != number_literal)) ;) (if_statement "if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        uVar3 = 0xffffffffffffffff;\n      }" { (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) })) (expression_statement "bVar5 = bVar5 | bVar6;" (assignment_expression "bVar5 = bVar5 | bVar6" identifier = (binary_expression "bVar5 | bVar6" identifier | identifier)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) (expression_statement "*param_1 = uVar3;" (assignment_expression "*param_1 = uVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) }))) (return_statement "return bVar5;" return identifier ;) })))
(translation_unit "strtol_error bkm_scale_by_power(uintmax_t *x,int base,int power)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  strtol_error sVar5;\n  bool bVar6;\n  \n  iVar4 = power + -1;\n  if (power == 0) {\n    sVar5 = LONGINT_OK;\n  }\n  else {\n    uVar3 = *x;\n    sVar5 = LONGINT_OK;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *x = uVar3;\n  }\n  return sVar5;\n}\n\n" (function_definition "strtol_error bkm_scale_by_power(uintmax_t *x,int base,int power)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  strtol_error sVar5;\n  bool bVar6;\n  \n  iVar4 = power + -1;\n  if (power == 0) {\n    sVar5 = LONGINT_OK;\n  }\n  else {\n    uVar3 = *x;\n    sVar5 = LONGINT_OK;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *x = uVar3;\n  }\n  return sVar5;\n}" type_identifier (function_declarator "bkm_scale_by_power(uintmax_t *x,int base,int power)" identifier (parameter_list "(uintmax_t *x,int base,int power)" ( (parameter_declaration "uintmax_t *x" type_identifier (pointer_declarator "*x" * identifier)) , (parameter_declaration "int base" primitive_type identifier) , (parameter_declaration "int power" primitive_type identifier) ))) (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  strtol_error sVar5;\n  bool bVar6;\n  \n  iVar4 = power + -1;\n  if (power == 0) {\n    sVar5 = LONGINT_OK;\n  }\n  else {\n    uVar3 = *x;\n    sVar5 = LONGINT_OK;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *x = uVar3;\n  }\n  return sVar5;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "strtol_error sVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "iVar4 = power + -1;" (assignment_expression "iVar4 = power + -1" identifier = (binary_expression "power + -1" identifier + number_literal)) ;) (if_statement "if (power == 0) {\n    sVar5 = LONGINT_OK;\n  }\n  else {\n    uVar3 = *x;\n    sVar5 = LONGINT_OK;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *x = uVar3;\n  }" if (parenthesized_expression "(power == 0)" ( (binary_expression "power == 0" identifier == number_literal) )) (compound_statement "{\n    sVar5 = LONGINT_OK;\n  }" { (expression_statement "sVar5 = LONGINT_OK;" (assignment_expression "sVar5 = LONGINT_OK" identifier = identifier) ;) }) (else_clause "else {\n    uVar3 = *x;\n    sVar5 = LONGINT_OK;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *x = uVar3;\n  }" else (compound_statement "{\n    uVar3 = *x;\n    sVar5 = LONGINT_OK;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *x = uVar3;\n  }" { (expression_statement "uVar3 = *x;" (assignment_expression "uVar3 = *x" identifier = (pointer_expression "*x" * identifier)) ;) (expression_statement "sVar5 = LONGINT_OK;" (assignment_expression "sVar5 = LONGINT_OK" identifier = identifier) ;) (do_statement "do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);" do (compound_statement "{\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)base;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      sVar5 = sVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    }" { (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar1._0_8_ = uVar3;" (assignment_expression "auVar1._0_8_ = uVar3" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = (long)base;" (assignment_expression "auVar2._0_8_ = (long)base" (field_expression "auVar2._0_8_" identifier . field_identifier) = (cast_expression "(long)base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar3 = SUB168(auVar1 * auVar2,0);" (assignment_expression "uVar3 = SUB168(auVar1 * auVar2,0)" identifier = (call_expression "SUB168(auVar1 * auVar2,0)" identifier (argument_list "(auVar1 * auVar2,0)" ( (binary_expression "auVar1 * auVar2" identifier * identifier) , number_literal )))) ;) (expression_statement "bVar6 = SUB168(auVar1 * auVar2,8) != 0;" (assignment_expression "bVar6 = SUB168(auVar1 * auVar2,8) != 0" identifier = (binary_expression "SUB168(auVar1 * auVar2,8) != 0" (call_expression "SUB168(auVar1 * auVar2,8)" identifier (argument_list "(auVar1 * auVar2,8)" ( (binary_expression "auVar1 * auVar2" identifier * identifier) , number_literal ))) != number_literal)) ;) (if_statement "if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        uVar3 = 0xffffffffffffffff;\n      }" { (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) })) (expression_statement "sVar5 = sVar5 | bVar6;" (assignment_expression "sVar5 = sVar5 | bVar6" identifier = (binary_expression "sVar5 | bVar6" identifier | identifier)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) (expression_statement "*x = uVar3;" (assignment_expression "*x = uVar3" (pointer_expression "*x" * identifier) = identifier) ;) }))) (return_statement "return sVar5;" return identifier ;) })))
(translation_unit "byte FUN_001074e3(ulong *param_1,int param_2,int param_3)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}\n\n" (function_definition "byte FUN_001074e3(ulong *param_1,int param_2,int param_3)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}" type_identifier (function_declarator "FUN_001074e3(ulong *param_1,int param_2,int param_3)" identifier (parameter_list "(ulong *param_1,int param_2,int param_3)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar2 [16];" type_identifier (array_declarator "auVar2 [16]" identifier [ number_literal ]) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (expression_statement "iVar4 = param_3 + -1;" (assignment_expression "iVar4 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (if_statement "if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar5 = 0;\n  }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" else (compound_statement "{\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" { (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);" do (compound_statement "{\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    }" { (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar1._0_8_ = uVar3;" (assignment_expression "auVar1._0_8_ = uVar3" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar2._0_8_ = (long)param_2;" (assignment_expression "auVar2._0_8_ = (long)param_2" (field_expression "auVar2._0_8_" identifier . field_identifier) = (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar3 = SUB168(auVar1 * auVar2,0);" (assignment_expression "uVar3 = SUB168(auVar1 * auVar2,0)" identifier = (call_expression "SUB168(auVar1 * auVar2,0)" identifier (argument_list "(auVar1 * auVar2,0)" ( (binary_expression "auVar1 * auVar2" identifier * identifier) , number_literal )))) ;) (expression_statement "bVar6 = SUB168(auVar1 * auVar2,8) != 0;" (assignment_expression "bVar6 = SUB168(auVar1 * auVar2,8) != 0" identifier = (binary_expression "SUB168(auVar1 * auVar2,8) != 0" (call_expression "SUB168(auVar1 * auVar2,8)" identifier (argument_list "(auVar1 * auVar2,8)" ( (binary_expression "auVar1 * auVar2" identifier * identifier) , number_literal ))) != number_literal)) ;) (if_statement "if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        uVar3 = 0xffffffffffffffff;\n      }" { (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" identifier = number_literal) ;) })) (expression_statement "bVar5 = bVar5 | bVar6;" (assignment_expression "bVar5 = bVar5 | bVar6" identifier = (binary_expression "bVar5 | bVar6" identifier | identifier)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) (expression_statement "*param_1 = uVar3;" (assignment_expression "*param_1 = uVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) }))) (return_statement "return bVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) , LIT ))) != LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "byte FUN_001074e3(ulong *param_1,int param_2,int param_3)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}" (type_identifier "byte") (function_declarator "FUN_001074e3(ulong *param_1,int param_2,int param_3)" (identifier "FUN_001074e3") (parameter_list "(ulong *param_1,int param_2,int param_3)" (( "(") (parameter_declaration "ulong *param_1" (type_identifier "ulong") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined1 auVar1 [16];\n  undefined1 auVar2 [16];\n  ulong uVar3;\n  int iVar4;\n  byte bVar5;\n  bool bVar6;\n  \n  iVar4 = param_3 + -1;\n  if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }\n  return bVar5;\n}" ({ "{") (declaration "undefined1 auVar1 [16];" (type_identifier "undefined1") (array_declarator "auVar1 [16]" (identifier "auVar1") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar2 [16];" (type_identifier "undefined1") (array_declarator "auVar2 [16]" (identifier "auVar2") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (expression_statement "iVar4 = param_3 + -1;" (assignment_expression "iVar4 = param_3 + -1" (identifier "iVar4") (= "=") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (param_3 == 0) {\n    bVar5 = 0;\n  }\n  else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar5 = 0;\n  }" ({ "{") (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" (identifier "bVar5") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" (else "else") (compound_statement "{\n    uVar3 = *param_1;\n    bVar5 = 0;\n    do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);\n    *param_1 = uVar3;\n  }" ({ "{") (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" (identifier "uVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" (identifier "bVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    } while (iVar4 != -1);" (do "do") (compound_statement "{\n      auVar1._8_8_ = 0;\n      auVar1._0_8_ = uVar3;\n      auVar2._8_8_ = 0;\n      auVar2._0_8_ = (long)param_2;\n      uVar3 = SUB168(auVar1 * auVar2,0);\n      bVar6 = SUB168(auVar1 * auVar2,8) != 0;\n      if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }\n      bVar5 = bVar5 | bVar6;\n      iVar4 = iVar4 + -1;\n    }" ({ "{") (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" (identifier "auVar1") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar1._0_8_ = uVar3;" (assignment_expression "auVar1._0_8_ = uVar3" (field_expression "auVar1._0_8_" (identifier "auVar1") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "auVar2._8_8_ = 0;" (assignment_expression "auVar2._8_8_ = 0" (field_expression "auVar2._8_8_" (identifier "auVar2") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar2._0_8_ = (long)param_2;" (assignment_expression "auVar2._0_8_ = (long)param_2" (field_expression "auVar2._0_8_" (identifier "auVar2") (. ".") (field_identifier "_0_8_")) (= "=") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) (; ";")) (expression_statement "uVar3 = SUB168(auVar1 * auVar2,0);" (assignment_expression "uVar3 = SUB168(auVar1 * auVar2,0)" (identifier "uVar3") (= "=") (call_expression "SUB168(auVar1 * auVar2,0)" (identifier "SUB168") (argument_list "(auVar1 * auVar2,0)" (( "(") (binary_expression "auVar1 * auVar2" (identifier "auVar1") (* "*") (identifier "auVar2")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar6 = SUB168(auVar1 * auVar2,8) != 0;" (assignment_expression "bVar6 = SUB168(auVar1 * auVar2,8) != 0" (identifier "bVar6") (= "=") (binary_expression "SUB168(auVar1 * auVar2,8) != 0" (call_expression "SUB168(auVar1 * auVar2,8)" (identifier "SUB168") (argument_list "(auVar1 * auVar2,8)" (( "(") (binary_expression "auVar1 * auVar2" (identifier "auVar1") (* "*") (identifier "auVar2")) (, ",") (number_literal "8") () ")"))) (!= "!=") (number_literal "0"))) (; ";")) (if_statement "if (bVar6) {\n        uVar3 = 0xffffffffffffffff;\n      }" (if "if") (parenthesized_expression "(bVar6)" (( "(") (identifier "bVar6") () ")")) (compound_statement "{\n        uVar3 = 0xffffffffffffffff;\n      }" ({ "{") (expression_statement "uVar3 = 0xffffffffffffffff;" (assignment_expression "uVar3 = 0xffffffffffffffff" (identifier "uVar3") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (} "}"))) (expression_statement "bVar5 = bVar5 | bVar6;" (assignment_expression "bVar5 = bVar5 | bVar6" (identifier "bVar5") (= "=") (binary_expression "bVar5 | bVar6" (identifier "bVar5") (| "|") (identifier "bVar6"))) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "*param_1 = uVar3;" (assignment_expression "*param_1 = uVar3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar3")) (; ";")) (} "}")))) (return_statement "return bVar5;" (return "return") (identifier "bVar5") (; ";")) (} "}")))

type_1 function_1(type_2 *x,int base,int var_1)

{
  type_3 var_3 [16];
  type_3 var_4 [16];
  type_4 uVar3;
  int var_7;
  type_1 var_5;
  bool var_6;
  
  var_7 = var_1 + -1;
  if (var_1 == 0) {
    var_5 = LONGINT_OK;
  }
  else {
    uVar3 = *x;
    var_5 = LONGINT_OK;
    do {
      var_3._8_8_ = 0;
      var_3._0_8_ = uVar3;
      var_4._8_8_ = 0;
      var_4._0_8_ = (long)base;
      uVar3 = var_2(var_3 * var_4,0);
      var_6 = var_2(var_3 * var_4,8) != 0;
      if (var_6) {
        uVar3 = 0xffffffffffffffff;
      }
      var_5 = var_5 | var_6;
      var_7 = var_7 + -1;
    } while (var_7 != -1);
    *x = uVar3;
  }
  return var_5;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (return_statement (identifier)))))

byte MASKED(ulong *param_1,int param_2,int param_3)

{
  undefined1 auVar1 [16];
  undefined1 auVar2 [16];
  ulong uVar3;
  int iVar4;
  byte bVar5;
  bool bVar6;
  
  iVar4 = param_3 + -1;
  if (param_3 == 0) {
    bVar5 = 0;
  }
  else {
    uVar3 = *param_1;
    bVar5 = 0;
    do {
      auVar1._8_8_ = 0;
      auVar1._0_8_ = uVar3;
      auVar2._8_8_ = 0;
      auVar2._0_8_ = (long)param_2;
      uVar3 = SUB168(auVar1 * auVar2,0);
      bVar6 = SUB168(auVar1 * auVar2,8) != 0;
      if (bVar6) {
        uVar3 = 0xffffffffffffffff;
      }
      bVar5 = bVar5 | bVar6;
      iVar4 = iVar4 + -1;
    } while (iVar4 != -1);
    *param_1 = uVar3;
  }
  return bVar5;
}

