
valueT md_section_align(asection *segment,valueT size)

{
  int iVar1;
  
  iVar1 = 1 << ((byte)segment->alignment_power & 0x1f);
  return (long)-iVar1 & size + (long)(iVar1 + -1);
}



ulong FUN_0013d020(long param_1,long param_2)

{
  int iVar1;
  
  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);
  return (long)-iVar1 & param_2 + (iVar1 + -1);
}


MOV ECX,dword ptr [RDI + 0x70]
MOV EDX,0x1
SHL EDX,CL
LEA EAX,[RDX + -0x1]
NEG EDX
CDQE
ADD RSI,RAX
MOVSXD RAX,EDX
AND RAX,RSI
RET
(translation_unit "ulong FUN_0013d020(long param_1,long param_2)\n\n{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}\n\n" (function_definition "ulong FUN_0013d020(long param_1,long param_2)\n\n{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}" type_identifier (function_declarator "FUN_0013d020(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);" (assignment_expression "iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" identifier = (binary_expression "1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(param_1 + 0x70) & 0x1f" (binary_expression "(byte)*(undefined4 *)(param_1 + 0x70)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(param_1 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) & number_literal) )))) ;) (return_statement "return (long)-iVar1 & param_2 + (iVar1 + -1);" return (binary_expression "(long)-iVar1 & param_2 + (iVar1 + -1)" (cast_expression "(long)-iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (unary_expression "-iVar1" - identifier)) & (binary_expression "param_2 + (iVar1 + -1)" identifier + (parenthesized_expression "(iVar1 + -1)" ( (binary_expression "iVar1 + -1" identifier + number_literal) )))) ;) })))
(translation_unit "valueT md_section_align(asection *segment,valueT size)\n\n{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)segment->alignment_power & 0x1f);\n  return (long)-iVar1 & size + (long)(iVar1 + -1);\n}\n\n" (function_definition "valueT md_section_align(asection *segment,valueT size)\n\n{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)segment->alignment_power & 0x1f);\n  return (long)-iVar1 & size + (long)(iVar1 + -1);\n}" type_identifier (function_declarator "md_section_align(asection *segment,valueT size)" identifier (parameter_list "(asection *segment,valueT size)" ( (parameter_declaration "asection *segment" type_identifier (pointer_declarator "*segment" * identifier)) , (parameter_declaration "valueT size" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)segment->alignment_power & 0x1f);\n  return (long)-iVar1 & size + (long)(iVar1 + -1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = 1 << ((byte)segment->alignment_power & 0x1f);" (assignment_expression "iVar1 = 1 << ((byte)segment->alignment_power & 0x1f)" identifier = (binary_expression "1 << ((byte)segment->alignment_power & 0x1f)" number_literal << (parenthesized_expression "((byte)segment->alignment_power & 0x1f)" ( (binary_expression "(byte)segment->alignment_power & 0x1f" (cast_expression "(byte)segment->alignment_power" ( (type_descriptor "byte" type_identifier) ) (field_expression "segment->alignment_power" identifier -> field_identifier)) & number_literal) )))) ;) (return_statement "return (long)-iVar1 & size + (long)(iVar1 + -1);" return (binary_expression "(long)-iVar1 & size + (long)(iVar1 + -1)" (cast_expression "(long)-iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (unary_expression "-iVar1" - identifier)) & (binary_expression "size + (long)(iVar1 + -1)" identifier + (cast_expression "(long)(iVar1 + -1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar1 + -1)" ( (binary_expression "iVar1 + -1" identifier + number_literal) ))))) ;) })))
(translation_unit "ulong FUN_0013d020(long param_1,long param_2)\n\n{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}\n\n" (function_definition "ulong FUN_0013d020(long param_1,long param_2)\n\n{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}" type_identifier (function_declarator "FUN_0013d020(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);" (assignment_expression "iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" identifier = (binary_expression "1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(param_1 + 0x70) & 0x1f" (binary_expression "(byte)*(undefined4 *)(param_1 + 0x70)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(param_1 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) & number_literal) )))) ;) (return_statement "return (long)-iVar1 & param_2 + (iVar1 + -1);" return (binary_expression "(long)-iVar1 & param_2 + (iVar1 + -1)" (cast_expression "(long)-iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (unary_expression "-iVar1" - identifier)) & (binary_expression "param_2 + (iVar1 + -1)" identifier + (parenthesized_expression "(iVar1 + -1)" ( (binary_expression "iVar1 + -1" identifier + number_literal) )))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )))) ;) (return_statement return (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (unary_expression - IDENT)) & (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })))
(function_definition "ulong FUN_0013d020(long param_1,long param_2)\n\n{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}" (type_identifier "ulong") (function_declarator "FUN_0013d020(long param_1,long param_2)" (identifier "FUN_0013d020") (parameter_list "(long param_1,long param_2)" (( "(") (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")) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);\n  return (long)-iVar1 & param_2 + (iVar1 + -1);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (expression_statement "iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);" (assignment_expression "iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" (identifier "iVar1") (= "=") (binary_expression "1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f)" (( "(") (binary_expression "(byte)*(undefined4 *)(param_1 + 0x70) & 0x1f" (binary_expression "(byte)*(undefined4 *)(param_1 + 0x70)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (cast_expression "(undefined4 *)(param_1 + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (return_statement "return (long)-iVar1 & param_2 + (iVar1 + -1);" (return "return") (binary_expression "(long)-iVar1 & param_2 + (iVar1 + -1)" (cast_expression "(long)-iVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (unary_expression "-iVar1" (- "-") (identifier "iVar1"))) (& "&") (binary_expression "param_2 + (iVar1 + -1)" (identifier "param_2") (+ "+") (parenthesized_expression "(iVar1 + -1)" (( "(") (binary_expression "iVar1 + -1" (identifier "iVar1") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (} "}")))

type_1 function_1(type_2 *segment,type_1 var_1)

{
  int var_2;
  
  var_2 = 1 << ((type_3)segment->alignment_power & 0x1f);
  return (long)-var_2 & var_1 + (long)(var_2 + -1);
}


(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)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (return_statement (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (unary_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))

ulong MASKED(long param_1,long param_2)

{
  int iVar1;
  
  iVar1 = 1 << ((byte)*(undefined4 *)(param_1 + 0x70) & 0x1f);
  return (long)-iVar1 & param_2 + (iVar1 + -1);
}

