
void frag_align(int alignment,int fill_character,int max)

{
  char *pcVar1;
  ulong uVar2;
  
  if (now_seg != (segT)(_bfd_std_section + 0x230)) {
    pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0);
    *pcVar1 = (char)fill_character;
    return;
  }
  uVar2 = -1L << ((byte)alignment & 0x3f);
  uVar2 = (abs_section_offset - 1) - uVar2 & uVar2;
  if ((max != 0) && ((ulong)(long)max < uVar2 - abs_section_offset)) {
    return;
  }
  abs_section_offset = uVar2;
  return;
}



undefined1  [16] FUN_00118d30(int param_1,undefined1 param_2,ulong param_3)

{
  undefined1 auVar1 [16];
  undefined1 *puVar2;
  ulong uVar3;
  undefined1 auVar4 [16];
  undefined1 auVar5 [16];
  undefined8 uStack_10;
  
  if (DAT_0019d708 != 0x1949f0) {
    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);
    *puVar2 = param_2;
    auVar1._8_8_ = 0;
    auVar1._0_8_ = uStack_10;
    return auVar1 << 0x40;
  }
  uVar3 = -1L << ((byte)param_1 & 0x3f);
  auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3;
  if (((int)param_3 != 0) &&
     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,
     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)) {
    auVar5._0_8_ = auVar4._0_8_;
    return auVar5;
  }
  DAT_0019d998 = auVar4._0_8_;
  auVar4._8_8_ = param_3;
  return auVar4;
}


