
symbolS * s_lcomm_internal(int needs_align,symbolS *symbolP,addressT size)

{
  uint align;
  offsetT oVar1;
  
  if (needs_align == 0) {
    align = 3;
    if ((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&
       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)) {
      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));
    }
  }
  else {
    oVar1 = parse_align(needs_align + -1);
    align = (uint)oVar1;
    if (oVar1 == -1) {
      return (symbolS *)0x0;
    }
  }
  bss_alloc(symbolP,size,align);
  return symbolP;
}



undefined4 FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)

{
  uint uVar1;
  longlong lVar2;
  
  if (param_1 == 0) {
    uVar1 = 3;
    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&
       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {
      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));
    }
  }
  else {
    lVar2 = FUN_0002b8d0(param_1 + -1);
    uVar1 = (uint)lVar2;
    if (lVar2 == -1) {
      return 0;
    }
  }
  FUN_0002b300(param_2,param_3,param_4,uVar1);
  return param_2;
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV EDX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [ESP + 0x1c]
TEST EDX,EDX
JNZ 0x0002ba50
MOV EAX,0x7
CMP EAX,ESI
MOV EAX,EDX
SBB EAX,EDI
MOV EAX,0x3
JNC 0x0002ba30
PUSH EAX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0002b300
ADD ESP,0x10
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
RET
CMP EAX,ESI
MOV EAX,EDX
SBB EAX,EDI
MOV EAX,0x2
JC 0x0002ba19
MOV EAX,0x1
CMP EAX,ESI
SBB EDX,EDI
SETC AL
MOVZX EAX,AL
JMP 0x0002ba19
SUB ESP,0xc
SUB EDX,0x1
PUSH EDX
CALL 0x0002b8d0
ADD ESP,0x10
AND EDX,EAX
CMP EDX,-0x1
JNZ 0x0002ba19
XOR EAX,EAX
JMP 0x0002ba27
(translation_unit "undefined4 FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)\n\n{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}\n\n" (function_definition "undefined4 FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)\n\n{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}" type_identifier (function_declarator "FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,uint param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }" { (expression_statement "uVar1 = 3;" (assignment_expression "uVar1 = 3" identifier = number_literal) ;) (if_statement "if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }" if (parenthesized_expression "((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4))" ( (binary_expression "(param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)" (parenthesized_expression "(param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4)" ( (binary_expression "param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4" (binary_expression "param_4 == 0" identifier == number_literal) && (binary_expression "(uint)(7 < param_3) <= (uint)-param_4" (call_expression "(uint)(7 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(7 < param_3)" ( (binary_expression "7 < param_3" number_literal < identifier) ))) <= (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) && (parenthesized_expression "(uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)" ( (comma_expression "uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4" (assignment_expression "uVar1 = 2" identifier = number_literal) , (binary_expression "param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4" (binary_expression "param_4 == 0" identifier == number_literal) && (binary_expression "(uint)(3 < param_3) <= (uint)-param_4" (call_expression "(uint)(3 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < param_3)" ( (binary_expression "3 < param_3" number_literal < identifier) ))) <= (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" ( identifier )) - identifier)))) ))) )) (compound_statement "{\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }" { (expression_statement "uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));" (assignment_expression "uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" identifier = (call_expression "(uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" ( (binary_expression "param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3)" (binary_expression "param_4 != 0" identifier != number_literal) || (binary_expression "(uint)-param_4 < (uint)(1 < param_3)" (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(1 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < param_3)" ( (binary_expression "1 < param_3" number_literal < identifier) ))))) )))) ;) })) }) (else_clause "else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" { (expression_statement "lVar2 = FUN_0002b8d0(param_1 + -1);" (assignment_expression "lVar2 = FUN_0002b8d0(param_1 + -1)" identifier = (call_expression "FUN_0002b8d0(param_1 + -1)" identifier (argument_list "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )))) ;) (expression_statement "uVar1 = (uint)lVar2;" (assignment_expression "uVar1 = (uint)lVar2" identifier = (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (lVar2 == -1) {\n      return 0;\n    }" if (parenthesized_expression "(lVar2 == -1)" ( (binary_expression "lVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "FUN_0002b300(param_2,param_3,param_4,uVar1);" (call_expression "FUN_0002b300(param_2,param_3,param_4,uVar1)" identifier (argument_list "(param_2,param_3,param_4,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return param_2;" return identifier ;) })))
(translation_unit "symbolS * s_lcomm_internal(int needs_align,symbolS *symbolP,addressT size)\n\n{\n  uint align;\n  offsetT oVar1;\n  \n  if (needs_align == 0) {\n    align = 3;\n    if ((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)) {\n      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));\n    }\n  }\n  else {\n    oVar1 = parse_align(needs_align + -1);\n    align = (uint)oVar1;\n    if (oVar1 == -1) {\n      return (symbolS *)0x0;\n    }\n  }\n  bss_alloc(symbolP,size,align);\n  return symbolP;\n}\n\n" (function_definition "symbolS * s_lcomm_internal(int needs_align,symbolS *symbolP,addressT size)\n\n{\n  uint align;\n  offsetT oVar1;\n  \n  if (needs_align == 0) {\n    align = 3;\n    if ((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)) {\n      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));\n    }\n  }\n  else {\n    oVar1 = parse_align(needs_align + -1);\n    align = (uint)oVar1;\n    if (oVar1 == -1) {\n      return (symbolS *)0x0;\n    }\n  }\n  bss_alloc(symbolP,size,align);\n  return symbolP;\n}" type_identifier (pointer_declarator "* s_lcomm_internal(int needs_align,symbolS *symbolP,addressT size)" * (function_declarator "s_lcomm_internal(int needs_align,symbolS *symbolP,addressT size)" identifier (parameter_list "(int needs_align,symbolS *symbolP,addressT size)" ( (parameter_declaration "int needs_align" primitive_type identifier) , (parameter_declaration "symbolS *symbolP" type_identifier (pointer_declarator "*symbolP" * identifier)) , (parameter_declaration "addressT size" type_identifier identifier) )))) (compound_statement "{\n  uint align;\n  offsetT oVar1;\n  \n  if (needs_align == 0) {\n    align = 3;\n    if ((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)) {\n      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));\n    }\n  }\n  else {\n    oVar1 = parse_align(needs_align + -1);\n    align = (uint)oVar1;\n    if (oVar1 == -1) {\n      return (symbolS *)0x0;\n    }\n  }\n  bss_alloc(symbolP,size,align);\n  return symbolP;\n}" { (declaration "uint align;" type_identifier identifier ;) (declaration "offsetT oVar1;" type_identifier identifier ;) (if_statement "if (needs_align == 0) {\n    align = 3;\n    if ((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)) {\n      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));\n    }\n  }\n  else {\n    oVar1 = parse_align(needs_align + -1);\n    align = (uint)oVar1;\n    if (oVar1 == -1) {\n      return (symbolS *)0x0;\n    }\n  }" if (parenthesized_expression "(needs_align == 0)" ( (binary_expression "needs_align == 0" identifier == number_literal) )) (compound_statement "{\n    align = 3;\n    if ((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)) {\n      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));\n    }\n  }" { (expression_statement "align = 3;" (assignment_expression "align = 3" identifier = number_literal) ;) (if_statement "if ((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)) {\n      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));\n    }" if (parenthesized_expression "((size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_))" ( (binary_expression "(size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_) &&\n       (align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)" (parenthesized_expression "(size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_)" ( (binary_expression "size._4_4_ == 0 && (uint)(7 < (uint)size) <= (uint)-size._4_4_" (binary_expression "size._4_4_ == 0" (field_expression "size._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)(7 < (uint)size) <= (uint)-size._4_4_" (call_expression "(uint)(7 < (uint)size)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(7 < (uint)size)" ( (binary_expression "7 < (uint)size" number_literal < (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) <= (binary_expression "(uint)-size._4_4_" (parenthesized_expression "(uint)" ( identifier )) - (field_expression "size._4_4_" identifier . field_identifier)))) )) && (parenthesized_expression "(align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_)" ( (comma_expression "align = 2, size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_" (assignment_expression "align = 2" identifier = number_literal) , (binary_expression "size._4_4_ == 0 && (uint)(3 < (uint)size) <= (uint)-size._4_4_" (binary_expression "size._4_4_ == 0" (field_expression "size._4_4_" identifier . field_identifier) == number_literal) && (binary_expression "(uint)(3 < (uint)size) <= (uint)-size._4_4_" (call_expression "(uint)(3 < (uint)size)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < (uint)size)" ( (binary_expression "3 < (uint)size" number_literal < (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) <= (binary_expression "(uint)-size._4_4_" (parenthesized_expression "(uint)" ( identifier )) - (field_expression "size._4_4_" identifier . field_identifier))))) ))) )) (compound_statement "{\n      align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));\n    }" { (expression_statement "align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size));" (assignment_expression "align = (uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size))" identifier = (call_expression "(uint)(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size))" ( (binary_expression "size._4_4_ != 0 || (uint)-size._4_4_ < (uint)(1 < (uint)size)" (binary_expression "size._4_4_ != 0" (field_expression "size._4_4_" identifier . field_identifier) != number_literal) || (binary_expression "(uint)-size._4_4_ < (uint)(1 < (uint)size)" (binary_expression "(uint)-size._4_4_" (parenthesized_expression "(uint)" ( identifier )) - (field_expression "size._4_4_" identifier . field_identifier)) < (call_expression "(uint)(1 < (uint)size)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < (uint)size)" ( (binary_expression "1 < (uint)size" number_literal < (cast_expression "(uint)size" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )))) ;) })) }) (else_clause "else {\n    oVar1 = parse_align(needs_align + -1);\n    align = (uint)oVar1;\n    if (oVar1 == -1) {\n      return (symbolS *)0x0;\n    }\n  }" else (compound_statement "{\n    oVar1 = parse_align(needs_align + -1);\n    align = (uint)oVar1;\n    if (oVar1 == -1) {\n      return (symbolS *)0x0;\n    }\n  }" { (expression_statement "oVar1 = parse_align(needs_align + -1);" (assignment_expression "oVar1 = parse_align(needs_align + -1)" identifier = (call_expression "parse_align(needs_align + -1)" identifier (argument_list "(needs_align + -1)" ( (binary_expression "needs_align + -1" identifier + number_literal) )))) ;) (expression_statement "align = (uint)oVar1;" (assignment_expression "align = (uint)oVar1" identifier = (cast_expression "(uint)oVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (oVar1 == -1) {\n      return (symbolS *)0x0;\n    }" if (parenthesized_expression "(oVar1 == -1)" ( (binary_expression "oVar1 == -1" identifier == number_literal) )) (compound_statement "{\n      return (symbolS *)0x0;\n    }" { (return_statement "return (symbolS *)0x0;" return (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))) (expression_statement "bss_alloc(symbolP,size,align);" (call_expression "bss_alloc(symbolP,size,align)" identifier (argument_list "(symbolP,size,align)" ( identifier , identifier , identifier ))) ;) (return_statement "return symbolP;" return identifier ;) })))
(translation_unit "undefined4 FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)\n\n{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}\n\n" (function_definition "undefined4 FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)\n\n{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}" type_identifier (function_declarator "FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,uint param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (if_statement "if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }" { (expression_statement "uVar1 = 3;" (assignment_expression "uVar1 = 3" identifier = number_literal) ;) (if_statement "if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }" if (parenthesized_expression "((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4))" ( (binary_expression "(param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)" (parenthesized_expression "(param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4)" ( (binary_expression "param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4" (binary_expression "param_4 == 0" identifier == number_literal) && (binary_expression "(uint)(7 < param_3) <= (uint)-param_4" (call_expression "(uint)(7 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(7 < param_3)" ( (binary_expression "7 < param_3" number_literal < identifier) ))) <= (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) && (parenthesized_expression "(uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)" ( (comma_expression "uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4" (assignment_expression "uVar1 = 2" identifier = number_literal) , (binary_expression "param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4" (binary_expression "param_4 == 0" identifier == number_literal) && (binary_expression "(uint)(3 < param_3) <= (uint)-param_4" (call_expression "(uint)(3 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < param_3)" ( (binary_expression "3 < param_3" number_literal < identifier) ))) <= (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" ( identifier )) - identifier)))) ))) )) (compound_statement "{\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }" { (expression_statement "uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));" (assignment_expression "uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" identifier = (call_expression "(uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" ( (binary_expression "param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3)" (binary_expression "param_4 != 0" identifier != number_literal) || (binary_expression "(uint)-param_4 < (uint)(1 < param_3)" (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(1 < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < param_3)" ( (binary_expression "1 < param_3" number_literal < identifier) ))))) )))) ;) })) }) (else_clause "else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" { (expression_statement "lVar2 = FUN_0002b8d0(param_1 + -1);" (assignment_expression "lVar2 = FUN_0002b8d0(param_1 + -1)" identifier = (call_expression "FUN_0002b8d0(param_1 + -1)" identifier (argument_list "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )))) ;) (expression_statement "uVar1 = (uint)lVar2;" (assignment_expression "uVar1 = (uint)lVar2" identifier = (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (lVar2 == -1) {\n      return 0;\n    }" if (parenthesized_expression "(lVar2 == -1)" ( (binary_expression "lVar2 == -1" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "FUN_0002b300(param_2,param_3,param_4,uVar1);" (call_expression "FUN_0002b300(param_2,param_3,param_4,uVar1)" identifier (argument_list "(param_2,param_3,param_4,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) (return_statement "return param_2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - IDENT))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression IDENT == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - IDENT)))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression (binary_expression (parenthesized_expression ( IDENT )) - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)\n\n{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}" (type_identifier "undefined4") (function_declarator "FUN_0002b9f0(int param_1,undefined4 param_2,uint param_3,int param_4)" (identifier "FUN_0002b9f0") (parameter_list "(int param_1,undefined4 param_2,uint param_3,int param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  uint uVar1;\n  longlong lVar2;\n  \n  if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }\n  FUN_0002b300(param_2,param_3,param_4,uVar1);\n  return param_2;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (if_statement "if (param_1 == 0) {\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }\n  else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = 3;\n    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }\n  }" ({ "{") (expression_statement "uVar1 = 3;" (assignment_expression "uVar1 = 3" (identifier "uVar1") (= "=") (number_literal "3")) (; ";")) (if_statement "if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }" (if "if") (parenthesized_expression "((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4))" (( "(") (binary_expression "(param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&\n       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)" (parenthesized_expression "(param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4)" (( "(") (binary_expression "param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4" (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(7 < param_3) <= (uint)-param_4" (call_expression "(uint)(7 < param_3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(7 < param_3)" (( "(") (binary_expression "7 < param_3" (number_literal "7") (< "<") (identifier "param_3")) () ")"))) (<= "<=") (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "param_4")))) () ")")) (&& "&&") (parenthesized_expression "(uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)" (( "(") (comma_expression "uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4" (assignment_expression "uVar1 = 2" (identifier "uVar1") (= "=") (number_literal "2")) (, ",") (binary_expression "param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4" (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(3 < param_3) <= (uint)-param_4" (call_expression "(uint)(3 < param_3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(3 < param_3)" (( "(") (binary_expression "3 < param_3" (number_literal "3") (< "<") (identifier "param_3")) () ")"))) (<= "<=") (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "param_4"))))) () ")"))) () ")")) (compound_statement "{\n      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));\n    }" ({ "{") (expression_statement "uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));" (assignment_expression "uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" (identifier "uVar1") (= "=") (call_expression "(uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3))" (( "(") (binary_expression "param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3)" (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uint)-param_4 < (uint)(1 < param_3)" (binary_expression "(uint)-param_4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "param_4")) (< "<") (call_expression "(uint)(1 < param_3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(1 < param_3)" (( "(") (binary_expression "1 < param_3" (number_literal "1") (< "<") (identifier "param_3")) () ")"))))) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" (else "else") (compound_statement "{\n    lVar2 = FUN_0002b8d0(param_1 + -1);\n    uVar1 = (uint)lVar2;\n    if (lVar2 == -1) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "lVar2 = FUN_0002b8d0(param_1 + -1);" (assignment_expression "lVar2 = FUN_0002b8d0(param_1 + -1)" (identifier "lVar2") (= "=") (call_expression "FUN_0002b8d0(param_1 + -1)" (identifier "FUN_0002b8d0") (argument_list "(param_1 + -1)" (( "(") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar1 = (uint)lVar2;" (assignment_expression "uVar1 = (uint)lVar2" (identifier "uVar1") (= "=") (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2"))) (; ";")) (if_statement "if (lVar2 == -1) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(lVar2 == -1)" (( "(") (binary_expression "lVar2 == -1" (identifier "lVar2") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0002b300(param_2,param_3,param_4,uVar1);" (call_expression "FUN_0002b300(param_2,param_3,param_4,uVar1)" (identifier "FUN_0002b300") (argument_list "(param_2,param_3,param_4,uVar1)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "uVar1") () ")"))) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}")))

type_1 * function_1(int var_1,type_1 *symbolP,type_2 size)

{
  type_3 align;
  type_4 var_3;
  
  if (var_1 == 0) {
    align = 3;
    if ((size._4_4_ == 0 && (type_3)(7 < (type_3)size) <= (type_3)-size._4_4_) &&
       (align = 2, size._4_4_ == 0 && (type_3)(3 < (type_3)size) <= (type_3)-size._4_4_)) {
      align = (type_3)(size._4_4_ != 0 || (type_3)-size._4_4_ < (type_3)(1 < (type_3)size));
    }
  }
  else {
    var_3 = var_2(var_1 + -1);
    align = (type_3)var_3;
    if (var_3 == -1) {
      return (type_1 *)0x0;
    }
  }
  var_4(symbolP,size,align);
  return symbolP;
}


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

undefined4 MASKED(int param_1,undefined4 param_2,uint param_3,int param_4)

{
  uint uVar1;
  longlong lVar2;
  
  if (param_1 == 0) {
    uVar1 = 3;
    if ((param_4 == 0 && (uint)(7 < param_3) <= (uint)-param_4) &&
       (uVar1 = 2, param_4 == 0 && (uint)(3 < param_3) <= (uint)-param_4)) {
      uVar1 = (uint)(param_4 != 0 || (uint)-param_4 < (uint)(1 < param_3));
    }
  }
  else {
    lVar2 = FUN_0002b8d0(param_1 + -1);
    uVar1 = (uint)lVar2;
    if (lVar2 == -1) {
      return 0;
    }
  }
  FUN_0002b300(param_2,param_3,param_4,uVar1);
  return param_2;
}

