
int gmon_io_read_vma(FILE *ifp,bfd_vma *valp)

{
  gmon_ptr_size gVar1;
  int iVar2;
  ulong val64;
  
  gVar1 = gmon_get_ptr_size();
  if (gVar1 == ptr_32bit) {
    iVar2 = gmon_io_read_32(ifp,(uint *)&val64);
    if (iVar2 == 0) {
      iVar2 = bfd_get_sign_extend_vma(core_bfd);
      if (iVar2 + 1U < 2) {
        *valp = (ulong)(uint)val64;
        return 0;
      }
      *valp = (long)(int)(uint)val64;
      return 0;
    }
  }
  else {
    if (gVar1 != ptr_64bit) {
      return 0;
    }
    iVar2 = gmon_io_read_64(ifp,&val64);
    if (iVar2 == 0) {
      bfd_get_sign_extend_vma(core_bfd);
      *valp = CONCAT44(val64._4_4_,(uint)val64);
      return 0;
    }
  }
  return 1;
}



undefined4 FUN_00109550(undefined8 param_1,ulong *param_2)

{
  int iVar1;
  uint local_20;
  undefined4 uStack_1c;
  
  iVar1 = FUN_00109420();
  if (iVar1 == 0) {
    iVar1 = FUN_00109500(param_1,&local_20);
    if (iVar1 == 0) {
      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);
      if (iVar1 + 1U < 2) {
        *param_2 = (ulong)local_20;
        return 0;
      }
      *param_2 = (long)(int)local_20;
      return 0;
    }
  }
  else {
    if (iVar1 != 1) {
      return 0;
    }
    iVar1 = FUN_001093d0(param_1,&local_20);
    if (iVar1 == 0) {
      bfd_get_sign_extend_vma(DAT_00119ad8);
      *param_2 = CONCAT44(uStack_1c,local_20);
      return 0;
    }
  }
  return 1;
}


PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RDI
SUB RSP,0x18
CALL 0x00109420
TEST EAX,EAX
JZ 0x001095a0
CMP EAX,0x1
JNZ 0x00109590
MOV RDI,RBX
LEA RSI,[RSP + 0x8]
CALL 0x001093d0
MOV EBX,EAX
TEST EAX,EAX
JZ 0x001095d8
MOV EBX,0x1
ADD RSP,0x18
MOV EAX,EBX
POP RBX
POP RBP
RET
XOR EBX,EBX
ADD RSP,0x18
MOV EAX,EBX
POP RBX
POP RBP
RET
MOV RDI,RBX
LEA RSI,[RSP + 0x8]
CALL 0x00109500
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x0010957d
MOV RDI,qword ptr [0x00119ad8]
CALL 0x00102390
ADD EAX,0x1
CMP EAX,0x1
JA 0x00109600
MOV EAX,dword ptr [RSP + 0x8]
MOV qword ptr [RBP],RAX
JMP 0x00109592
MOV RDI,qword ptr [0x00119ad8]
CALL 0x00102390
MOV RAX,qword ptr [RSP + 0x8]
MOV qword ptr [RBP],RAX
ADD RSP,0x18
MOV EAX,EBX
POP RBX
POP RBP
RET
MOVSXD RAX,dword ptr [RSP + 0x8]
MOV qword ptr [RBP],RAX
JMP 0x00109592
(translation_unit "undefined4 FUN_00109550(undefined8 param_1,ulong *param_2)\n\n{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00109550(undefined8 param_1,ulong *param_2)\n\n{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00109550(undefined8 param_1,ulong *param_2)" identifier (parameter_list "(undefined8 param_1,ulong *param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (expression_statement "iVar1 = FUN_00109420();" (assignment_expression "iVar1 = FUN_00109420()" identifier = (call_expression "FUN_00109420()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = FUN_00109500(param_1,&local_20);" (assignment_expression "iVar1 = FUN_00109500(param_1,&local_20)" identifier = (call_expression "FUN_00109500(param_1,&local_20)" identifier (argument_list "(param_1,&local_20)" ( identifier , (pointer_expression "&local_20" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }" { (expression_statement "iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);" (assignment_expression "iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8)" identifier = (call_expression "bfd_get_sign_extend_vma(DAT_00119ad8)" identifier (argument_list "(DAT_00119ad8)" ( identifier )))) ;) (if_statement "if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }" if (parenthesized_expression "(iVar1 + 1U < 2)" ( (binary_expression "iVar1 + 1U < 2" (binary_expression "iVar1 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        *param_2 = (ulong)local_20;\n        return 0;\n      }" { (expression_statement "*param_2 = (ulong)local_20;" (assignment_expression "*param_2 = (ulong)local_20" (pointer_expression "*param_2" * identifier) = (cast_expression "(ulong)local_20" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (long)(int)local_20;" (assignment_expression "*param_2 = (long)(int)local_20" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(int)local_20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" else (compound_statement "{\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" { (if_statement "if (iVar1 != 1) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 != 1)" ( (binary_expression "iVar1 != 1" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_001093d0(param_1,&local_20);" (assignment_expression "iVar1 = FUN_001093d0(param_1,&local_20)" identifier = (call_expression "FUN_001093d0(param_1,&local_20)" identifier (argument_list "(param_1,&local_20)" ( identifier , (pointer_expression "&local_20" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }" { (expression_statement "bfd_get_sign_extend_vma(DAT_00119ad8);" (call_expression "bfd_get_sign_extend_vma(DAT_00119ad8)" identifier (argument_list "(DAT_00119ad8)" ( identifier ))) ;) (expression_statement "*param_2 = CONCAT44(uStack_1c,local_20);" (assignment_expression "*param_2 = CONCAT44(uStack_1c,local_20)" (pointer_expression "*param_2" * identifier) = (call_expression "CONCAT44(uStack_1c,local_20)" identifier (argument_list "(uStack_1c,local_20)" ( identifier , identifier )))) ;) (return_statement "return 0;" return number_literal ;) })) }))) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "int gmon_io_read_vma(FILE *ifp,bfd_vma *valp)\n\n{\n  gmon_ptr_size gVar1;\n  int iVar2;\n  ulong val64;\n  \n  gVar1 = gmon_get_ptr_size();\n  if (gVar1 == ptr_32bit) {\n    iVar2 = gmon_io_read_32(ifp,(uint *)&val64);\n    if (iVar2 == 0) {\n      iVar2 = bfd_get_sign_extend_vma(core_bfd);\n      if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }\n      *valp = (long)(int)(uint)val64;\n      return 0;\n    }\n  }\n  else {\n    if (gVar1 != ptr_64bit) {\n      return 0;\n    }\n    iVar2 = gmon_io_read_64(ifp,&val64);\n    if (iVar2 == 0) {\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }\n  }\n  return 1;\n}\n\n" (function_definition "int gmon_io_read_vma(FILE *ifp,bfd_vma *valp)\n\n{\n  gmon_ptr_size gVar1;\n  int iVar2;\n  ulong val64;\n  \n  gVar1 = gmon_get_ptr_size();\n  if (gVar1 == ptr_32bit) {\n    iVar2 = gmon_io_read_32(ifp,(uint *)&val64);\n    if (iVar2 == 0) {\n      iVar2 = bfd_get_sign_extend_vma(core_bfd);\n      if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }\n      *valp = (long)(int)(uint)val64;\n      return 0;\n    }\n  }\n  else {\n    if (gVar1 != ptr_64bit) {\n      return 0;\n    }\n    iVar2 = gmon_io_read_64(ifp,&val64);\n    if (iVar2 == 0) {\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }\n  }\n  return 1;\n}" primitive_type (function_declarator "gmon_io_read_vma(FILE *ifp,bfd_vma *valp)" identifier (parameter_list "(FILE *ifp,bfd_vma *valp)" ( (parameter_declaration "FILE *ifp" type_identifier (pointer_declarator "*ifp" * identifier)) , (parameter_declaration "bfd_vma *valp" type_identifier (pointer_declarator "*valp" * identifier)) ))) (compound_statement "{\n  gmon_ptr_size gVar1;\n  int iVar2;\n  ulong val64;\n  \n  gVar1 = gmon_get_ptr_size();\n  if (gVar1 == ptr_32bit) {\n    iVar2 = gmon_io_read_32(ifp,(uint *)&val64);\n    if (iVar2 == 0) {\n      iVar2 = bfd_get_sign_extend_vma(core_bfd);\n      if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }\n      *valp = (long)(int)(uint)val64;\n      return 0;\n    }\n  }\n  else {\n    if (gVar1 != ptr_64bit) {\n      return 0;\n    }\n    iVar2 = gmon_io_read_64(ifp,&val64);\n    if (iVar2 == 0) {\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }\n  }\n  return 1;\n}" { (declaration "gmon_ptr_size gVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ulong val64;" type_identifier identifier ;) (expression_statement "gVar1 = gmon_get_ptr_size();" (assignment_expression "gVar1 = gmon_get_ptr_size()" identifier = (call_expression "gmon_get_ptr_size()" identifier (argument_list "()" ( )))) ;) (if_statement "if (gVar1 == ptr_32bit) {\n    iVar2 = gmon_io_read_32(ifp,(uint *)&val64);\n    if (iVar2 == 0) {\n      iVar2 = bfd_get_sign_extend_vma(core_bfd);\n      if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }\n      *valp = (long)(int)(uint)val64;\n      return 0;\n    }\n  }\n  else {\n    if (gVar1 != ptr_64bit) {\n      return 0;\n    }\n    iVar2 = gmon_io_read_64(ifp,&val64);\n    if (iVar2 == 0) {\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }\n  }" if (parenthesized_expression "(gVar1 == ptr_32bit)" ( (binary_expression "gVar1 == ptr_32bit" identifier == identifier) )) (compound_statement "{\n    iVar2 = gmon_io_read_32(ifp,(uint *)&val64);\n    if (iVar2 == 0) {\n      iVar2 = bfd_get_sign_extend_vma(core_bfd);\n      if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }\n      *valp = (long)(int)(uint)val64;\n      return 0;\n    }\n  }" { (expression_statement "iVar2 = gmon_io_read_32(ifp,(uint *)&val64);" (assignment_expression "iVar2 = gmon_io_read_32(ifp,(uint *)&val64)" identifier = (call_expression "gmon_io_read_32(ifp,(uint *)&val64)" identifier (argument_list "(ifp,(uint *)&val64)" ( identifier , (cast_expression "(uint *)&val64" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&val64" & identifier)) )))) ;) (if_statement "if (iVar2 == 0) {\n      iVar2 = bfd_get_sign_extend_vma(core_bfd);\n      if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }\n      *valp = (long)(int)(uint)val64;\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = bfd_get_sign_extend_vma(core_bfd);\n      if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }\n      *valp = (long)(int)(uint)val64;\n      return 0;\n    }" { (expression_statement "iVar2 = bfd_get_sign_extend_vma(core_bfd);" (assignment_expression "iVar2 = bfd_get_sign_extend_vma(core_bfd)" identifier = (call_expression "bfd_get_sign_extend_vma(core_bfd)" identifier (argument_list "(core_bfd)" ( identifier )))) ;) (if_statement "if (iVar2 + 1U < 2) {\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }" if (parenthesized_expression "(iVar2 + 1U < 2)" ( (binary_expression "iVar2 + 1U < 2" (binary_expression "iVar2 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        *valp = (ulong)(uint)val64;\n        return 0;\n      }" { (expression_statement "*valp = (ulong)(uint)val64;" (assignment_expression "*valp = (ulong)(uint)val64" (pointer_expression "*valp" * identifier) = (cast_expression "(ulong)(uint)val64" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)val64" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*valp = (long)(int)(uint)val64;" (assignment_expression "*valp = (long)(int)(uint)val64" (pointer_expression "*valp" * identifier) = (cast_expression "(long)(int)(uint)val64" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(uint)val64" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)val64" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;) (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (gVar1 != ptr_64bit) {\n      return 0;\n    }\n    iVar2 = gmon_io_read_64(ifp,&val64);\n    if (iVar2 == 0) {\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }\n  }" else (compound_statement "{\n    if (gVar1 != ptr_64bit) {\n      return 0;\n    }\n    iVar2 = gmon_io_read_64(ifp,&val64);\n    if (iVar2 == 0) {\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }\n  }" { (if_statement "if (gVar1 != ptr_64bit) {\n      return 0;\n    }" if (parenthesized_expression "(gVar1 != ptr_64bit)" ( (binary_expression "gVar1 != ptr_64bit" identifier != identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = gmon_io_read_64(ifp,&val64);" (assignment_expression "iVar2 = gmon_io_read_64(ifp,&val64)" identifier = (call_expression "gmon_io_read_64(ifp,&val64)" identifier (argument_list "(ifp,&val64)" ( identifier , (pointer_expression "&val64" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      bfd_get_sign_extend_vma(core_bfd);\n      *valp = CONCAT44(val64._4_4_,(uint)val64);\n      return 0;\n    }" { (expression_statement "bfd_get_sign_extend_vma(core_bfd);" (call_expression "bfd_get_sign_extend_vma(core_bfd)" identifier (argument_list "(core_bfd)" ( identifier ))) ;) (expression_statement "*valp = CONCAT44(val64._4_4_,(uint)val64);" (assignment_expression "*valp = CONCAT44(val64._4_4_,(uint)val64)" (pointer_expression "*valp" * identifier) = (call_expression "CONCAT44(val64._4_4_,(uint)val64)" identifier (argument_list "(val64._4_4_,(uint)val64)" ( (field_expression "val64._4_4_" identifier . field_identifier) , (cast_expression "(uint)val64" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) (return_statement "return 0;" return number_literal ;) })) }))) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00109550(undefined8 param_1,ulong *param_2)\n\n{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00109550(undefined8 param_1,ulong *param_2)\n\n{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00109550(undefined8 param_1,ulong *param_2)" identifier (parameter_list "(undefined8 param_1,ulong *param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (expression_statement "iVar1 = FUN_00109420();" (assignment_expression "iVar1 = FUN_00109420()" identifier = (call_expression "FUN_00109420()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = FUN_00109500(param_1,&local_20);" (assignment_expression "iVar1 = FUN_00109500(param_1,&local_20)" identifier = (call_expression "FUN_00109500(param_1,&local_20)" identifier (argument_list "(param_1,&local_20)" ( identifier , (pointer_expression "&local_20" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }" { (expression_statement "iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);" (assignment_expression "iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8)" identifier = (call_expression "bfd_get_sign_extend_vma(DAT_00119ad8)" identifier (argument_list "(DAT_00119ad8)" ( identifier )))) ;) (if_statement "if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }" if (parenthesized_expression "(iVar1 + 1U < 2)" ( (binary_expression "iVar1 + 1U < 2" (binary_expression "iVar1 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        *param_2 = (ulong)local_20;\n        return 0;\n      }" { (expression_statement "*param_2 = (ulong)local_20;" (assignment_expression "*param_2 = (ulong)local_20" (pointer_expression "*param_2" * identifier) = (cast_expression "(ulong)local_20" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (long)(int)local_20;" (assignment_expression "*param_2 = (long)(int)local_20" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)(int)local_20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" else (compound_statement "{\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" { (if_statement "if (iVar1 != 1) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 != 1)" ( (binary_expression "iVar1 != 1" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_001093d0(param_1,&local_20);" (assignment_expression "iVar1 = FUN_001093d0(param_1,&local_20)" identifier = (call_expression "FUN_001093d0(param_1,&local_20)" identifier (argument_list "(param_1,&local_20)" ( identifier , (pointer_expression "&local_20" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }" { (expression_statement "bfd_get_sign_extend_vma(DAT_00119ad8);" (call_expression "bfd_get_sign_extend_vma(DAT_00119ad8)" identifier (argument_list "(DAT_00119ad8)" ( identifier ))) ;) (expression_statement "*param_2 = CONCAT44(uStack_1c,local_20);" (assignment_expression "*param_2 = CONCAT44(uStack_1c,local_20)" (pointer_expression "*param_2" * identifier) = (call_expression "CONCAT44(uStack_1c,local_20)" identifier (argument_list "(uStack_1c,local_20)" ( identifier , identifier )))) ;) (return_statement "return 0;" return number_literal ;) })) }))) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (return_statement return LIT ;) })) }))) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00109550(undefined8 param_1,ulong *param_2)\n\n{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_00109550(undefined8 param_1,ulong *param_2)" (identifier "FUN_00109550") (parameter_list "(undefined8 param_1,ulong *param_2)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint local_20;\n  undefined4 uStack_1c;\n  \n  iVar1 = FUN_00109420();\n  if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint local_20;" (type_identifier "uint") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_1c;" (type_identifier "undefined4") (identifier "uStack_1c") (; ";")) (expression_statement "iVar1 = FUN_00109420();" (assignment_expression "iVar1 = FUN_00109420()" (identifier "iVar1") (= "=") (call_expression "FUN_00109420()" (identifier "FUN_00109420") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }\n  else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = FUN_00109500(param_1,&local_20);\n    if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_00109500(param_1,&local_20);" (assignment_expression "iVar1 = FUN_00109500(param_1,&local_20)" (identifier "iVar1") (= "=") (call_expression "FUN_00109500(param_1,&local_20)" (identifier "FUN_00109500") (argument_list "(param_1,&local_20)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_20" (& "&") (identifier "local_20")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);\n      if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }\n      *param_2 = (long)(int)local_20;\n      return 0;\n    }" ({ "{") (expression_statement "iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);" (assignment_expression "iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8)" (identifier "iVar1") (= "=") (call_expression "bfd_get_sign_extend_vma(DAT_00119ad8)" (identifier "bfd_get_sign_extend_vma") (argument_list "(DAT_00119ad8)" (( "(") (identifier "DAT_00119ad8") () ")")))) (; ";")) (if_statement "if (iVar1 + 1U < 2) {\n        *param_2 = (ulong)local_20;\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar1 + 1U < 2)" (( "(") (binary_expression "iVar1 + 1U < 2" (binary_expression "iVar1 + 1U" (identifier "iVar1") (+ "+") (number_literal "1U")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        *param_2 = (ulong)local_20;\n        return 0;\n      }" ({ "{") (expression_statement "*param_2 = (ulong)local_20;" (assignment_expression "*param_2 = (ulong)local_20" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(ulong)local_20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_20"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*param_2 = (long)(int)local_20;" (assignment_expression "*param_2 = (long)(int)local_20" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)(int)local_20" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" (else "else") (compound_statement "{\n    if (iVar1 != 1) {\n      return 0;\n    }\n    iVar1 = FUN_001093d0(param_1,&local_20);\n    if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (iVar1 != 1) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 != 1)" (( "(") (binary_expression "iVar1 != 1" (identifier "iVar1") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_001093d0(param_1,&local_20);" (assignment_expression "iVar1 = FUN_001093d0(param_1,&local_20)" (identifier "iVar1") (= "=") (call_expression "FUN_001093d0(param_1,&local_20)" (identifier "FUN_001093d0") (argument_list "(param_1,&local_20)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_20" (& "&") (identifier "local_20")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      bfd_get_sign_extend_vma(DAT_00119ad8);\n      *param_2 = CONCAT44(uStack_1c,local_20);\n      return 0;\n    }" ({ "{") (expression_statement "bfd_get_sign_extend_vma(DAT_00119ad8);" (call_expression "bfd_get_sign_extend_vma(DAT_00119ad8)" (identifier "bfd_get_sign_extend_vma") (argument_list "(DAT_00119ad8)" (( "(") (identifier "DAT_00119ad8") () ")"))) (; ";")) (expression_statement "*param_2 = CONCAT44(uStack_1c,local_20);" (assignment_expression "*param_2 = CONCAT44(uStack_1c,local_20)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (call_expression "CONCAT44(uStack_1c,local_20)" (identifier "CONCAT44") (argument_list "(uStack_1c,local_20)" (( "(") (identifier "uStack_1c") (, ",") (identifier "local_20") () ")")))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

int function_1(type_1 *ifp,type_2 *valp)

{
  type_3 var_2;
  int var_5;
  type_4 val64;
  
  var_2 = var_1();
  if (var_2 == var_3) {
    var_5 = var_4(ifp,(type_5 *)&val64);
    if (var_5 == 0) {
      var_5 = var_6(core_bfd);
      if (var_5 + 1U < 2) {
        *valp = (type_4)(type_5)val64;
        return 0;
      }
      *valp = (long)(int)(type_5)val64;
      return 0;
    }
  }
  else {
    if (var_2 != var_7) {
      return 0;
    }
    var_5 = var_8(ifp,&val64);
    if (var_5 == 0) {
      var_6(core_bfd);
      *valp = var_9(val64._4_4_,(type_5)val64);
      return 0;
    }
  }
  return 1;
}


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

undefined4 MASKED(undefined8 param_1,ulong *param_2)

{
  int iVar1;
  uint local_20;
  undefined4 uStack_1c;
  
  iVar1 = FUN_00109420();
  if (iVar1 == 0) {
    iVar1 = FUN_00109500(param_1,&local_20);
    if (iVar1 == 0) {
      iVar1 = bfd_get_sign_extend_vma(DAT_00119ad8);
      if (iVar1 + 1U < 2) {
        *param_2 = (ulong)local_20;
        return 0;
      }
      *param_2 = (long)(int)local_20;
      return 0;
    }
  }
  else {
    if (iVar1 != 1) {
      return 0;
    }
    iVar1 = FUN_001093d0(param_1,&local_20);
    if (iVar1 == 0) {
      bfd_get_sign_extend_vma(DAT_00119ad8);
      *param_2 = CONCAT44(uStack_1c,local_20);
      return 0;
    }
  }
  return 1;
}