LEA RAX,[0x1949f0]
CMP qword ptr [0x0019d708],RAX
JZ 0x00118d70
PUSH RBX
MOV ECX,EDX
MOV EBX,ESI
MOVSXD R9,EDI
MOV EDX,0x1
XOR R8D,R8D
MOV ESI,0x1
MOV EDI,0x2
SUB RSP,0x8
PUSH 0x0
CALL 0x00118c00
MOV byte ptr [RAX],BL
POP RAX
POP RDX
POP RBX
RET
MOV ECX,EDI
MOV RAX,-0x1
MOV RSI,qword ptr [0x0019d998]
SHL RAX,CL
MOV RCX,RAX
LEA RAX,[RSI + -0x1]
SUB RAX,RCX
AND RAX,RCX
TEST EDX,EDX
JZ 0x00118da2
MOV RCX,RAX
MOVSXD RDX,EDX
SUB RCX,RSI
CMP RCX,RDX
JA 0x00118db0
MOV qword ptr [0x0019d998],RAX
RET
RET
(translation_unit "undefined1  [16] FUN_00118d30(int param_1,undefined1 param_2,ulong param_3)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 *puVar2;\n  ulong uVar3;\n  undefined1 auVar4 [16];\n  undefined1 auVar5 [16];\n  undefined8 uStack_10;\n  \n  if (DAT_0019d708 != 0x1949f0) {\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }\n  uVar3 = -1L << ((byte)param_1 & 0x3f);\n  auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3;\n  if (((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)) {\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }\n  DAT_0019d998 = auVar4._0_8_;\n  auVar4._8_8_ = param_3;\n  return auVar4;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00118d30(int param_1,undefined1 param_2,ulong param_3)\n\n{\n  undefined1 auVar1 [16];" (macro_type_specifier "FUN_00118d30(int" identifier ( (type_descriptor "int" primitive_type) )) identifier , identifier (ERROR "param_2" identifier) , (ERROR "ulong param_3)\n\n{\n  undefined1" identifier identifier ) { identifier) (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined1 auVar4 [16];" type_identifier (array_declarator "auVar4 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar5 [16];" type_identifier (array_declarator "auVar5 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 uStack_10;" type_identifier identifier ;) (if_statement "if (DAT_0019d708 != 0x1949f0) {\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }" if (parenthesized_expression "(DAT_0019d708 != 0x1949f0)" ( (binary_expression "DAT_0019d708 != 0x1949f0" identifier != number_literal) )) (compound_statement "{\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }" { (expression_statement "puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);" (assignment_expression "puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" identifier = (cast_expression "(undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" identifier (argument_list "(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" ( number_literal , number_literal , number_literal , (binary_expression "param_3 & 0xffffffff" identifier & number_literal) , number_literal , (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))))) ;) (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" * identifier) = identifier) ;) (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_ = uStack_10;" (assignment_expression "auVar1._0_8_ = uStack_10" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar1 << 0x40;" return (binary_expression "auVar1 << 0x40" identifier << number_literal) ;) })) (expression_statement "uVar3 = -1L << ((byte)param_1 & 0x3f);" (assignment_expression "uVar3 = -1L << ((byte)param_1 & 0x3f)" identifier = (binary_expression "-1L << ((byte)param_1 & 0x3f)" number_literal << (parenthesized_expression "((byte)param_1 & 0x3f)" ( (binary_expression "(byte)param_1 & 0x3f" (cast_expression "(byte)param_1" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3;" (assignment_expression "auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3" (field_expression "auVar4._0_8_" identifier . field_identifier) = (binary_expression "(DAT_0019d998 + -1) - uVar3 & uVar3" (binary_expression "(DAT_0019d998 + -1) - uVar3" (parenthesized_expression "(DAT_0019d998 + -1)" ( (binary_expression "DAT_0019d998 + -1" identifier + number_literal) )) - identifier) & identifier)) ;) (if_statement "if (((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)) {\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }" if (parenthesized_expression "(((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998))" ( (binary_expression "((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)" (parenthesized_expression "((int)param_3 != 0)" ( (binary_expression "(int)param_3 != 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) && (parenthesized_expression "(auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)" ( (comma_expression "auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (assignment_expression "auVar5._8_8_ = (ulong)(int)param_3" (field_expression "auVar5._8_8_" identifier . field_identifier) = (cast_expression "(ulong)(int)param_3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) , (comma_expression "param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (assignment_expression "param_3 = auVar5._8_8_" identifier = (field_expression "auVar5._8_8_" identifier . field_identifier)) , (binary_expression "auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (field_expression "auVar5._8_8_" identifier . field_identifier) < (binary_expression "auVar4._0_8_ - DAT_0019d998" (field_expression "auVar4._0_8_" identifier . field_identifier) - identifier)))) ))) )) (compound_statement "{\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }" { (expression_statement "auVar5._0_8_ = auVar4._0_8_;" (assignment_expression "auVar5._0_8_ = auVar4._0_8_" (field_expression "auVar5._0_8_" identifier . field_identifier) = (field_expression "auVar4._0_8_" identifier . field_identifier)) ;) (return_statement "return auVar5;" return identifier ;) })) (expression_statement "DAT_0019d998 = auVar4._0_8_;" (assignment_expression "DAT_0019d998 = auVar4._0_8_" identifier = (field_expression "auVar4._0_8_" identifier . field_identifier)) ;) (expression_statement "auVar4._8_8_ = param_3;" (assignment_expression "auVar4._8_8_ = param_3" (field_expression "auVar4._8_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar4;" return identifier ;) (ERROR "}" }))
(translation_unit "void frag_align(int alignment,int fill_character,int max)\n\n{\n  char *pcVar1;\n  ulong uVar2;\n  \n  if (now_seg != (segT)(_bfd_std_section + 0x230)) {\n    pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0);\n    *pcVar1 = (char)fill_character;\n    return;\n  }\n  uVar2 = -1L << ((byte)alignment & 0x3f);\n  uVar2 = (abs_section_offset - 1) - uVar2 & uVar2;\n  if ((max != 0) && ((ulong)(long)max < uVar2 - abs_section_offset)) {\n    return;\n  }\n  abs_section_offset = uVar2;\n  return;\n}\n\n" (function_definition "void frag_align(int alignment,int fill_character,int max)\n\n{\n  char *pcVar1;\n  ulong uVar2;\n  \n  if (now_seg != (segT)(_bfd_std_section + 0x230)) {\n    pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0);\n    *pcVar1 = (char)fill_character;\n    return;\n  }\n  uVar2 = -1L << ((byte)alignment & 0x3f);\n  uVar2 = (abs_section_offset - 1) - uVar2 & uVar2;\n  if ((max != 0) && ((ulong)(long)max < uVar2 - abs_section_offset)) {\n    return;\n  }\n  abs_section_offset = uVar2;\n  return;\n}" primitive_type (function_declarator "frag_align(int alignment,int fill_character,int max)" identifier (parameter_list "(int alignment,int fill_character,int max)" ( (parameter_declaration "int alignment" primitive_type identifier) , (parameter_declaration "int fill_character" primitive_type identifier) , (parameter_declaration "int max" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  ulong uVar2;\n  \n  if (now_seg != (segT)(_bfd_std_section + 0x230)) {\n    pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0);\n    *pcVar1 = (char)fill_character;\n    return;\n  }\n  uVar2 = -1L << ((byte)alignment & 0x3f);\n  uVar2 = (abs_section_offset - 1) - uVar2 & uVar2;\n  if ((max != 0) && ((ulong)(long)max < uVar2 - abs_section_offset)) {\n    return;\n  }\n  abs_section_offset = uVar2;\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "ulong uVar2;" type_identifier identifier ;) (if_statement "if (now_seg != (segT)(_bfd_std_section + 0x230)) {\n    pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0);\n    *pcVar1 = (char)fill_character;\n    return;\n  }" if (parenthesized_expression "(now_seg != (segT)(_bfd_std_section + 0x230))" ( (binary_expression "now_seg != (segT)(_bfd_std_section + 0x230)" identifier != (call_expression "(segT)(_bfd_std_section + 0x230)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "(_bfd_std_section + 0x230)" ( (binary_expression "_bfd_std_section + 0x230" identifier + number_literal) )))) )) (compound_statement "{\n    pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0);\n    *pcVar1 = (char)fill_character;\n    return;\n  }" { (expression_statement "pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0);" (assignment_expression "pcVar1 = frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0)" identifier = (call_expression "frag_var(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0)" identifier (argument_list "(rs_align,1,1,max,(symbolS *)0x0,(long)alignment,(char *)0x0)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(long)alignment" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "*pcVar1 = (char)fill_character;" (assignment_expression "*pcVar1 = (char)fill_character" (pointer_expression "*pcVar1" * identifier) = (cast_expression "(char)fill_character" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (return_statement "return;" return ;) })) (expression_statement "uVar2 = -1L << ((byte)alignment & 0x3f);" (assignment_expression "uVar2 = -1L << ((byte)alignment & 0x3f)" identifier = (binary_expression "-1L << ((byte)alignment & 0x3f)" number_literal << (parenthesized_expression "((byte)alignment & 0x3f)" ( (binary_expression "(byte)alignment & 0x3f" (cast_expression "(byte)alignment" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar2 = (abs_section_offset - 1) - uVar2 & uVar2;" (assignment_expression "uVar2 = (abs_section_offset - 1) - uVar2 & uVar2" identifier = (binary_expression "(abs_section_offset - 1) - uVar2 & uVar2" (binary_expression "(abs_section_offset - 1) - uVar2" (parenthesized_expression "(abs_section_offset - 1)" ( (binary_expression "abs_section_offset - 1" identifier - number_literal) )) - identifier) & identifier)) ;) (if_statement "if ((max != 0) && ((ulong)(long)max < uVar2 - abs_section_offset)) {\n    return;\n  }" if (parenthesized_expression "((max != 0) && ((ulong)(long)max < uVar2 - abs_section_offset))" ( (binary_expression "(max != 0) && ((ulong)(long)max < uVar2 - abs_section_offset)" (parenthesized_expression "(max != 0)" ( (binary_expression "max != 0" identifier != number_literal) )) && (parenthesized_expression "((ulong)(long)max < uVar2 - abs_section_offset)" ( (binary_expression "(ulong)(long)max < uVar2 - abs_section_offset" (cast_expression "(ulong)(long)max" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(long)max" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < (binary_expression "uVar2 - abs_section_offset" identifier - identifier)) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "abs_section_offset = uVar2;" (assignment_expression "abs_section_offset = uVar2" identifier = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "undefined1  [16] FUN_00118d30(int param_1,undefined1 param_2,ulong param_3)\n\n{\n  undefined1 auVar1 [16];\n  undefined1 *puVar2;\n  ulong uVar3;\n  undefined1 auVar4 [16];\n  undefined1 auVar5 [16];\n  undefined8 uStack_10;\n  \n  if (DAT_0019d708 != 0x1949f0) {\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }\n  uVar3 = -1L << ((byte)param_1 & 0x3f);\n  auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3;\n  if (((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)) {\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }\n  DAT_0019d998 = auVar4._0_8_;\n  auVar4._8_8_ = param_3;\n  return auVar4;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00118d30(int param_1,undefined1 param_2,ulong param_3)\n\n{\n  undefined1 auVar1 [16];" (macro_type_specifier "FUN_00118d30(int" identifier ( (type_descriptor "int" primitive_type) )) identifier , identifier (ERROR "param_2" identifier) , (ERROR "ulong param_3)\n\n{\n  undefined1" identifier identifier ) { identifier) (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined1 auVar4 [16];" type_identifier (array_declarator "auVar4 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar5 [16];" type_identifier (array_declarator "auVar5 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 uStack_10;" type_identifier identifier ;) (if_statement "if (DAT_0019d708 != 0x1949f0) {\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }" if (parenthesized_expression "(DAT_0019d708 != 0x1949f0)" ( (binary_expression "DAT_0019d708 != 0x1949f0" identifier != number_literal) )) (compound_statement "{\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }" { (expression_statement "puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);" (assignment_expression "puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" identifier = (cast_expression "(undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" identifier (argument_list "(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" ( number_literal , number_literal , number_literal , (binary_expression "param_3 & 0xffffffff" identifier & number_literal) , number_literal , (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))))) ;) (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" * identifier) = identifier) ;) (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_ = uStack_10;" (assignment_expression "auVar1._0_8_ = uStack_10" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar1 << 0x40;" return (binary_expression "auVar1 << 0x40" identifier << number_literal) ;) })) (expression_statement "uVar3 = -1L << ((byte)param_1 & 0x3f);" (assignment_expression "uVar3 = -1L << ((byte)param_1 & 0x3f)" identifier = (binary_expression "-1L << ((byte)param_1 & 0x3f)" number_literal << (parenthesized_expression "((byte)param_1 & 0x3f)" ( (binary_expression "(byte)param_1 & 0x3f" (cast_expression "(byte)param_1" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3;" (assignment_expression "auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3" (field_expression "auVar4._0_8_" identifier . field_identifier) = (binary_expression "(DAT_0019d998 + -1) - uVar3 & uVar3" (binary_expression "(DAT_0019d998 + -1) - uVar3" (parenthesized_expression "(DAT_0019d998 + -1)" ( (binary_expression "DAT_0019d998 + -1" identifier + number_literal) )) - identifier) & identifier)) ;) (if_statement "if (((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)) {\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }" if (parenthesized_expression "(((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998))" ( (binary_expression "((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)" (parenthesized_expression "((int)param_3 != 0)" ( (binary_expression "(int)param_3 != 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) && (parenthesized_expression "(auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)" ( (comma_expression "auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (assignment_expression "auVar5._8_8_ = (ulong)(int)param_3" (field_expression "auVar5._8_8_" identifier . field_identifier) = (cast_expression "(ulong)(int)param_3" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) , (comma_expression "param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (assignment_expression "param_3 = auVar5._8_8_" identifier = (field_expression "auVar5._8_8_" identifier . field_identifier)) , (binary_expression "auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (field_expression "auVar5._8_8_" identifier . field_identifier) < (binary_expression "auVar4._0_8_ - DAT_0019d998" (field_expression "auVar4._0_8_" identifier . field_identifier) - identifier)))) ))) )) (compound_statement "{\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }" { (expression_statement "auVar5._0_8_ = auVar4._0_8_;" (assignment_expression "auVar5._0_8_ = auVar4._0_8_" (field_expression "auVar5._0_8_" identifier . field_identifier) = (field_expression "auVar4._0_8_" identifier . field_identifier)) ;) (return_statement "return auVar5;" return identifier ;) })) (expression_statement "DAT_0019d998 = auVar4._0_8_;" (assignment_expression "DAT_0019d998 = auVar4._0_8_" identifier = (field_expression "auVar4._0_8_" identifier . field_identifier)) ;) (expression_statement "auVar4._8_8_ = param_3;" (assignment_expression "auVar4._8_8_ = param_3" (field_expression "auVar4._8_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar4;" return identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , IDENT (ERROR IDENT) , (ERROR IDENT IDENT ) { IDENT) (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT , LIT , (binary_expression IDENT & LIT) , LIT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return (binary_expression IDENT << LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) , (comma_expression (assignment_expression IDENT = (field_expression IDENT . field_identifier)) , (binary_expression (field_expression IDENT . field_identifier) < (binary_expression (field_expression IDENT . field_identifier) - IDENT)))) ))) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (field_expression IDENT . field_identifier)) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_00118d30(int param_1,undefined1 param_2,ulong param_3)\n\n{\n  undefined1 auVar1 [16];" (macro_type_specifier "FUN_00118d30(int" (identifier "FUN_00118d30") (( "(") (type_descriptor "int" (primitive_type "int")) () "")) (identifier "param_1") (, ",") (identifier "undefined1") (ERROR "param_2" (identifier "param_2")) (, ",") (ERROR "ulong param_3)\n\n{\n  undefined1" (identifier "ulong") (identifier "param_3") () ")") ({ "{") (identifier "undefined1")) (array_declarator "auVar1 [16]" (identifier "auVar1") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "undefined1 auVar4 [16];" (type_identifier "undefined1") (array_declarator "auVar4 [16]" (identifier "auVar4") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar5 [16];" (type_identifier "undefined1") (array_declarator "auVar5 [16]" (identifier "auVar5") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 uStack_10;" (type_identifier "undefined8") (identifier "uStack_10") (; ";")) (if_statement "if (DAT_0019d708 != 0x1949f0) {\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }" (if "if") (parenthesized_expression "(DAT_0019d708 != 0x1949f0)" (( "(") (binary_expression "DAT_0019d708 != 0x1949f0" (identifier "DAT_0019d708") (!= "!=") (number_literal "0x1949f0")) () ")")) (compound_statement "{\n    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);\n    *puVar2 = param_2;\n    auVar1._8_8_ = 0;\n    auVar1._0_8_ = uStack_10;\n    return auVar1 << 0x40;\n  }" ({ "{") (expression_statement "puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);" (assignment_expression "puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" (identifier "FUN_00118c00") (argument_list "(2,1,1,param_3 & 0xffffffff,0,(long)param_1)" (( "(") (number_literal "2") (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (binary_expression "param_3 & 0xffffffff" (identifier "param_3") (& "&") (number_literal "0xffffffff")) (, ",") (number_literal "0") (, ",") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) () ")"))))) (; ";")) (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "param_2")) (; ";")) (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_ = uStack_10;" (assignment_expression "auVar1._0_8_ = uStack_10" (field_expression "auVar1._0_8_" (identifier "auVar1") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uStack_10")) (; ";")) (return_statement "return auVar1 << 0x40;" (return "return") (binary_expression "auVar1 << 0x40" (identifier "auVar1") (<< "<<") (number_literal "0x40")) (; ";")) (} "}"))) (expression_statement "uVar3 = -1L << ((byte)param_1 & 0x3f);" (assignment_expression "uVar3 = -1L << ((byte)param_1 & 0x3f)" (identifier "uVar3") (= "=") (binary_expression "-1L << ((byte)param_1 & 0x3f)" (number_literal "-1L") (<< "<<") (parenthesized_expression "((byte)param_1 & 0x3f)" (( "(") (binary_expression "(byte)param_1 & 0x3f" (cast_expression "(byte)param_1" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_1")) (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3;" (assignment_expression "auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3" (field_expression "auVar4._0_8_" (identifier "auVar4") (. ".") (field_identifier "_0_8_")) (= "=") (binary_expression "(DAT_0019d998 + -1) - uVar3 & uVar3" (binary_expression "(DAT_0019d998 + -1) - uVar3" (parenthesized_expression "(DAT_0019d998 + -1)" (( "(") (binary_expression "DAT_0019d998 + -1" (identifier "DAT_0019d998") (+ "+") (number_literal "-1")) () ")")) (- "-") (identifier "uVar3")) (& "&") (identifier "uVar3"))) (; ";")) (if_statement "if (((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)) {\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }" (if "if") (parenthesized_expression "(((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998))" (( "(") (binary_expression "((int)param_3 != 0) &&\n     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)" (parenthesized_expression "((int)param_3 != 0)" (( "(") (binary_expression "(int)param_3 != 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)" (( "(") (comma_expression "auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (assignment_expression "auVar5._8_8_ = (ulong)(int)param_3" (field_expression "auVar5._8_8_" (identifier "auVar5") (. ".") (field_identifier "_8_8_")) (= "=") (cast_expression "(ulong)(int)param_3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (, ",") (comma_expression "param_3 = auVar5._8_8_,\n     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (assignment_expression "param_3 = auVar5._8_8_" (identifier "param_3") (= "=") (field_expression "auVar5._8_8_" (identifier "auVar5") (. ".") (field_identifier "_8_8_"))) (, ",") (binary_expression "auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998" (field_expression "auVar5._8_8_" (identifier "auVar5") (. ".") (field_identifier "_8_8_")) (< "<") (binary_expression "auVar4._0_8_ - DAT_0019d998" (field_expression "auVar4._0_8_" (identifier "auVar4") (. ".") (field_identifier "_0_8_")) (- "-") (identifier "DAT_0019d998"))))) () ")"))) () ")")) (compound_statement "{\n    auVar5._0_8_ = auVar4._0_8_;\n    return auVar5;\n  }" ({ "{") (expression_statement "auVar5._0_8_ = auVar4._0_8_;" (assignment_expression "auVar5._0_8_ = auVar4._0_8_" (field_expression "auVar5._0_8_" (identifier "auVar5") (. ".") (field_identifier "_0_8_")) (= "=") (field_expression "auVar4._0_8_" (identifier "auVar4") (. ".") (field_identifier "_0_8_"))) (; ";")) (return_statement "return auVar5;" (return "return") (identifier "auVar5") (; ";")) (} "}"))) (expression_statement "DAT_0019d998 = auVar4._0_8_;" (assignment_expression "DAT_0019d998 = auVar4._0_8_" (identifier "DAT_0019d998") (= "=") (field_expression "auVar4._0_8_" (identifier "auVar4") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "auVar4._8_8_ = param_3;" (assignment_expression "auVar4._8_8_ = param_3" (field_expression "auVar4._8_8_" (identifier "auVar4") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "param_3")) (; ";")) (return_statement "return auVar4;" (return "return") (identifier "auVar4") (; ";")) (ERROR "}" (} "}"))

void function_1(int alignment,int fill_character,int var_6)

{
  char *pcVar1;
  type_1 var_5;
  
  if (var_1 != (segT)(var_2 + 0x230)) {
    pcVar1 = var_3(rs_align,1,1,var_6,(type_2 *)0x0,(long)alignment,(char *)0x0);
    *pcVar1 = (char)fill_character;
    return;
  }
  var_5 = -1L << ((type_3)alignment & 0x3f);
  var_5 = (var_4 - 1) - var_5 & var_5;
  if ((var_6 != 0) && ((type_1)(long)var_6 < var_5 - var_4)) {
    return;
  }
  var_4 = var_5;
  return;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (declaration type: (macro_type_specifier name: (identifier) type: (type_descriptor type: (primitive_type)) (MISSING ")")) declarator: (identifier) declarator: (identifier) (ERROR (identifier)) (ERROR (identifier) (identifier) (identifier)) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (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)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (identifier))) (return_statement (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (comma_expression left: (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier))) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (field_expression argument: (identifier) field: (field_identifier)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier)) (ERROR))

undefined1  [16] MASKED(int param_1,undefined1 param_2,ulong param_3)

{
  undefined1 auVar1 [16];
  undefined1 *puVar2;
  ulong uVar3;
  undefined1 auVar4 [16];
  undefined1 auVar5 [16];
  undefined8 uStack_10;
  
  if (DAT_0019d708 != 0x1949f0) {
    puVar2 = (undefined1 *)FUN_00118c00(2,1,1,param_3 & 0xffffffff,0,(long)param_1);
    *puVar2 = param_2;
    auVar1._8_8_ = 0;
    auVar1._0_8_ = uStack_10;
    return auVar1 << 0x40;
  }
  uVar3 = -1L << ((byte)param_1 & 0x3f);
  auVar4._0_8_ = (DAT_0019d998 + -1) - uVar3 & uVar3;
  if (((int)param_3 != 0) &&
     (auVar5._8_8_ = (ulong)(int)param_3, param_3 = auVar5._8_8_,
     auVar5._8_8_ < auVar4._0_8_ - DAT_0019d998)) {
    auVar5._0_8_ = auVar4._0_8_;
    return auVar5;
  }
  DAT_0019d998 = auVar4._0_8_;
  auVar4._8_8_ = param_3;
  return auVar4;
}

